From b705a45c0e5190a1922f4406336d29e1974038f8 Mon Sep 17 00:00:00 2001 From: y0014984 <50139270+y0014984@users.noreply.github.com> Date: Tue, 16 Apr 2024 09:16:58 +0200 Subject: [PATCH] Initial Docs v1.0 (#1) --- .vitepress/config.mts | 216 +++++- .vitepress/theme/index.css | 7 + .vitepress/theme/index.js | 26 + .vscode/settings.json | 68 ++ README.md | 3 + api-examples.md | 49 -- index.md | 25 - markdown-examples.md | 85 --- package-lock.json | 660 ++++++++++-------- package.json | 5 +- src/de/changelog.md | 13 + src/de/communities.md | 120 ++++ src/de/contribution.md | 7 + src/de/events.md | 100 +++ src/de/faq.md | 29 + src/de/feedback.md | 7 + src/de/index.md | 42 ++ src/de/markdown.md | 109 +++ src/de/overview.md | 37 + src/de/roadmap.md | 37 + src/de/slotlist.md | 79 +++ src/de/support.md | 11 + src/de/team.md | 34 + src/de/tech-stack.md | 5 + src/de/users.md | 63 ++ src/de/v1.0.md | 31 + src/en/changelog.md | 13 + src/en/communities.md | 120 ++++ src/en/contribution.md | 7 + src/en/events.md | 100 +++ src/en/faq.md | 29 + src/en/feedback.md | 7 + src/en/index.md | 42 ++ src/en/markdown.md | 109 +++ src/en/overview.md | 37 + src/en/roadmap.md | 37 + src/en/slotlist.md | 77 ++ src/en/support.md | 11 + src/en/team.md | 34 + src/en/tech-stack.md | 5 + src/en/users.md | 63 ++ src/en/v1.0.md | 32 + src/images/communities/access-communities.svg | 65 ++ .../communities/access-communities.webp | Bin 0 -> 52102 bytes src/images/communities/communities-list.svg | 50 ++ src/images/communities/communities-list.webp | Bin 0 -> 67316 bytes src/images/communities/community-colors.svg | 61 ++ src/images/communities/community-colors.webp | Bin 0 -> 124634 bytes src/images/communities/community-events.svg | 29 + src/images/communities/community-events.webp | Bin 0 -> 98456 bytes src/images/communities/community-logo.svg | 93 +++ src/images/communities/community-logo.webp | Bin 0 -> 363906 bytes src/images/communities/community-naming.svg | 61 ++ src/images/communities/community-naming.webp | Bin 0 -> 124754 bytes src/images/communities/community-settings.svg | 13 + .../communities/community-settings.webp | Bin 0 -> 118888 bytes .../communities/create-community-workflow.svg | 116 +++ .../create-community-workflow.webp | Bin 0 -> 138506 bytes src/images/communities/create-community.svg | 61 ++ src/images/communities/create-community.webp | Bin 0 -> 48430 bytes src/images/communities/delete-community.svg | 29 + src/images/communities/delete-community.webp | Bin 0 -> 121822 bytes src/images/communities/edit-invite-links.svg | 61 ++ src/images/communities/edit-invite-links.webp | Bin 0 -> 66328 bytes src/images/communities/fresh-community.svg | 13 + src/images/communities/fresh-community.webp | Bin 0 -> 76478 bytes src/images/communities/invites-overview.svg | 63 ++ src/images/communities/invites-overview.webp | Bin 0 -> 88528 bytes src/images/communities/manage-community.svg | 117 ++++ src/images/communities/manage-community.webp | Bin 0 -> 128534 bytes src/images/communities/use-invite.svg | 125 ++++ src/images/communities/use-invite.webp | Bin 0 -> 216570 bytes src/images/events/create-event-workflow.svg | 179 +++++ src/images/events/create-event-workflow.webp | Bin 0 -> 83480 bytes src/images/events/create-event.svg | 63 ++ src/images/events/create-event.webp | Bin 0 -> 48160 bytes src/images/events/delete-event.svg | 29 + src/images/events/delete-event.webp | Bin 0 -> 98120 bytes src/images/events/event-details.svg | 183 +++++ src/images/events/event-details.webp | Bin 0 -> 114776 bytes src/images/events/image-block.svg | 153 ++++ src/images/events/image-block.webp | Bin 0 -> 45872 bytes src/images/events/preview-toggle.svg | 84 +++ src/images/events/preview-toggle.webp | Bin 0 -> 174562 bytes src/images/events/text-block.svg | 109 +++ src/images/events/text-block.webp | Bin 0 -> 62532 bytes src/images/general/Image-Placeholder-1.png | Bin 0 -> 8291 bytes src/images/general/Image-Placeholder-1.webp | Bin 0 -> 3276 bytes src/images/general/Image-Placeholder-2.png | Bin 0 -> 9307 bytes src/images/general/Image-Placeholder-2.webp | Bin 0 -> 3570 bytes src/images/general/Image-Placeholder-3.png | Bin 0 -> 9668 bytes src/images/general/Image-Placeholder-3.webp | Bin 0 -> 3660 bytes src/images/general/crown-text-color-2.svg | 5 + src/images/general/crown-text-color.svg | 5 + src/images/general/crown.svg | 3 + src/images/markdown/alerts-1.svg | 17 + src/images/markdown/alerts-1.webp | Bin 0 -> 60358 bytes src/images/markdown/alerts-2.svg | 17 + src/images/markdown/alerts-2.webp | Bin 0 -> 61900 bytes src/images/markdown/alerts-3.svg | 17 + src/images/markdown/alerts-3.webp | Bin 0 -> 35292 bytes src/images/markdown/alt-code-block.svg | 17 + src/images/markdown/alt-code-block.webp | Bin 0 -> 45928 bytes src/images/markdown/alt-headlines.svg | 17 + src/images/markdown/alt-headlines.webp | Bin 0 -> 24678 bytes src/images/markdown/alt-text-attributes.svg | 17 + src/images/markdown/alt-text-attributes.webp | Bin 0 -> 133000 bytes src/images/markdown/alt-unsorted-lists.svg | 17 + src/images/markdown/alt-unsorted-lists.webp | Bin 0 -> 26024 bytes src/images/markdown/alt2-unsorted-lists.svg | 17 + src/images/markdown/alt2-unsorted-lists.webp | Bin 0 -> 26538 bytes src/images/markdown/autolinks.svg | 17 + src/images/markdown/autolinks.webp | Bin 0 -> 31688 bytes src/images/markdown/blockquote.svg | 17 + src/images/markdown/blockquote.webp | Bin 0 -> 198238 bytes src/images/markdown/code-block.svg | 17 + src/images/markdown/code-block.webp | Bin 0 -> 46558 bytes src/images/markdown/escaping.svg | 17 + src/images/markdown/escaping.webp | Bin 0 -> 39368 bytes src/images/markdown/headlines.svg | 17 + src/images/markdown/headlines.webp | Bin 0 -> 31144 bytes src/images/markdown/horizontal-rule.svg | 17 + src/images/markdown/horizontal-rule.webp | Bin 0 -> 97512 bytes src/images/markdown/images.svg | 17 + src/images/markdown/images.webp | Bin 0 -> 29114 bytes src/images/markdown/links.svg | 17 + src/images/markdown/links.webp | Bin 0 -> 44456 bytes .../markdown/markdown-vs-no-markdown.svg | 40 ++ .../markdown/markdown-vs-no-markdown.webp | Bin 0 -> 309334 bytes .../markdown/paragraphs-and-line-breaks.svg | 17 + .../markdown/paragraphs-and-line-breaks.webp | Bin 0 -> 112726 bytes src/images/markdown/sorted-lists.svg | 17 + src/images/markdown/sorted-lists.webp | Bin 0 -> 28542 bytes src/images/markdown/text-attributes.svg | 17 + src/images/markdown/text-attributes.webp | Bin 0 -> 134182 bytes src/images/markdown/unsorted-lists.svg | 17 + src/images/markdown/unsorted-lists.webp | Bin 0 -> 25126 bytes .../overview/community-profile-page.svg | 11 + .../overview/community-profile-page.webp | Bin 0 -> 154902 bytes src/images/overview/event-profile-page.svg | 11 + src/images/overview/event-profile-page.webp | Bin 0 -> 550572 bytes src/images/overview/full-search-results.svg | 77 ++ src/images/overview/full-search-results.webp | Bin 0 -> 214118 bytes src/images/overview/global-search-bar.svg | 27 + src/images/overview/global-search-bar.webp | Bin 0 -> 20678 bytes src/images/overview/quick-search-results.svg | 178 +++++ src/images/overview/quick-search-results.webp | Bin 0 -> 79372 bytes src/images/overview/user-profile-page.svg | 11 + src/images/overview/user-profile-page.webp | Bin 0 -> 118298 bytes src/images/slotlist/slotlist-overview.svg | 207 ++++++ src/images/slotlist/slotlist-overview.webp | Bin 0 -> 52572 bytes src/images/users/avatar.svg | 93 +++ src/images/users/avatar.webp | Bin 0 -> 308146 bytes src/images/users/create-account.svg | 90 +++ src/images/users/create-account.webp | Bin 0 -> 151050 bytes src/images/users/games-and-dlcs.svg | 11 + src/images/users/games-and-dlcs.webp | Bin 0 -> 90138 bytes src/images/users/naming.svg | 61 ++ src/images/users/naming.webp | Bin 0 -> 109128 bytes src/images/users/sessions.svg | 27 + src/images/users/sessions.webp | Bin 0 -> 105614 bytes .../user-profile-communities-overview.svg | 11 + .../user-profile-communities-overview.webp | Bin 0 -> 59040 bytes src/images/users/user-profile.svg | 13 + src/images/users/user-profile.webp | Bin 0 -> 103250 bytes src/public/ae-logo.svg | 4 + src/public/favicon.ico | Bin 0 -> 15086 bytes src/public/landing-page-image.afdesign | Bin 0 -> 1806935 bytes src/public/landing-page-image.png | Bin 0 -> 54085 bytes src/public/landing-page-image.svg | 25 + src/public/landing-page-image.webp | Bin 0 -> 30590 bytes src/public/robots.txt | 2 + src/videos/events/block-editor-order.webm | Bin 0 -> 174936 bytes src/videos/events/image-block-order.webm | Bin 0 -> 65339 bytes .../create-factions-companies-groups.webm | Bin 0 -> 196089 bytes src/videos/slotlist/create-fireteams.webm | Bin 0 -> 153992 bytes src/videos/slotlist/create-slots.webm | Bin 0 -> 110934 bytes .../delete-factions-companies-groups.webm | Bin 0 -> 281453 bytes .../move-factions-companies-groups.webm | Bin 0 -> 308655 bytes src/videos/slotlist/move-slots.webm | Bin 0 -> 286618 bytes 180 files changed, 5119 insertions(+), 481 deletions(-) create mode 100644 .vitepress/theme/index.css create mode 100644 .vitepress/theme/index.js create mode 100644 .vscode/settings.json create mode 100644 README.md delete mode 100644 api-examples.md delete mode 100644 index.md delete mode 100644 markdown-examples.md create mode 100644 src/de/changelog.md create mode 100644 src/de/communities.md create mode 100644 src/de/contribution.md create mode 100644 src/de/events.md create mode 100644 src/de/faq.md create mode 100644 src/de/feedback.md create mode 100644 src/de/index.md create mode 100644 src/de/markdown.md create mode 100644 src/de/overview.md create mode 100644 src/de/roadmap.md create mode 100644 src/de/slotlist.md create mode 100644 src/de/support.md create mode 100644 src/de/team.md create mode 100644 src/de/tech-stack.md create mode 100644 src/de/users.md create mode 100644 src/de/v1.0.md create mode 100644 src/en/changelog.md create mode 100644 src/en/communities.md create mode 100644 src/en/contribution.md create mode 100644 src/en/events.md create mode 100644 src/en/faq.md create mode 100644 src/en/feedback.md create mode 100644 src/en/index.md create mode 100644 src/en/markdown.md create mode 100644 src/en/overview.md create mode 100644 src/en/roadmap.md create mode 100644 src/en/slotlist.md create mode 100644 src/en/support.md create mode 100644 src/en/team.md create mode 100644 src/en/tech-stack.md create mode 100644 src/en/users.md create mode 100644 src/en/v1.0.md create mode 100644 src/images/communities/access-communities.svg create mode 100644 src/images/communities/access-communities.webp create mode 100644 src/images/communities/communities-list.svg create mode 100644 src/images/communities/communities-list.webp create mode 100644 src/images/communities/community-colors.svg create mode 100644 src/images/communities/community-colors.webp create mode 100644 src/images/communities/community-events.svg create mode 100644 src/images/communities/community-events.webp create mode 100644 src/images/communities/community-logo.svg create mode 100644 src/images/communities/community-logo.webp create mode 100644 src/images/communities/community-naming.svg create mode 100644 src/images/communities/community-naming.webp create mode 100644 src/images/communities/community-settings.svg create mode 100644 src/images/communities/community-settings.webp create mode 100644 src/images/communities/create-community-workflow.svg create mode 100644 src/images/communities/create-community-workflow.webp create mode 100644 src/images/communities/create-community.svg create mode 100644 src/images/communities/create-community.webp create mode 100644 src/images/communities/delete-community.svg create mode 100644 src/images/communities/delete-community.webp create mode 100644 src/images/communities/edit-invite-links.svg create mode 100644 src/images/communities/edit-invite-links.webp create mode 100644 src/images/communities/fresh-community.svg create mode 100644 src/images/communities/fresh-community.webp create mode 100644 src/images/communities/invites-overview.svg create mode 100644 src/images/communities/invites-overview.webp create mode 100644 src/images/communities/manage-community.svg create mode 100644 src/images/communities/manage-community.webp create mode 100644 src/images/communities/use-invite.svg create mode 100644 src/images/communities/use-invite.webp create mode 100644 src/images/events/create-event-workflow.svg create mode 100644 src/images/events/create-event-workflow.webp create mode 100644 src/images/events/create-event.svg create mode 100644 src/images/events/create-event.webp create mode 100644 src/images/events/delete-event.svg create mode 100644 src/images/events/delete-event.webp create mode 100644 src/images/events/event-details.svg create mode 100644 src/images/events/event-details.webp create mode 100644 src/images/events/image-block.svg create mode 100644 src/images/events/image-block.webp create mode 100644 src/images/events/preview-toggle.svg create mode 100644 src/images/events/preview-toggle.webp create mode 100644 src/images/events/text-block.svg create mode 100644 src/images/events/text-block.webp create mode 100644 src/images/general/Image-Placeholder-1.png create mode 100644 src/images/general/Image-Placeholder-1.webp create mode 100644 src/images/general/Image-Placeholder-2.png create mode 100644 src/images/general/Image-Placeholder-2.webp create mode 100644 src/images/general/Image-Placeholder-3.png create mode 100644 src/images/general/Image-Placeholder-3.webp create mode 100644 src/images/general/crown-text-color-2.svg create mode 100644 src/images/general/crown-text-color.svg create mode 100644 src/images/general/crown.svg create mode 100644 src/images/markdown/alerts-1.svg create mode 100644 src/images/markdown/alerts-1.webp create mode 100644 src/images/markdown/alerts-2.svg create mode 100644 src/images/markdown/alerts-2.webp create mode 100644 src/images/markdown/alerts-3.svg create mode 100644 src/images/markdown/alerts-3.webp create mode 100644 src/images/markdown/alt-code-block.svg create mode 100644 src/images/markdown/alt-code-block.webp create mode 100644 src/images/markdown/alt-headlines.svg create mode 100644 src/images/markdown/alt-headlines.webp create mode 100644 src/images/markdown/alt-text-attributes.svg create mode 100644 src/images/markdown/alt-text-attributes.webp create mode 100644 src/images/markdown/alt-unsorted-lists.svg create mode 100644 src/images/markdown/alt-unsorted-lists.webp create mode 100644 src/images/markdown/alt2-unsorted-lists.svg create mode 100644 src/images/markdown/alt2-unsorted-lists.webp create mode 100644 src/images/markdown/autolinks.svg create mode 100644 src/images/markdown/autolinks.webp create mode 100644 src/images/markdown/blockquote.svg create mode 100644 src/images/markdown/blockquote.webp create mode 100644 src/images/markdown/code-block.svg create mode 100644 src/images/markdown/code-block.webp create mode 100644 src/images/markdown/escaping.svg create mode 100644 src/images/markdown/escaping.webp create mode 100644 src/images/markdown/headlines.svg create mode 100644 src/images/markdown/headlines.webp create mode 100644 src/images/markdown/horizontal-rule.svg create mode 100644 src/images/markdown/horizontal-rule.webp create mode 100644 src/images/markdown/images.svg create mode 100644 src/images/markdown/images.webp create mode 100644 src/images/markdown/links.svg create mode 100644 src/images/markdown/links.webp create mode 100644 src/images/markdown/markdown-vs-no-markdown.svg create mode 100644 src/images/markdown/markdown-vs-no-markdown.webp create mode 100644 src/images/markdown/paragraphs-and-line-breaks.svg create mode 100644 src/images/markdown/paragraphs-and-line-breaks.webp create mode 100644 src/images/markdown/sorted-lists.svg create mode 100644 src/images/markdown/sorted-lists.webp create mode 100644 src/images/markdown/text-attributes.svg create mode 100644 src/images/markdown/text-attributes.webp create mode 100644 src/images/markdown/unsorted-lists.svg create mode 100644 src/images/markdown/unsorted-lists.webp create mode 100644 src/images/overview/community-profile-page.svg create mode 100644 src/images/overview/community-profile-page.webp create mode 100644 src/images/overview/event-profile-page.svg create mode 100644 src/images/overview/event-profile-page.webp create mode 100644 src/images/overview/full-search-results.svg create mode 100644 src/images/overview/full-search-results.webp create mode 100644 src/images/overview/global-search-bar.svg create mode 100644 src/images/overview/global-search-bar.webp create mode 100644 src/images/overview/quick-search-results.svg create mode 100644 src/images/overview/quick-search-results.webp create mode 100644 src/images/overview/user-profile-page.svg create mode 100644 src/images/overview/user-profile-page.webp create mode 100644 src/images/slotlist/slotlist-overview.svg create mode 100644 src/images/slotlist/slotlist-overview.webp create mode 100644 src/images/users/avatar.svg create mode 100644 src/images/users/avatar.webp create mode 100644 src/images/users/create-account.svg create mode 100644 src/images/users/create-account.webp create mode 100644 src/images/users/games-and-dlcs.svg create mode 100644 src/images/users/games-and-dlcs.webp create mode 100644 src/images/users/naming.svg create mode 100644 src/images/users/naming.webp create mode 100644 src/images/users/sessions.svg create mode 100644 src/images/users/sessions.webp create mode 100644 src/images/users/user-profile-communities-overview.svg create mode 100644 src/images/users/user-profile-communities-overview.webp create mode 100644 src/images/users/user-profile.svg create mode 100644 src/images/users/user-profile.webp create mode 100644 src/public/ae-logo.svg create mode 100644 src/public/favicon.ico create mode 100644 src/public/landing-page-image.afdesign create mode 100644 src/public/landing-page-image.png create mode 100644 src/public/landing-page-image.svg create mode 100644 src/public/landing-page-image.webp create mode 100644 src/public/robots.txt create mode 100644 src/videos/events/block-editor-order.webm create mode 100644 src/videos/events/image-block-order.webm create mode 100644 src/videos/slotlist/create-factions-companies-groups.webm create mode 100644 src/videos/slotlist/create-fireteams.webm create mode 100644 src/videos/slotlist/create-slots.webm create mode 100644 src/videos/slotlist/delete-factions-companies-groups.webm create mode 100644 src/videos/slotlist/move-factions-companies-groups.webm create mode 100644 src/videos/slotlist/move-slots.webm diff --git a/.vitepress/config.mts b/.vitepress/config.mts index 8a1afda..fea7280 100644 --- a/.vitepress/config.mts +++ b/.vitepress/config.mts @@ -1,28 +1,206 @@ +// cSpell: disable + import { defineConfig } from 'vitepress' // https://vitepress.dev/reference/site-config export default defineConfig({ - title: "Arma Events Documentation", - description: "Arma Events Documentation", + title: "docs.arma.events", + description: "arma.events Documentation", + srcDir: './src', // all *.md files in a subfolder called 'src' + cleanUrls: true, // without extension like .html + lastUpdated: true, + head: [['link', { rel: 'icon', href: '/favicon.ico' }]], + markdown: { + image: { + lazyLoading: true + } + }, themeConfig: { - // https://vitepress.dev/reference/default-theme-config - nav: [ - { text: 'Home', link: '/' }, - { text: 'Examples', link: '/markdown-examples' } - ], - - sidebar: [ - { - text: 'Examples', - items: [ - { text: 'Markdown Examples', link: '/markdown-examples' }, - { text: 'Runtime API Examples', link: '/api-examples' } - ] - } - ], - + search: { + provider: 'local' + }, + externalLinkIcon: true, + logo: "/ae-logo.svg", + footer: { + message: "This website is not affiliated or authorized by Bohemia Interactive a.s. Bohemia Interactive, ARMA, DAYZ and all associated logos and designs are trademarks or registered trademarks of Bohemia Interactive a.s.", + copyright: "Copyright © 2024-present arma.events", + }, socialLinks: [ - { icon: 'github', link: 'https://github.com/vuejs/vitepress' } + { icon: 'youtube', link: 'https://www.youtube.com/@arma.events' }, + { icon: 'discord', link: 'https://discord.gg/b2aABzh8xJ' }, + { icon: 'x', link: 'https://x.com/arma_events' } ] + }, + locales: { + en: { + label: 'English', + lang: 'en', // optional, will be added as `lang` attribute on `html` tag + link: '/en/', // default /en/ -- shows on navbar translations menu, can be external + themeConfig: { + search: { + provider: 'local', + options: { + locales: { + de: { + translations: { + button: { + buttonText: 'Search' + }, + modal: { + noResultsText: 'No results for', + resetButtonTitle: 'Reset search', + displayDetails: 'Display detailed list', + footer: { + selectText: 'to select', + navigateText: 'to navigate', + closeText: 'to close' + } + } + } + } + } + } + }, + darkModeSwitchTitle: 'Switch to dark theme', + lightModeSwitchTitle: 'Switch to light theme', + lastUpdated: { + text: 'Updated at', + formatOptions: { + dateStyle: 'full', + timeStyle: 'medium' + } + }, + editLink: { + pattern: 'https://github.com/arma-events/docs/edit/main/src/:path', + text: 'Edit this page on GitHub' + }, + docFooter: { + prev: 'Previous page', + next: 'Next page' + }, + nav: [ + { text: 'FAQ', link: '/en/faq' }, + { text: 'Support', link: '/en/support' }, + { text: 'Feedback', link: '/en/feedback' }, + { text: 'Contribution', link: '/en/contribution' } + ], + sidebar: [ + { + text: 'Articles', + items: [ + { text: 'Overview', link: '/en/overview' }, + { text: 'Users', link: '/en/users' }, + { text: 'Communities', link: '/en/communities' }, + { + text: 'Events', + link: '/en/events', + items: [ + { text: 'Markdown', link: '/en/markdown' }, + { text: 'Slotslist', link: '/en/slotlist' } + ] + } + ] + }, + { + text: 'Other Stuff', + items: [ + { text: 'Team', link: '/en/team' }, + { text: 'FAQ', link: '/en/faq' }, + { text: 'Support', link: '/en/support' }, + { text: 'Feedback', link: '/en/feedback' }, + { text: 'Contribution', link: '/en/contribution' }, + { text: 'Roadmap', link: '/en/roadmap' }, + { text: 'Changelog', link: '/en/changelog' }, + { text: 'Tech Stack', link: '/en/tech-stack' } + ] + } + ] + } + }, + de: { + label: 'Deutsch', + lang: 'de', // optional, will be added as `lang` attribute on `html` tag + link: '/de/', // default /de/ -- shows on navbar translations menu, can be external + themeConfig: { + search: { + provider: 'local', + options: { + locales: { + de: { + translations: { + button: { + buttonText: 'Suchen' + }, + modal: { + noResultsText: 'Keine Ergebnisse für', + resetButtonTitle: 'Suche zurücksetzen', + displayDetails: 'Detaillierte Liste anzeigen', + footer: { + selectText: 'um auszuwählen', + navigateText: 'um zu navigieren', + closeText: 'zum schließen' + } + } + } + } + } + } + }, + darkModeSwitchTitle: 'Wechsle zum Dark Theme', + lightModeSwitchTitle: 'Wechsle zum Light Theme', + lastUpdated: { + text: 'Aktualisiert am', + formatOptions: { + dateStyle: 'full', + timeStyle: 'medium' + } + }, + editLink: { + pattern: 'https://github.com/arma-events/docs/edit/main/src/:path', + text: 'Bearbeite diese Seite auf GitHub' + }, + docFooter: { + prev: 'vorherige Seite', + next: 'nächste Seite' + }, + nav: [ + { text: 'FAQ', link: '/de/faq' }, + { text: 'Support', link: '/de/support' }, + { text: 'Feedback', link: '/de/feedback' }, + { text: 'Mitwirkung', link: '/de/contribution' } + ], + sidebar: [ + { + text: 'Artikel', + items: [ + { text: 'Überblick', link: '/de/overview' }, + { text: 'Benutzer', link: '/de/users' }, + { text: 'Communities', link: '/de/communities' }, + { + text: 'Events', + link: '/de/events', + items: [ + { text: 'Markdown', link: '/de/markdown' }, + { text: 'Slotliste', link: '/de/slotlist' } + ] + } + ] + }, + { + text: 'Anderes Zeug', + items: [ + { text: 'Team', link: '/de/team' }, + { text: 'FAQ', link: '/de/faq' }, + { text: 'Support', link: '/de/support' }, + { text: 'Feedback', link: '/de/feedback' }, + { text: 'Mitmachen', link: '/de/contribution' }, + { text: 'Roadmap', link: '/de/roadmap' }, + { text: 'Changelog', link: '/de/changelog' }, + { text: 'Tech Stack', link: '/de/tech-stack' } + ] + } + ] + } + } } }) diff --git a/.vitepress/theme/index.css b/.vitepress/theme/index.css new file mode 100644 index 0000000..702619d --- /dev/null +++ b/.vitepress/theme/index.css @@ -0,0 +1,7 @@ +.medium-zoom-overlay { + z-index: 30; + } + + .medium-zoom-image { + z-index: 31; + } \ No newline at end of file diff --git a/.vitepress/theme/index.js b/.vitepress/theme/index.js new file mode 100644 index 0000000..7e7828d --- /dev/null +++ b/.vitepress/theme/index.js @@ -0,0 +1,26 @@ +// .vitepress/theme/index.js +import DefaultTheme from 'vitepress/theme'; +import { onMounted, watch, nextTick } from 'vue'; +import { useRoute } from 'vitepress'; +import mediumZoom from 'medium-zoom'; + +import './index.css'; + +export default { + ...DefaultTheme, + + setup() { + const route = useRoute(); + const initZoom = () => { + //mediumZoom('[data-zoomable]', { background: 'var(--vp-c-bg)' }); // enable for images with tag ![](path/to/file.jpg){data-zoomable} + mediumZoom('.main img', { background: 'var(--vp-c-bg)' }); // enable for all images + }; + onMounted(() => { + initZoom(); + }); + watch( + () => route.path, + () => nextTick(() => initZoom()) + ); + }, +}; \ No newline at end of file diff --git a/.vscode/settings.json b/.vscode/settings.json new file mode 100644 index 0000000..92af73b --- /dev/null +++ b/.vscode/settings.json @@ -0,0 +1,68 @@ +{ + "cSpell.overrides": [ + { + "filename": "**/de/**", + "language": "de" + } + ], + "cSpell.language": "en", + "cSpell.words": [ + "Admins", + "arma", + "Ausklappmenü", + "Autolinks", + "blockquotes", + "BLUFOR", + "Briefing", + "Briefings", + "CAUTION", + "Decurion", + "deep", + "Drag-And-Drop", + "Entwurfsstatus", + "Fireteam", + "Fireteams", + "freemium", + "Gameserver", + "Gelir", + "Handles", + "IMPORTANT", + "Independant", + "intendation", + "irgendwelches", + "Kindelemente", + "Kronensymbol", + "Lead", + "Missionsattribute", + "Missionsauswertung", + "Missionsdatum", + "Missionsersteller", + "Missionsrückmeldungen", + "Mods", + "Nice-To-Have", + "nomisum", + "Objectives", + "OPFOR", + "ORBAT", + "outline", + "Posts", + "Quality-Of-Life", + "Reforger", + "Scrollrad", + "Scrollrades", + "slotlist", + "Slotliste", + "Slotlisten", + "slotlists", + "Slotting", + "Squad", + "Steam", + "strikethrough", + "Syntax-Highlighting", + "Teaser", + "Themes", + "Überschrifts", + "Viable", + "Zade" + ] +} \ No newline at end of file diff --git a/README.md b/README.md new file mode 100644 index 0000000..655e839 --- /dev/null +++ b/README.md @@ -0,0 +1,3 @@ +All Affinity Designer files, raw screenshots and raw video captures as well as ai generated stuff is archived in a shared Google Drive. Request access if necessary. + +[https://drive.google.com/drive/folders/1_Bs-sDADpvT5sxmiwAwzgul-GPsujakS?usp=drive_link](https://drive.google.com/drive/folders/1_Bs-sDADpvT5sxmiwAwzgul-GPsujakS) diff --git a/api-examples.md b/api-examples.md deleted file mode 100644 index 6bd8bb5..0000000 --- a/api-examples.md +++ /dev/null @@ -1,49 +0,0 @@ ---- -outline: deep ---- - -# Runtime API Examples - -This page demonstrates usage of some of the runtime APIs provided by VitePress. - -The main `useData()` API can be used to access site, theme, and page data for the current page. It works in both `.md` and `.vue` files: - -```md - - -## Results - -### Theme Data -
{{ theme }}- -### Page Data -
{{ page }}- -### Page Frontmatter -
{{ frontmatter }}-``` - - - -## Results - -### Theme Data -
{{ theme }}- -### Page Data -
{{ page }}- -### Page Frontmatter -
{{ frontmatter }}- -## More - -Check out the documentation for the [full list of runtime APIs](https://vitepress.dev/reference/runtime-api#usedata). diff --git a/index.md b/index.md deleted file mode 100644 index 6eb347c..0000000 --- a/index.md +++ /dev/null @@ -1,25 +0,0 @@ ---- -# https://vitepress.dev/reference/default-theme-home-page -layout: home - -hero: - name: "Arma Events Documentation" - text: "Arma Events Documentation" - tagline: My great project tagline - actions: - - theme: brand - text: Markdown Examples - link: /markdown-examples - - theme: alt - text: API Examples - link: /api-examples - -features: - - title: Feature A - details: Lorem ipsum dolor sit amet, consectetur adipiscing elit - - title: Feature B - details: Lorem ipsum dolor sit amet, consectetur adipiscing elit - - title: Feature C - details: Lorem ipsum dolor sit amet, consectetur adipiscing elit ---- - diff --git a/markdown-examples.md b/markdown-examples.md deleted file mode 100644 index f9258a5..0000000 --- a/markdown-examples.md +++ /dev/null @@ -1,85 +0,0 @@ -# Markdown Extension Examples - -This page demonstrates some of the built-in markdown extensions provided by VitePress. - -## Syntax Highlighting - -VitePress provides Syntax Highlighting powered by [Shiki](https://github.com/shikijs/shiki), with additional features like line-highlighting: - -**Input** - -````md -```js{4} -export default { - data () { - return { - msg: 'Highlighted!' - } - } -} -``` -```` - -**Output** - -```js{4} -export default { - data () { - return { - msg: 'Highlighted!' - } - } -} -``` - -## Custom Containers - -**Input** - -```md -::: info -This is an info box. -::: - -::: tip -This is a tip. -::: - -::: warning -This is a warning. -::: - -::: danger -This is a dangerous warning. -::: - -::: details -This is a details block. -::: -``` - -**Output** - -::: info -This is an info box. -::: - -::: tip -This is a tip. -::: - -::: warning -This is a warning. -::: - -::: danger -This is a dangerous warning. -::: - -::: details -This is a details block. -::: - -## More - -Check out the documentation for the [full list of markdown extensions](https://vitepress.dev/guide/markdown). diff --git a/package-lock.json b/package-lock.json index 3e47a7a..9b11bfe 100644 --- a/package-lock.json +++ b/package-lock.json @@ -8,6 +8,9 @@ "name": "docs", "version": "1.0.0", "license": "UNLICENSED", + "dependencies": { + "medium-zoom": "^1.1.0" + }, "devDependencies": { "vitepress": "^1.0.0-rc.44" } @@ -58,138 +61,157 @@ } }, "node_modules/@algolia/cache-browser-local-storage": { - "version": "4.22.1", - "resolved": "https://registry.npmjs.org/@algolia/cache-browser-local-storage/-/cache-browser-local-storage-4.22.1.tgz", - "integrity": "sha512-Sw6IAmOCvvP6QNgY9j+Hv09mvkvEIDKjYW8ow0UDDAxSXy664RBNQk3i/0nt7gvceOJ6jGmOTimaZoY1THmU7g==", + "version": "4.23.2", + "resolved": "https://registry.npmjs.org/@algolia/cache-browser-local-storage/-/cache-browser-local-storage-4.23.2.tgz", + "integrity": "sha512-PvRQdCmtiU22dw9ZcTJkrVKgNBVAxKgD0/cfiqyxhA5+PHzA2WDt6jOmZ9QASkeM2BpyzClJb/Wr1yt2/t78Kw==", "dev": true, "dependencies": { - "@algolia/cache-common": "4.22.1" + "@algolia/cache-common": "4.23.2" } }, "node_modules/@algolia/cache-common": { - "version": "4.22.1", - "resolved": "https://registry.npmjs.org/@algolia/cache-common/-/cache-common-4.22.1.tgz", - "integrity": "sha512-TJMBKqZNKYB9TptRRjSUtevJeQVXRmg6rk9qgFKWvOy8jhCPdyNZV1nB3SKGufzvTVbomAukFR8guu/8NRKBTA==", + "version": "4.23.2", + "resolved": "https://registry.npmjs.org/@algolia/cache-common/-/cache-common-4.23.2.tgz", + "integrity": "sha512-OUK/6mqr6CQWxzl/QY0/mwhlGvS6fMtvEPyn/7AHUx96NjqDA4X4+Ju7aXFQKh+m3jW9VPB0B9xvEQgyAnRPNw==", "dev": true }, "node_modules/@algolia/cache-in-memory": { - "version": "4.22.1", - "resolved": "https://registry.npmjs.org/@algolia/cache-in-memory/-/cache-in-memory-4.22.1.tgz", - "integrity": "sha512-ve+6Ac2LhwpufuWavM/aHjLoNz/Z/sYSgNIXsinGofWOysPilQZPUetqLj8vbvi+DHZZaYSEP9H5SRVXnpsNNw==", + "version": "4.23.2", + "resolved": "https://registry.npmjs.org/@algolia/cache-in-memory/-/cache-in-memory-4.23.2.tgz", + "integrity": "sha512-rfbi/SnhEa3MmlqQvgYz/9NNJ156NkU6xFxjbxBtLWnHbpj+qnlMoKd+amoiacHRITpajg6zYbLM9dnaD3Bczw==", "dev": true, "dependencies": { - "@algolia/cache-common": "4.22.1" + "@algolia/cache-common": "4.23.2" } }, "node_modules/@algolia/client-account": { - "version": "4.22.1", - "resolved": "https://registry.npmjs.org/@algolia/client-account/-/client-account-4.22.1.tgz", - "integrity": "sha512-k8m+oegM2zlns/TwZyi4YgCtyToackkOpE+xCaKCYfBfDtdGOaVZCM5YvGPtK+HGaJMIN/DoTL8asbM3NzHonw==", + "version": "4.23.2", + "resolved": "https://registry.npmjs.org/@algolia/client-account/-/client-account-4.23.2.tgz", + "integrity": "sha512-VbrOCLIN/5I7iIdskSoSw3uOUPF516k4SjDD4Qz3BFwa3of7D9A0lzBMAvQEJJEPHWdVraBJlGgdJq/ttmquJQ==", "dev": true, "dependencies": { - "@algolia/client-common": "4.22.1", - "@algolia/client-search": "4.22.1", - "@algolia/transporter": "4.22.1" + "@algolia/client-common": "4.23.2", + "@algolia/client-search": "4.23.2", + "@algolia/transporter": "4.23.2" } }, "node_modules/@algolia/client-analytics": { - "version": "4.22.1", - "resolved": "https://registry.npmjs.org/@algolia/client-analytics/-/client-analytics-4.22.1.tgz", - "integrity": "sha512-1ssi9pyxyQNN4a7Ji9R50nSdISIumMFDwKNuwZipB6TkauJ8J7ha/uO60sPJFqQyqvvI+px7RSNRQT3Zrvzieg==", + "version": "4.23.2", + "resolved": "https://registry.npmjs.org/@algolia/client-analytics/-/client-analytics-4.23.2.tgz", + "integrity": "sha512-lLj7irsAztGhMoEx/SwKd1cwLY6Daf1Q5f2AOsZacpppSvuFvuBrmkzT7pap1OD/OePjLKxicJS8wNA0+zKtuw==", "dev": true, "dependencies": { - "@algolia/client-common": "4.22.1", - "@algolia/client-search": "4.22.1", - "@algolia/requester-common": "4.22.1", - "@algolia/transporter": "4.22.1" + "@algolia/client-common": "4.23.2", + "@algolia/client-search": "4.23.2", + "@algolia/requester-common": "4.23.2", + "@algolia/transporter": "4.23.2" } }, "node_modules/@algolia/client-common": { - "version": "4.22.1", - "resolved": "https://registry.npmjs.org/@algolia/client-common/-/client-common-4.22.1.tgz", - "integrity": "sha512-IvaL5v9mZtm4k4QHbBGDmU3wa/mKokmqNBqPj0K7lcR8ZDKzUorhcGp/u8PkPC/e0zoHSTvRh7TRkGX3Lm7iOQ==", + "version": "4.23.2", + "resolved": "https://registry.npmjs.org/@algolia/client-common/-/client-common-4.23.2.tgz", + "integrity": "sha512-Q2K1FRJBern8kIfZ0EqPvUr3V29ICxCm/q42zInV+VJRjldAD9oTsMGwqUQ26GFMdFYmqkEfCbY4VGAiQhh22g==", "dev": true, "dependencies": { - "@algolia/requester-common": "4.22.1", - "@algolia/transporter": "4.22.1" + "@algolia/requester-common": "4.23.2", + "@algolia/transporter": "4.23.2" } }, "node_modules/@algolia/client-personalization": { - "version": "4.22.1", - "resolved": "https://registry.npmjs.org/@algolia/client-personalization/-/client-personalization-4.22.1.tgz", - "integrity": "sha512-sl+/klQJ93+4yaqZ7ezOttMQ/nczly/3GmgZXJ1xmoewP5jmdP/X/nV5U7EHHH3hCUEHeN7X1nsIhGPVt9E1cQ==", + "version": "4.23.2", + "resolved": "https://registry.npmjs.org/@algolia/client-personalization/-/client-personalization-4.23.2.tgz", + "integrity": "sha512-vwPsgnCGhUcHhhQG5IM27z8q7dWrN9itjdvgA6uKf2e9r7vB+WXt4OocK0CeoYQt3OGEAExryzsB8DWqdMK5wg==", "dev": true, "dependencies": { - "@algolia/client-common": "4.22.1", - "@algolia/requester-common": "4.22.1", - "@algolia/transporter": "4.22.1" + "@algolia/client-common": "4.23.2", + "@algolia/requester-common": "4.23.2", + "@algolia/transporter": "4.23.2" } }, "node_modules/@algolia/client-search": { - "version": "4.22.1", - "resolved": "https://registry.npmjs.org/@algolia/client-search/-/client-search-4.22.1.tgz", - "integrity": "sha512-yb05NA4tNaOgx3+rOxAmFztgMTtGBi97X7PC3jyNeGiwkAjOZc2QrdZBYyIdcDLoI09N0gjtpClcackoTN0gPA==", + "version": "4.23.2", + "resolved": "https://registry.npmjs.org/@algolia/client-search/-/client-search-4.23.2.tgz", + "integrity": "sha512-CxSB29OVGSE7l/iyoHvamMonzq7Ev8lnk/OkzleODZ1iBcCs3JC/XgTIKzN/4RSTrJ9QybsnlrN/bYCGufo7qw==", "dev": true, "dependencies": { - "@algolia/client-common": "4.22.1", - "@algolia/requester-common": "4.22.1", - "@algolia/transporter": "4.22.1" + "@algolia/client-common": "4.23.2", + "@algolia/requester-common": "4.23.2", + "@algolia/transporter": "4.23.2" } }, "node_modules/@algolia/logger-common": { - "version": "4.22.1", - "resolved": "https://registry.npmjs.org/@algolia/logger-common/-/logger-common-4.22.1.tgz", - "integrity": "sha512-OnTFymd2odHSO39r4DSWRFETkBufnY2iGUZNrMXpIhF5cmFE8pGoINNPzwg02QLBlGSaLqdKy0bM8S0GyqPLBg==", + "version": "4.23.2", + "resolved": "https://registry.npmjs.org/@algolia/logger-common/-/logger-common-4.23.2.tgz", + "integrity": "sha512-jGM49Q7626cXZ7qRAWXn0jDlzvoA1FvN4rKTi1g0hxKsTTSReyYk0i1ADWjChDPl3Q+nSDhJuosM2bBUAay7xw==", "dev": true }, "node_modules/@algolia/logger-console": { - "version": "4.22.1", - "resolved": "https://registry.npmjs.org/@algolia/logger-console/-/logger-console-4.22.1.tgz", - "integrity": "sha512-O99rcqpVPKN1RlpgD6H3khUWylU24OXlzkavUAMy6QZd1776QAcauE3oP8CmD43nbaTjBexZj2nGsBH9Tc0FVA==", + "version": "4.23.2", + "resolved": "https://registry.npmjs.org/@algolia/logger-console/-/logger-console-4.23.2.tgz", + "integrity": "sha512-oo+lnxxEmlhTBTFZ3fGz1O8PJ+G+8FiAoMY2Qo3Q4w23xocQev6KqDTA1JQAGPDxAewNA2VBwWOsVXeXFjrI/Q==", "dev": true, "dependencies": { - "@algolia/logger-common": "4.22.1" + "@algolia/logger-common": "4.23.2" + } + }, + "node_modules/@algolia/recommend": { + "version": "4.23.2", + "resolved": "https://registry.npmjs.org/@algolia/recommend/-/recommend-4.23.2.tgz", + "integrity": "sha512-Q75CjnzRCDzgIlgWfPnkLtrfF4t82JCirhalXkSSwe/c1GH5pWh4xUyDOR3KTMo+YxxX3zTlrL/FjHmUJEWEcg==", + "dev": true, + "dependencies": { + "@algolia/cache-browser-local-storage": "4.23.2", + "@algolia/cache-common": "4.23.2", + "@algolia/cache-in-memory": "4.23.2", + "@algolia/client-common": "4.23.2", + "@algolia/client-search": "4.23.2", + "@algolia/logger-common": "4.23.2", + "@algolia/logger-console": "4.23.2", + "@algolia/requester-browser-xhr": "4.23.2", + "@algolia/requester-common": "4.23.2", + "@algolia/requester-node-http": "4.23.2", + "@algolia/transporter": "4.23.2" } }, "node_modules/@algolia/requester-browser-xhr": { - "version": "4.22.1", - "resolved": "https://registry.npmjs.org/@algolia/requester-browser-xhr/-/requester-browser-xhr-4.22.1.tgz", - "integrity": "sha512-dtQGYIg6MteqT1Uay3J/0NDqD+UciHy3QgRbk7bNddOJu+p3hzjTRYESqEnoX/DpEkaNYdRHUKNylsqMpgwaEw==", + "version": "4.23.2", + "resolved": "https://registry.npmjs.org/@algolia/requester-browser-xhr/-/requester-browser-xhr-4.23.2.tgz", + "integrity": "sha512-TO9wLlp8+rvW9LnIfyHsu8mNAMYrqNdQ0oLF6eTWFxXfxG3k8F/Bh7nFYGk2rFAYty4Fw4XUtrv/YjeNDtM5og==", "dev": true, "dependencies": { - "@algolia/requester-common": "4.22.1" + "@algolia/requester-common": "4.23.2" } }, "node_modules/@algolia/requester-common": { - "version": "4.22.1", - "resolved": "https://registry.npmjs.org/@algolia/requester-common/-/requester-common-4.22.1.tgz", - "integrity": "sha512-dgvhSAtg2MJnR+BxrIFqlLtkLlVVhas9HgYKMk2Uxiy5m6/8HZBL40JVAMb2LovoPFs9I/EWIoFVjOrFwzn5Qg==", + "version": "4.23.2", + "resolved": "https://registry.npmjs.org/@algolia/requester-common/-/requester-common-4.23.2.tgz", + "integrity": "sha512-3EfpBS0Hri0lGDB5H/BocLt7Vkop0bTTLVUBB844HH6tVycwShmsV6bDR7yXbQvFP1uNpgePRD3cdBCjeHmk6Q==", "dev": true }, "node_modules/@algolia/requester-node-http": { - "version": "4.22.1", - "resolved": "https://registry.npmjs.org/@algolia/requester-node-http/-/requester-node-http-4.22.1.tgz", - "integrity": "sha512-JfmZ3MVFQkAU+zug8H3s8rZ6h0ahHZL/SpMaSasTCGYR5EEJsCc8SI5UZ6raPN2tjxa5bxS13BRpGSBUens7EA==", + "version": "4.23.2", + "resolved": "https://registry.npmjs.org/@algolia/requester-node-http/-/requester-node-http-4.23.2.tgz", + "integrity": "sha512-SVzgkZM/malo+2SB0NWDXpnT7nO5IZwuDTaaH6SjLeOHcya1o56LSWXk+3F3rNLz2GVH+I/rpYKiqmHhSOjerw==", "dev": true, "dependencies": { - "@algolia/requester-common": "4.22.1" + "@algolia/requester-common": "4.23.2" } }, "node_modules/@algolia/transporter": { - "version": "4.22.1", - "resolved": "https://registry.npmjs.org/@algolia/transporter/-/transporter-4.22.1.tgz", - "integrity": "sha512-kzWgc2c9IdxMa3YqA6TN0NW5VrKYYW/BELIn7vnLyn+U/RFdZ4lxxt9/8yq3DKV5snvoDzzO4ClyejZRdV3lMQ==", + "version": "4.23.2", + "resolved": "https://registry.npmjs.org/@algolia/transporter/-/transporter-4.23.2.tgz", + "integrity": "sha512-GY3aGKBy+8AK4vZh8sfkatDciDVKad5rTY2S10Aefyjh7e7UGBP4zigf42qVXwU8VOPwi7l/L7OACGMOFcjB0Q==", "dev": true, "dependencies": { - "@algolia/cache-common": "4.22.1", - "@algolia/logger-common": "4.22.1", - "@algolia/requester-common": "4.22.1" + "@algolia/cache-common": "4.23.2", + "@algolia/logger-common": "4.23.2", + "@algolia/requester-common": "4.23.2" } }, "node_modules/@babel/parser": { - "version": "7.24.0", - "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.24.0.tgz", - "integrity": "sha512-QuP/FxEAzMSjXygs8v4N9dvdXzEHN4W1oF3PxuWAtPo08UdM17u89RDMgjLn/mlc56iM0HlLmVkO/wgR+rDgHg==", + "version": "7.24.4", + "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.24.4.tgz", + "integrity": "sha512-zTvEBcghmeBma9QIGunWevvBAp4/Qu9Bdq+2k0Ot4fVMD6v3dsC9WOcRSKk7tRRyBM/53yKMJko9xOatGQAwSg==", "dev": true, "bin": { "parser": "bin/babel-parser.js" @@ -199,30 +221,30 @@ } }, "node_modules/@docsearch/css": { - "version": "3.5.2", - "resolved": "https://registry.npmjs.org/@docsearch/css/-/css-3.5.2.tgz", - "integrity": "sha512-SPiDHaWKQZpwR2siD0KQUwlStvIAnEyK6tAE2h2Wuoq8ue9skzhlyVQ1ddzOxX6khULnAALDiR/isSF3bnuciA==", + "version": "3.6.0", + "resolved": "https://registry.npmjs.org/@docsearch/css/-/css-3.6.0.tgz", + "integrity": "sha512-+sbxb71sWre+PwDK7X2T8+bhS6clcVMLwBPznX45Qu6opJcgRjAp7gYSDzVFp187J+feSj5dNBN1mJoi6ckkUQ==", "dev": true }, "node_modules/@docsearch/js": { - "version": "3.5.2", - "resolved": "https://registry.npmjs.org/@docsearch/js/-/js-3.5.2.tgz", - "integrity": "sha512-p1YFTCDflk8ieHgFJYfmyHBki1D61+U9idwrLh+GQQMrBSP3DLGKpy0XUJtPjAOPltcVbqsTjiPFfH7JImjUNg==", + "version": "3.6.0", + "resolved": "https://registry.npmjs.org/@docsearch/js/-/js-3.6.0.tgz", + "integrity": "sha512-QujhqINEElrkIfKwyyyTfbsfMAYCkylInLYMRqHy7PHc8xTBQCow73tlo/Kc7oIwBrCLf0P3YhjlOeV4v8hevQ==", "dev": true, "dependencies": { - "@docsearch/react": "3.5.2", + "@docsearch/react": "3.6.0", "preact": "^10.0.0" } }, "node_modules/@docsearch/react": { - "version": "3.5.2", - "resolved": "https://registry.npmjs.org/@docsearch/react/-/react-3.5.2.tgz", - "integrity": "sha512-9Ahcrs5z2jq/DcAvYtvlqEBHImbm4YJI8M9y0x6Tqg598P40HTEkX7hsMcIuThI+hTFxRGZ9hll0Wygm2yEjng==", + "version": "3.6.0", + "resolved": "https://registry.npmjs.org/@docsearch/react/-/react-3.6.0.tgz", + "integrity": "sha512-HUFut4ztcVNmqy9gp/wxNbC7pTOHhgVVkHVGCACTuLhUKUhKAF9KYHJtMiLUJxEqiFLQiuri1fWF8zqwM/cu1w==", "dev": true, "dependencies": { "@algolia/autocomplete-core": "1.9.3", "@algolia/autocomplete-preset-algolia": "1.9.3", - "@docsearch/css": "3.5.2", + "@docsearch/css": "3.6.0", "algoliasearch": "^4.19.1" }, "peerDependencies": { @@ -247,9 +269,9 @@ } }, "node_modules/@esbuild/aix-ppc64": { - "version": "0.19.12", - "resolved": "https://registry.npmjs.org/@esbuild/aix-ppc64/-/aix-ppc64-0.19.12.tgz", - "integrity": "sha512-bmoCYyWdEL3wDQIVbcyzRyeKLgk2WtWLTWz1ZIAZF/EGbNOwSA6ew3PftJ1PqMiOOGu0OyFMzG53L0zqIpPeNA==", + "version": "0.20.2", + "resolved": "https://registry.npmjs.org/@esbuild/aix-ppc64/-/aix-ppc64-0.20.2.tgz", + "integrity": "sha512-D+EBOJHXdNZcLJRBkhENNG8Wji2kgc9AZ9KiPr1JuZjsNtyHzrsfLRrY0tk2H2aoFu6RANO1y1iPPUCDYWkb5g==", "cpu": [ "ppc64" ], @@ -263,9 +285,9 @@ } }, "node_modules/@esbuild/android-arm": { - "version": "0.19.12", - "resolved": "https://registry.npmjs.org/@esbuild/android-arm/-/android-arm-0.19.12.tgz", - "integrity": "sha512-qg/Lj1mu3CdQlDEEiWrlC4eaPZ1KztwGJ9B6J+/6G+/4ewxJg7gqj8eVYWvao1bXrqGiW2rsBZFSX3q2lcW05w==", + "version": "0.20.2", + "resolved": "https://registry.npmjs.org/@esbuild/android-arm/-/android-arm-0.20.2.tgz", + "integrity": "sha512-t98Ra6pw2VaDhqNWO2Oph2LXbz/EJcnLmKLGBJwEwXX/JAN83Fym1rU8l0JUWK6HkIbWONCSSatf4sf2NBRx/w==", "cpu": [ "arm" ], @@ -279,9 +301,9 @@ } }, "node_modules/@esbuild/android-arm64": { - "version": "0.19.12", - "resolved": "https://registry.npmjs.org/@esbuild/android-arm64/-/android-arm64-0.19.12.tgz", - "integrity": "sha512-P0UVNGIienjZv3f5zq0DP3Nt2IE/3plFzuaS96vihvD0Hd6H/q4WXUGpCxD/E8YrSXfNyRPbpTq+T8ZQioSuPA==", + "version": "0.20.2", + "resolved": "https://registry.npmjs.org/@esbuild/android-arm64/-/android-arm64-0.20.2.tgz", + "integrity": "sha512-mRzjLacRtl/tWU0SvD8lUEwb61yP9cqQo6noDZP/O8VkwafSYwZ4yWy24kan8jE/IMERpYncRt2dw438LP3Xmg==", "cpu": [ "arm64" ], @@ -295,9 +317,9 @@ } }, "node_modules/@esbuild/android-x64": { - "version": "0.19.12", - "resolved": "https://registry.npmjs.org/@esbuild/android-x64/-/android-x64-0.19.12.tgz", - "integrity": "sha512-3k7ZoUW6Q6YqhdhIaq/WZ7HwBpnFBlW905Fa4s4qWJyiNOgT1dOqDiVAQFwBH7gBRZr17gLrlFCRzF6jFh7Kew==", + "version": "0.20.2", + "resolved": "https://registry.npmjs.org/@esbuild/android-x64/-/android-x64-0.20.2.tgz", + "integrity": "sha512-btzExgV+/lMGDDa194CcUQm53ncxzeBrWJcncOBxuC6ndBkKxnHdFJn86mCIgTELsooUmwUm9FkhSp5HYu00Rg==", "cpu": [ "x64" ], @@ -311,9 +333,9 @@ } }, "node_modules/@esbuild/darwin-arm64": { - "version": "0.19.12", - "resolved": "https://registry.npmjs.org/@esbuild/darwin-arm64/-/darwin-arm64-0.19.12.tgz", - "integrity": "sha512-B6IeSgZgtEzGC42jsI+YYu9Z3HKRxp8ZT3cqhvliEHovq8HSX2YX8lNocDn79gCKJXOSaEot9MVYky7AKjCs8g==", + "version": "0.20.2", + "resolved": "https://registry.npmjs.org/@esbuild/darwin-arm64/-/darwin-arm64-0.20.2.tgz", + "integrity": "sha512-4J6IRT+10J3aJH3l1yzEg9y3wkTDgDk7TSDFX+wKFiWjqWp/iCfLIYzGyasx9l0SAFPT1HwSCR+0w/h1ES/MjA==", "cpu": [ "arm64" ], @@ -327,9 +349,9 @@ } }, "node_modules/@esbuild/darwin-x64": { - "version": "0.19.12", - "resolved": "https://registry.npmjs.org/@esbuild/darwin-x64/-/darwin-x64-0.19.12.tgz", - "integrity": "sha512-hKoVkKzFiToTgn+41qGhsUJXFlIjxI/jSYeZf3ugemDYZldIXIxhvwN6erJGlX4t5h417iFuheZ7l+YVn05N3A==", + "version": "0.20.2", + "resolved": "https://registry.npmjs.org/@esbuild/darwin-x64/-/darwin-x64-0.20.2.tgz", + "integrity": "sha512-tBcXp9KNphnNH0dfhv8KYkZhjc+H3XBkF5DKtswJblV7KlT9EI2+jeA8DgBjp908WEuYll6pF+UStUCfEpdysA==", "cpu": [ "x64" ], @@ -343,9 +365,9 @@ } }, "node_modules/@esbuild/freebsd-arm64": { - "version": "0.19.12", - "resolved": "https://registry.npmjs.org/@esbuild/freebsd-arm64/-/freebsd-arm64-0.19.12.tgz", - "integrity": "sha512-4aRvFIXmwAcDBw9AueDQ2YnGmz5L6obe5kmPT8Vd+/+x/JMVKCgdcRwH6APrbpNXsPz+K653Qg8HB/oXvXVukA==", + "version": "0.20.2", + "resolved": "https://registry.npmjs.org/@esbuild/freebsd-arm64/-/freebsd-arm64-0.20.2.tgz", + "integrity": "sha512-d3qI41G4SuLiCGCFGUrKsSeTXyWG6yem1KcGZVS+3FYlYhtNoNgYrWcvkOoaqMhwXSMrZRl69ArHsGJ9mYdbbw==", "cpu": [ "arm64" ], @@ -359,9 +381,9 @@ } }, "node_modules/@esbuild/freebsd-x64": { - "version": "0.19.12", - "resolved": "https://registry.npmjs.org/@esbuild/freebsd-x64/-/freebsd-x64-0.19.12.tgz", - "integrity": "sha512-EYoXZ4d8xtBoVN7CEwWY2IN4ho76xjYXqSXMNccFSx2lgqOG/1TBPW0yPx1bJZk94qu3tX0fycJeeQsKovA8gg==", + "version": "0.20.2", + "resolved": "https://registry.npmjs.org/@esbuild/freebsd-x64/-/freebsd-x64-0.20.2.tgz", + "integrity": "sha512-d+DipyvHRuqEeM5zDivKV1KuXn9WeRX6vqSqIDgwIfPQtwMP4jaDsQsDncjTDDsExT4lR/91OLjRo8bmC1e+Cw==", "cpu": [ "x64" ], @@ -375,9 +397,9 @@ } }, "node_modules/@esbuild/linux-arm": { - "version": "0.19.12", - "resolved": "https://registry.npmjs.org/@esbuild/linux-arm/-/linux-arm-0.19.12.tgz", - "integrity": "sha512-J5jPms//KhSNv+LO1S1TX1UWp1ucM6N6XuL6ITdKWElCu8wXP72l9MM0zDTzzeikVyqFE6U8YAV9/tFyj0ti+w==", + "version": "0.20.2", + "resolved": "https://registry.npmjs.org/@esbuild/linux-arm/-/linux-arm-0.20.2.tgz", + "integrity": "sha512-VhLPeR8HTMPccbuWWcEUD1Az68TqaTYyj6nfE4QByZIQEQVWBB8vup8PpR7y1QHL3CpcF6xd5WVBU/+SBEvGTg==", "cpu": [ "arm" ], @@ -391,9 +413,9 @@ } }, "node_modules/@esbuild/linux-arm64": { - "version": "0.19.12", - "resolved": "https://registry.npmjs.org/@esbuild/linux-arm64/-/linux-arm64-0.19.12.tgz", - "integrity": "sha512-EoTjyYyLuVPfdPLsGVVVC8a0p1BFFvtpQDB/YLEhaXyf/5bczaGeN15QkR+O4S5LeJ92Tqotve7i1jn35qwvdA==", + "version": "0.20.2", + "resolved": "https://registry.npmjs.org/@esbuild/linux-arm64/-/linux-arm64-0.20.2.tgz", + "integrity": "sha512-9pb6rBjGvTFNira2FLIWqDk/uaf42sSyLE8j1rnUpuzsODBq7FvpwHYZxQ/It/8b+QOS1RYfqgGFNLRI+qlq2A==", "cpu": [ "arm64" ], @@ -407,9 +429,9 @@ } }, "node_modules/@esbuild/linux-ia32": { - "version": "0.19.12", - "resolved": "https://registry.npmjs.org/@esbuild/linux-ia32/-/linux-ia32-0.19.12.tgz", - "integrity": "sha512-Thsa42rrP1+UIGaWz47uydHSBOgTUnwBwNq59khgIwktK6x60Hivfbux9iNR0eHCHzOLjLMLfUMLCypBkZXMHA==", + "version": "0.20.2", + "resolved": "https://registry.npmjs.org/@esbuild/linux-ia32/-/linux-ia32-0.20.2.tgz", + "integrity": "sha512-o10utieEkNPFDZFQm9CoP7Tvb33UutoJqg3qKf1PWVeeJhJw0Q347PxMvBgVVFgouYLGIhFYG0UGdBumROyiig==", "cpu": [ "ia32" ], @@ -423,9 +445,9 @@ } }, "node_modules/@esbuild/linux-loong64": { - "version": "0.19.12", - "resolved": "https://registry.npmjs.org/@esbuild/linux-loong64/-/linux-loong64-0.19.12.tgz", - "integrity": "sha512-LiXdXA0s3IqRRjm6rV6XaWATScKAXjI4R4LoDlvO7+yQqFdlr1Bax62sRwkVvRIrwXxvtYEHHI4dm50jAXkuAA==", + "version": "0.20.2", + "resolved": "https://registry.npmjs.org/@esbuild/linux-loong64/-/linux-loong64-0.20.2.tgz", + "integrity": "sha512-PR7sp6R/UC4CFVomVINKJ80pMFlfDfMQMYynX7t1tNTeivQ6XdX5r2XovMmha/VjR1YN/HgHWsVcTRIMkymrgQ==", "cpu": [ "loong64" ], @@ -439,9 +461,9 @@ } }, "node_modules/@esbuild/linux-mips64el": { - "version": "0.19.12", - "resolved": "https://registry.npmjs.org/@esbuild/linux-mips64el/-/linux-mips64el-0.19.12.tgz", - "integrity": "sha512-fEnAuj5VGTanfJ07ff0gOA6IPsvrVHLVb6Lyd1g2/ed67oU1eFzL0r9WL7ZzscD+/N6i3dWumGE1Un4f7Amf+w==", + "version": "0.20.2", + "resolved": "https://registry.npmjs.org/@esbuild/linux-mips64el/-/linux-mips64el-0.20.2.tgz", + "integrity": "sha512-4BlTqeutE/KnOiTG5Y6Sb/Hw6hsBOZapOVF6njAESHInhlQAghVVZL1ZpIctBOoTFbQyGW+LsVYZ8lSSB3wkjA==", "cpu": [ "mips64el" ], @@ -455,9 +477,9 @@ } }, "node_modules/@esbuild/linux-ppc64": { - "version": "0.19.12", - "resolved": "https://registry.npmjs.org/@esbuild/linux-ppc64/-/linux-ppc64-0.19.12.tgz", - "integrity": "sha512-nYJA2/QPimDQOh1rKWedNOe3Gfc8PabU7HT3iXWtNUbRzXS9+vgB0Fjaqr//XNbd82mCxHzik2qotuI89cfixg==", + "version": "0.20.2", + "resolved": "https://registry.npmjs.org/@esbuild/linux-ppc64/-/linux-ppc64-0.20.2.tgz", + "integrity": "sha512-rD3KsaDprDcfajSKdn25ooz5J5/fWBylaaXkuotBDGnMnDP1Uv5DLAN/45qfnf3JDYyJv/ytGHQaziHUdyzaAg==", "cpu": [ "ppc64" ], @@ -471,9 +493,9 @@ } }, "node_modules/@esbuild/linux-riscv64": { - "version": "0.19.12", - "resolved": "https://registry.npmjs.org/@esbuild/linux-riscv64/-/linux-riscv64-0.19.12.tgz", - "integrity": "sha512-2MueBrlPQCw5dVJJpQdUYgeqIzDQgw3QtiAHUC4RBz9FXPrskyyU3VI1hw7C0BSKB9OduwSJ79FTCqtGMWqJHg==", + "version": "0.20.2", + "resolved": "https://registry.npmjs.org/@esbuild/linux-riscv64/-/linux-riscv64-0.20.2.tgz", + "integrity": "sha512-snwmBKacKmwTMmhLlz/3aH1Q9T8v45bKYGE3j26TsaOVtjIag4wLfWSiZykXzXuE1kbCE+zJRmwp+ZbIHinnVg==", "cpu": [ "riscv64" ], @@ -487,9 +509,9 @@ } }, "node_modules/@esbuild/linux-s390x": { - "version": "0.19.12", - "resolved": "https://registry.npmjs.org/@esbuild/linux-s390x/-/linux-s390x-0.19.12.tgz", - "integrity": "sha512-+Pil1Nv3Umes4m3AZKqA2anfhJiVmNCYkPchwFJNEJN5QxmTs1uzyy4TvmDrCRNT2ApwSari7ZIgrPeUx4UZDg==", + "version": "0.20.2", + "resolved": "https://registry.npmjs.org/@esbuild/linux-s390x/-/linux-s390x-0.20.2.tgz", + "integrity": "sha512-wcWISOobRWNm3cezm5HOZcYz1sKoHLd8VL1dl309DiixxVFoFe/o8HnwuIwn6sXre88Nwj+VwZUvJf4AFxkyrQ==", "cpu": [ "s390x" ], @@ -503,9 +525,9 @@ } }, "node_modules/@esbuild/linux-x64": { - "version": "0.19.12", - "resolved": "https://registry.npmjs.org/@esbuild/linux-x64/-/linux-x64-0.19.12.tgz", - "integrity": "sha512-B71g1QpxfwBvNrfyJdVDexenDIt1CiDN1TIXLbhOw0KhJzE78KIFGX6OJ9MrtC0oOqMWf+0xop4qEU8JrJTwCg==", + "version": "0.20.2", + "resolved": "https://registry.npmjs.org/@esbuild/linux-x64/-/linux-x64-0.20.2.tgz", + "integrity": "sha512-1MdwI6OOTsfQfek8sLwgyjOXAu+wKhLEoaOLTjbijk6E2WONYpH9ZU2mNtR+lZ2B4uwr+usqGuVfFT9tMtGvGw==", "cpu": [ "x64" ], @@ -519,9 +541,9 @@ } }, "node_modules/@esbuild/netbsd-x64": { - "version": "0.19.12", - "resolved": "https://registry.npmjs.org/@esbuild/netbsd-x64/-/netbsd-x64-0.19.12.tgz", - "integrity": "sha512-3ltjQ7n1owJgFbuC61Oj++XhtzmymoCihNFgT84UAmJnxJfm4sYCiSLTXZtE00VWYpPMYc+ZQmB6xbSdVh0JWA==", + "version": "0.20.2", + "resolved": "https://registry.npmjs.org/@esbuild/netbsd-x64/-/netbsd-x64-0.20.2.tgz", + "integrity": "sha512-K8/DhBxcVQkzYc43yJXDSyjlFeHQJBiowJ0uVL6Tor3jGQfSGHNNJcWxNbOI8v5k82prYqzPuwkzHt3J1T1iZQ==", "cpu": [ "x64" ], @@ -535,9 +557,9 @@ } }, "node_modules/@esbuild/openbsd-x64": { - "version": "0.19.12", - "resolved": "https://registry.npmjs.org/@esbuild/openbsd-x64/-/openbsd-x64-0.19.12.tgz", - "integrity": "sha512-RbrfTB9SWsr0kWmb9srfF+L933uMDdu9BIzdA7os2t0TXhCRjrQyCeOt6wVxr79CKD4c+p+YhCj31HBkYcXebw==", + "version": "0.20.2", + "resolved": "https://registry.npmjs.org/@esbuild/openbsd-x64/-/openbsd-x64-0.20.2.tgz", + "integrity": "sha512-eMpKlV0SThJmmJgiVyN9jTPJ2VBPquf6Kt/nAoo6DgHAoN57K15ZghiHaMvqjCye/uU4X5u3YSMgVBI1h3vKrQ==", "cpu": [ "x64" ], @@ -551,9 +573,9 @@ } }, "node_modules/@esbuild/sunos-x64": { - "version": "0.19.12", - "resolved": "https://registry.npmjs.org/@esbuild/sunos-x64/-/sunos-x64-0.19.12.tgz", - "integrity": "sha512-HKjJwRrW8uWtCQnQOz9qcU3mUZhTUQvi56Q8DPTLLB+DawoiQdjsYq+j+D3s9I8VFtDr+F9CjgXKKC4ss89IeA==", + "version": "0.20.2", + "resolved": "https://registry.npmjs.org/@esbuild/sunos-x64/-/sunos-x64-0.20.2.tgz", + "integrity": "sha512-2UyFtRC6cXLyejf/YEld4Hajo7UHILetzE1vsRcGL3earZEW77JxrFjH4Ez2qaTiEfMgAXxfAZCm1fvM/G/o8w==", "cpu": [ "x64" ], @@ -567,9 +589,9 @@ } }, "node_modules/@esbuild/win32-arm64": { - "version": "0.19.12", - "resolved": "https://registry.npmjs.org/@esbuild/win32-arm64/-/win32-arm64-0.19.12.tgz", - "integrity": "sha512-URgtR1dJnmGvX864pn1B2YUYNzjmXkuJOIqG2HdU62MVS4EHpU2946OZoTMnRUHklGtJdJZ33QfzdjGACXhn1A==", + "version": "0.20.2", + "resolved": "https://registry.npmjs.org/@esbuild/win32-arm64/-/win32-arm64-0.20.2.tgz", + "integrity": "sha512-GRibxoawM9ZCnDxnP3usoUDO9vUkpAxIIZ6GQI+IlVmr5kP3zUq+l17xELTHMWTWzjxa2guPNyrpq1GWmPvcGQ==", "cpu": [ "arm64" ], @@ -583,9 +605,9 @@ } }, "node_modules/@esbuild/win32-ia32": { - "version": "0.19.12", - "resolved": "https://registry.npmjs.org/@esbuild/win32-ia32/-/win32-ia32-0.19.12.tgz", - "integrity": "sha512-+ZOE6pUkMOJfmxmBZElNOx72NKpIa/HFOMGzu8fqzQJ5kgf6aTGrcJaFsNiVMH4JKpMipyK+7k0n2UXN7a8YKQ==", + "version": "0.20.2", + "resolved": "https://registry.npmjs.org/@esbuild/win32-ia32/-/win32-ia32-0.20.2.tgz", + "integrity": "sha512-HfLOfn9YWmkSKRQqovpnITazdtquEW8/SoHW7pWpuEeguaZI4QnCRW6b+oZTztdBnZOS2hqJ6im/D5cPzBTTlQ==", "cpu": [ "ia32" ], @@ -599,9 +621,9 @@ } }, "node_modules/@esbuild/win32-x64": { - "version": "0.19.12", - "resolved": "https://registry.npmjs.org/@esbuild/win32-x64/-/win32-x64-0.19.12.tgz", - "integrity": "sha512-T1QyPSDCyMXaO3pzBkF96E8xMkiRYbUEZADd29SyPGabqxMViNoii+NcK7eWJAEoU6RZyEm5lVSIjTmcdoB9HA==", + "version": "0.20.2", + "resolved": "https://registry.npmjs.org/@esbuild/win32-x64/-/win32-x64-0.20.2.tgz", + "integrity": "sha512-N49X4lJX27+l9jbLKSqZ6bKNjzQvHaT8IIFUy+YIqmXQdjYCToGWwOItDrfby14c78aDd5NHQl29xingXfCdLQ==", "cpu": [ "x64" ], @@ -621,9 +643,9 @@ "dev": true }, "node_modules/@rollup/rollup-android-arm-eabi": { - "version": "4.12.0", - "resolved": "https://registry.npmjs.org/@rollup/rollup-android-arm-eabi/-/rollup-android-arm-eabi-4.12.0.tgz", - "integrity": "sha512-+ac02NL/2TCKRrJu2wffk1kZ+RyqxVUlbjSagNgPm94frxtr+XDL12E5Ll1enWskLrtrZ2r8L3wED1orIibV/w==", + "version": "4.14.0", + "resolved": "https://registry.npmjs.org/@rollup/rollup-android-arm-eabi/-/rollup-android-arm-eabi-4.14.0.tgz", + "integrity": "sha512-jwXtxYbRt1V+CdQSy6Z+uZti7JF5irRKF8hlKfEnF/xJpcNGuuiZMBvuoYM+x9sr9iWGnzrlM0+9hvQ1kgkf1w==", "cpu": [ "arm" ], @@ -634,9 +656,9 @@ ] }, "node_modules/@rollup/rollup-android-arm64": { - "version": "4.12.0", - "resolved": "https://registry.npmjs.org/@rollup/rollup-android-arm64/-/rollup-android-arm64-4.12.0.tgz", - "integrity": "sha512-OBqcX2BMe6nvjQ0Nyp7cC90cnumt8PXmO7Dp3gfAju/6YwG0Tj74z1vKrfRz7qAv23nBcYM8BCbhrsWqO7PzQQ==", + "version": "4.14.0", + "resolved": "https://registry.npmjs.org/@rollup/rollup-android-arm64/-/rollup-android-arm64-4.14.0.tgz", + "integrity": "sha512-fI9nduZhCccjzlsA/OuAwtFGWocxA4gqXGTLvOyiF8d+8o0fZUeSztixkYjcGq1fGZY3Tkq4yRvHPFxU+jdZ9Q==", "cpu": [ "arm64" ], @@ -647,9 +669,9 @@ ] }, "node_modules/@rollup/rollup-darwin-arm64": { - "version": "4.12.0", - "resolved": "https://registry.npmjs.org/@rollup/rollup-darwin-arm64/-/rollup-darwin-arm64-4.12.0.tgz", - "integrity": "sha512-X64tZd8dRE/QTrBIEs63kaOBG0b5GVEd3ccoLtyf6IdXtHdh8h+I56C2yC3PtC9Ucnv0CpNFJLqKFVgCYe0lOQ==", + "version": "4.14.0", + "resolved": "https://registry.npmjs.org/@rollup/rollup-darwin-arm64/-/rollup-darwin-arm64-4.14.0.tgz", + "integrity": "sha512-BcnSPRM76/cD2gQC+rQNGBN6GStBs2pl/FpweW8JYuz5J/IEa0Fr4AtrPv766DB/6b2MZ/AfSIOSGw3nEIP8SA==", "cpu": [ "arm64" ], @@ -660,9 +682,9 @@ ] }, "node_modules/@rollup/rollup-darwin-x64": { - "version": "4.12.0", - "resolved": "https://registry.npmjs.org/@rollup/rollup-darwin-x64/-/rollup-darwin-x64-4.12.0.tgz", - "integrity": "sha512-cc71KUZoVbUJmGP2cOuiZ9HSOP14AzBAThn3OU+9LcA1+IUqswJyR1cAJj3Mg55HbjZP6OLAIscbQsQLrpgTOg==", + "version": "4.14.0", + "resolved": "https://registry.npmjs.org/@rollup/rollup-darwin-x64/-/rollup-darwin-x64-4.14.0.tgz", + "integrity": "sha512-LDyFB9GRolGN7XI6955aFeI3wCdCUszFWumWU0deHA8VpR3nWRrjG6GtGjBrQxQKFevnUTHKCfPR4IvrW3kCgQ==", "cpu": [ "x64" ], @@ -673,9 +695,9 @@ ] }, "node_modules/@rollup/rollup-linux-arm-gnueabihf": { - "version": "4.12.0", - "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm-gnueabihf/-/rollup-linux-arm-gnueabihf-4.12.0.tgz", - "integrity": "sha512-a6w/Y3hyyO6GlpKL2xJ4IOh/7d+APaqLYdMf86xnczU3nurFTaVN9s9jOXQg97BE4nYm/7Ga51rjec5nfRdrvA==", + "version": "4.14.0", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm-gnueabihf/-/rollup-linux-arm-gnueabihf-4.14.0.tgz", + "integrity": "sha512-ygrGVhQP47mRh0AAD0zl6QqCbNsf0eTo+vgwkY6LunBcg0f2Jv365GXlDUECIyoXp1kKwL5WW6rsO429DBY/bA==", "cpu": [ "arm" ], @@ -686,9 +708,9 @@ ] }, "node_modules/@rollup/rollup-linux-arm64-gnu": { - "version": "4.12.0", - "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm64-gnu/-/rollup-linux-arm64-gnu-4.12.0.tgz", - "integrity": "sha512-0fZBq27b+D7Ar5CQMofVN8sggOVhEtzFUwOwPppQt0k+VR+7UHMZZY4y+64WJ06XOhBTKXtQB/Sv0NwQMXyNAA==", + "version": "4.14.0", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm64-gnu/-/rollup-linux-arm64-gnu-4.14.0.tgz", + "integrity": "sha512-x+uJ6MAYRlHGe9wi4HQjxpaKHPM3d3JjqqCkeC5gpnnI6OWovLdXTpfa8trjxPLnWKyBsSi5kne+146GAxFt4A==", "cpu": [ "arm64" ], @@ -699,9 +721,9 @@ ] }, "node_modules/@rollup/rollup-linux-arm64-musl": { - "version": "4.12.0", - "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm64-musl/-/rollup-linux-arm64-musl-4.12.0.tgz", - "integrity": "sha512-eTvzUS3hhhlgeAv6bfigekzWZjaEX9xP9HhxB0Dvrdbkk5w/b+1Sxct2ZuDxNJKzsRStSq1EaEkVSEe7A7ipgQ==", + "version": "4.14.0", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm64-musl/-/rollup-linux-arm64-musl-4.14.0.tgz", + "integrity": "sha512-nrRw8ZTQKg6+Lttwqo6a2VxR9tOroa2m91XbdQ2sUUzHoedXlsyvY1fN4xWdqz8PKmf4orDwejxXHjh7YBGUCA==", "cpu": [ "arm64" ], @@ -711,10 +733,23 @@ "linux" ] }, + "node_modules/@rollup/rollup-linux-powerpc64le-gnu": { + "version": "4.14.0", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-powerpc64le-gnu/-/rollup-linux-powerpc64le-gnu-4.14.0.tgz", + "integrity": "sha512-xV0d5jDb4aFu84XKr+lcUJ9y3qpIWhttO3Qev97z8DKLXR62LC3cXT/bMZXrjLF9X+P5oSmJTzAhqwUbY96PnA==", + "cpu": [ + "ppc64le" + ], + "dev": true, + "optional": true, + "os": [ + "linux" + ] + }, "node_modules/@rollup/rollup-linux-riscv64-gnu": { - "version": "4.12.0", - "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-riscv64-gnu/-/rollup-linux-riscv64-gnu-4.12.0.tgz", - "integrity": "sha512-ix+qAB9qmrCRiaO71VFfY8rkiAZJL8zQRXveS27HS+pKdjwUfEhqo2+YF2oI+H/22Xsiski+qqwIBxVewLK7sw==", + "version": "4.14.0", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-riscv64-gnu/-/rollup-linux-riscv64-gnu-4.14.0.tgz", + "integrity": "sha512-SDDhBQwZX6LPRoPYjAZWyL27LbcBo7WdBFWJi5PI9RPCzU8ijzkQn7tt8NXiXRiFMJCVpkuMkBf4OxSxVMizAw==", "cpu": [ "riscv64" ], @@ -724,10 +759,23 @@ "linux" ] }, + "node_modules/@rollup/rollup-linux-s390x-gnu": { + "version": "4.14.0", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-s390x-gnu/-/rollup-linux-s390x-gnu-4.14.0.tgz", + "integrity": "sha512-RxB/qez8zIDshNJDufYlTT0ZTVut5eCpAZ3bdXDU9yTxBzui3KhbGjROK2OYTTor7alM7XBhssgoO3CZ0XD3qA==", + "cpu": [ + "s390x" + ], + "dev": true, + "optional": true, + "os": [ + "linux" + ] + }, "node_modules/@rollup/rollup-linux-x64-gnu": { - "version": "4.12.0", - "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-x64-gnu/-/rollup-linux-x64-gnu-4.12.0.tgz", - "integrity": "sha512-TenQhZVOtw/3qKOPa7d+QgkeM6xY0LtwzR8OplmyL5LrgTWIXpTQg2Q2ycBf8jm+SFW2Wt/DTn1gf7nFp3ssVA==", + "version": "4.14.0", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-x64-gnu/-/rollup-linux-x64-gnu-4.14.0.tgz", + "integrity": "sha512-C6y6z2eCNCfhZxT9u+jAM2Fup89ZjiG5pIzZIDycs1IwESviLxwkQcFRGLjnDrP+PT+v5i4YFvlcfAs+LnreXg==", "cpu": [ "x64" ], @@ -738,9 +786,9 @@ ] }, "node_modules/@rollup/rollup-linux-x64-musl": { - "version": "4.12.0", - "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-x64-musl/-/rollup-linux-x64-musl-4.12.0.tgz", - "integrity": "sha512-LfFdRhNnW0zdMvdCb5FNuWlls2WbbSridJvxOvYWgSBOYZtgBfW9UGNJG//rwMqTX1xQE9BAodvMH9tAusKDUw==", + "version": "4.14.0", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-x64-musl/-/rollup-linux-x64-musl-4.14.0.tgz", + "integrity": "sha512-i0QwbHYfnOMYsBEyjxcwGu5SMIi9sImDVjDg087hpzXqhBSosxkE7gyIYFHgfFl4mr7RrXksIBZ4DoLoP4FhJg==", "cpu": [ "x64" ], @@ -751,9 +799,9 @@ ] }, "node_modules/@rollup/rollup-win32-arm64-msvc": { - "version": "4.12.0", - "resolved": "https://registry.npmjs.org/@rollup/rollup-win32-arm64-msvc/-/rollup-win32-arm64-msvc-4.12.0.tgz", - "integrity": "sha512-JPDxovheWNp6d7AHCgsUlkuCKvtu3RB55iNEkaQcf0ttsDU/JZF+iQnYcQJSk/7PtT4mjjVG8N1kpwnI9SLYaw==", + "version": "4.14.0", + "resolved": "https://registry.npmjs.org/@rollup/rollup-win32-arm64-msvc/-/rollup-win32-arm64-msvc-4.14.0.tgz", + "integrity": "sha512-Fq52EYb0riNHLBTAcL0cun+rRwyZ10S9vKzhGKKgeD+XbwunszSY0rVMco5KbOsTlwovP2rTOkiII/fQ4ih/zQ==", "cpu": [ "arm64" ], @@ -764,9 +812,9 @@ ] }, "node_modules/@rollup/rollup-win32-ia32-msvc": { - "version": "4.12.0", - "resolved": "https://registry.npmjs.org/@rollup/rollup-win32-ia32-msvc/-/rollup-win32-ia32-msvc-4.12.0.tgz", - "integrity": "sha512-fjtuvMWRGJn1oZacG8IPnzIV6GF2/XG+h71FKn76OYFqySXInJtseAqdprVTDTyqPxQOG9Exak5/E9Z3+EJ8ZA==", + "version": "4.14.0", + "resolved": "https://registry.npmjs.org/@rollup/rollup-win32-ia32-msvc/-/rollup-win32-ia32-msvc-4.14.0.tgz", + "integrity": "sha512-e/PBHxPdJ00O9p5Ui43+vixSgVf4NlLsmV6QneGERJ3lnjIua/kim6PRFe3iDueT1rQcgSkYP8ZBBXa/h4iPvw==", "cpu": [ "ia32" ], @@ -777,9 +825,9 @@ ] }, "node_modules/@rollup/rollup-win32-x64-msvc": { - "version": "4.12.0", - "resolved": "https://registry.npmjs.org/@rollup/rollup-win32-x64-msvc/-/rollup-win32-x64-msvc-4.12.0.tgz", - "integrity": "sha512-ZYmr5mS2wd4Dew/JjT0Fqi2NPB/ZhZ2VvPp7SmvPZb4Y1CG/LRcS6tcRo2cYU7zLK5A7cdbhWnnWmUjoI4qapg==", + "version": "4.14.0", + "resolved": "https://registry.npmjs.org/@rollup/rollup-win32-x64-msvc/-/rollup-win32-x64-msvc-4.14.0.tgz", + "integrity": "sha512-aGg7iToJjdklmxlUlJh/PaPNa4PmqHfyRMLunbL3eaMO0gp656+q1zOKkpJ/CVe9CryJv6tAN1HDoR8cNGzkag==", "cpu": [ "x64" ], @@ -790,18 +838,18 @@ ] }, "node_modules/@shikijs/core": { - "version": "1.1.7", - "resolved": "https://registry.npmjs.org/@shikijs/core/-/core-1.1.7.tgz", - "integrity": "sha512-gTYLUIuD1UbZp/11qozD3fWpUTuMqPSf3svDMMrL0UmlGU7D9dPw/V1FonwAorCUJBltaaESxq90jrSjQyGixg==", + "version": "1.2.4", + "resolved": "https://registry.npmjs.org/@shikijs/core/-/core-1.2.4.tgz", + "integrity": "sha512-ClaUWpt8oTzjcF0MM1P81AeWyzc1sNSJlAjMG80CbwqbFqXSNz+NpQVUC0icobt3sZn43Sn27M4pHD/Jmp3zHw==", "dev": true }, "node_modules/@shikijs/transformers": { - "version": "1.1.7", - "resolved": "https://registry.npmjs.org/@shikijs/transformers/-/transformers-1.1.7.tgz", - "integrity": "sha512-lXz011ao4+rvweps/9h3CchBfzb1U5OtP5D51Tqc9lQYdLblWMIxQxH6Ybe1GeGINcEVM4goMyPrI0JvlIp4UQ==", + "version": "1.2.4", + "resolved": "https://registry.npmjs.org/@shikijs/transformers/-/transformers-1.2.4.tgz", + "integrity": "sha512-ysGkpsHxRxLmz8nGKeFdV+gKj1NXt+88sM/34kfKVWTWIXg5gsFOJxJBbG7k+fUR5JlD6sNh65W9qPXrbVE1wQ==", "dev": true, "dependencies": { - "shiki": "1.1.7" + "shiki": "1.2.4" } }, "node_modules/@types/estree": { @@ -902,21 +950,21 @@ } }, "node_modules/@vue/devtools-api": { - "version": "7.0.16", - "resolved": "https://registry.npmjs.org/@vue/devtools-api/-/devtools-api-7.0.16.tgz", - "integrity": "sha512-fZG2CG8624qphMf4aj59zNHckMx1G3lxODUuyM9USKuLznXCh66TP+tEbPOCcml16hA0GizJ4D8w6F34hrfbcw==", + "version": "7.0.25", + "resolved": "https://registry.npmjs.org/@vue/devtools-api/-/devtools-api-7.0.25.tgz", + "integrity": "sha512-fL6DlRp4MSXCLYcqYvKU7QhQZWE3Hfu7X8pC25BS74coJi7uJeSWs4tmrITcwFihNmC9S5GPiffkMdckkeWjzg==", "dev": true, "dependencies": { - "@vue/devtools-kit": "^7.0.16" + "@vue/devtools-kit": "^7.0.25" } }, "node_modules/@vue/devtools-kit": { - "version": "7.0.16", - "resolved": "https://registry.npmjs.org/@vue/devtools-kit/-/devtools-kit-7.0.16.tgz", - "integrity": "sha512-IA8SSGiZbNgOi4wLT3mRvd71Q9KE0KvMfGk6haa2GZ6bL2K/xMA8Fvvj3o1maspfUXrGcCXutaqbLqbGx/espQ==", + "version": "7.0.25", + "resolved": "https://registry.npmjs.org/@vue/devtools-kit/-/devtools-kit-7.0.25.tgz", + "integrity": "sha512-wbLkSnOTsKHPb1mB9koFHUoSAF8Dp6Ii/ocR2+DeXFY4oKqIjCeJb/4Lihk4rgqEhCy1WwxLfTgNDo83VvDYkQ==", "dev": true, "dependencies": { - "@vue/devtools-shared": "^7.0.16", + "@vue/devtools-shared": "^7.0.25", "hookable": "^5.5.3", "mitt": "^3.0.1", "perfect-debounce": "^1.0.0", @@ -927,9 +975,9 @@ } }, "node_modules/@vue/devtools-shared": { - "version": "7.0.16", - "resolved": "https://registry.npmjs.org/@vue/devtools-shared/-/devtools-shared-7.0.16.tgz", - "integrity": "sha512-Lew4FrGjDjmanaUWSueNE1Rre83k7jQpttc17MaoVw0eARWU5DgZ1F/g9GNUMZXVjbP9rwE+LL3gd9XfXCfkvA==", + "version": "7.0.25", + "resolved": "https://registry.npmjs.org/@vue/devtools-shared/-/devtools-shared-7.0.25.tgz", + "integrity": "sha512-5+XYhcHSXuJSguYnNwL6/e6VTmXwCfryWQOkffh9ZU2zMByybqqqBrMWqvBkqTmMFCjPdzulo66xXbVbwLaElQ==", "dev": true, "dependencies": { "rfdc": "^1.3.1" @@ -1165,25 +1213,26 @@ } }, "node_modules/algoliasearch": { - "version": "4.22.1", - "resolved": "https://registry.npmjs.org/algoliasearch/-/algoliasearch-4.22.1.tgz", - "integrity": "sha512-jwydKFQJKIx9kIZ8Jm44SdpigFwRGPESaxZBaHSV0XWN2yBJAOT4mT7ppvlrpA4UGzz92pqFnVKr/kaZXrcreg==", + "version": "4.23.2", + "resolved": "https://registry.npmjs.org/algoliasearch/-/algoliasearch-4.23.2.tgz", + "integrity": "sha512-8aCl055IsokLuPU8BzLjwzXjb7ty9TPcUFFOk0pYOwsE5DMVhE3kwCMFtsCFKcnoPZK7oObm+H5mbnSO/9ioxQ==", "dev": true, "dependencies": { - "@algolia/cache-browser-local-storage": "4.22.1", - "@algolia/cache-common": "4.22.1", - "@algolia/cache-in-memory": "4.22.1", - "@algolia/client-account": "4.22.1", - "@algolia/client-analytics": "4.22.1", - "@algolia/client-common": "4.22.1", - "@algolia/client-personalization": "4.22.1", - "@algolia/client-search": "4.22.1", - "@algolia/logger-common": "4.22.1", - "@algolia/logger-console": "4.22.1", - "@algolia/requester-browser-xhr": "4.22.1", - "@algolia/requester-common": "4.22.1", - "@algolia/requester-node-http": "4.22.1", - "@algolia/transporter": "4.22.1" + "@algolia/cache-browser-local-storage": "4.23.2", + "@algolia/cache-common": "4.23.2", + "@algolia/cache-in-memory": "4.23.2", + "@algolia/client-account": "4.23.2", + "@algolia/client-analytics": "4.23.2", + "@algolia/client-common": "4.23.2", + "@algolia/client-personalization": "4.23.2", + "@algolia/client-search": "4.23.2", + "@algolia/logger-common": "4.23.2", + "@algolia/logger-console": "4.23.2", + "@algolia/recommend": "4.23.2", + "@algolia/requester-browser-xhr": "4.23.2", + "@algolia/requester-common": "4.23.2", + "@algolia/requester-node-http": "4.23.2", + "@algolia/transporter": "4.23.2" } }, "node_modules/csstype": { @@ -1205,9 +1254,9 @@ } }, "node_modules/esbuild": { - "version": "0.19.12", - "resolved": "https://registry.npmjs.org/esbuild/-/esbuild-0.19.12.tgz", - "integrity": "sha512-aARqgq8roFBj054KvQr5f1sFu0D65G+miZRCuJyJ0G13Zwx7vRar5Zhn2tkQNzIXcBrNVsv/8stehpj+GAjgbg==", + "version": "0.20.2", + "resolved": "https://registry.npmjs.org/esbuild/-/esbuild-0.20.2.tgz", + "integrity": "sha512-WdOOppmUNU+IbZ0PaDiTst80zjnrOkyJNHoKupIcVyU8Lvla3Ugx94VzkQ32Ijqd7UhHJy75gNWDMUekcrSJ6g==", "dev": true, "hasInstallScript": true, "bin": { @@ -1217,29 +1266,29 @@ "node": ">=12" }, "optionalDependencies": { - "@esbuild/aix-ppc64": "0.19.12", - "@esbuild/android-arm": "0.19.12", - "@esbuild/android-arm64": "0.19.12", - "@esbuild/android-x64": "0.19.12", - "@esbuild/darwin-arm64": "0.19.12", - "@esbuild/darwin-x64": "0.19.12", - "@esbuild/freebsd-arm64": "0.19.12", - "@esbuild/freebsd-x64": "0.19.12", - "@esbuild/linux-arm": "0.19.12", - "@esbuild/linux-arm64": "0.19.12", - "@esbuild/linux-ia32": "0.19.12", - "@esbuild/linux-loong64": "0.19.12", - "@esbuild/linux-mips64el": "0.19.12", - "@esbuild/linux-ppc64": "0.19.12", - "@esbuild/linux-riscv64": "0.19.12", - "@esbuild/linux-s390x": "0.19.12", - "@esbuild/linux-x64": "0.19.12", - "@esbuild/netbsd-x64": "0.19.12", - "@esbuild/openbsd-x64": "0.19.12", - "@esbuild/sunos-x64": "0.19.12", - "@esbuild/win32-arm64": "0.19.12", - "@esbuild/win32-ia32": "0.19.12", - "@esbuild/win32-x64": "0.19.12" + "@esbuild/aix-ppc64": "0.20.2", + "@esbuild/android-arm": "0.20.2", + "@esbuild/android-arm64": "0.20.2", + "@esbuild/android-x64": "0.20.2", + "@esbuild/darwin-arm64": "0.20.2", + "@esbuild/darwin-x64": "0.20.2", + "@esbuild/freebsd-arm64": "0.20.2", + "@esbuild/freebsd-x64": "0.20.2", + "@esbuild/linux-arm": "0.20.2", + "@esbuild/linux-arm64": "0.20.2", + "@esbuild/linux-ia32": "0.20.2", + "@esbuild/linux-loong64": "0.20.2", + "@esbuild/linux-mips64el": "0.20.2", + "@esbuild/linux-ppc64": "0.20.2", + "@esbuild/linux-riscv64": "0.20.2", + "@esbuild/linux-s390x": "0.20.2", + "@esbuild/linux-x64": "0.20.2", + "@esbuild/netbsd-x64": "0.20.2", + "@esbuild/openbsd-x64": "0.20.2", + "@esbuild/sunos-x64": "0.20.2", + "@esbuild/win32-arm64": "0.20.2", + "@esbuild/win32-ia32": "0.20.2", + "@esbuild/win32-x64": "0.20.2" } }, "node_modules/estree-walker": { @@ -1278,9 +1327,9 @@ "dev": true }, "node_modules/magic-string": { - "version": "0.30.8", - "resolved": "https://registry.npmjs.org/magic-string/-/magic-string-0.30.8.tgz", - "integrity": "sha512-ISQTe55T2ao7XtlAStud6qwYPZjE4GK1S/BeVPus4jrq6JuOnQ00YKQC581RWhR122W7msZV263KzVeLoqidyQ==", + "version": "0.30.9", + "resolved": "https://registry.npmjs.org/magic-string/-/magic-string-0.30.9.tgz", + "integrity": "sha512-S1+hd+dIrC8EZqKyT9DstTH/0Z+f76kmmvZnkfQVmOpDEF9iVgdYif3Q/pIWHmCoo59bQVGW0kVL3e2nl+9+Sw==", "dev": true, "dependencies": { "@jridgewell/sourcemap-codec": "^1.4.15" @@ -1295,6 +1344,11 @@ "integrity": "sha512-1I+1qpDt4idfgLQG+BNWmrqku+7/2bi5nLf4YwF8y8zXvmfiTBY3PV3ZibfrjBueCByROpuBjLLFCajqkgYoLQ==", "dev": true }, + "node_modules/medium-zoom": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/medium-zoom/-/medium-zoom-1.1.0.tgz", + "integrity": "sha512-ewyDsp7k4InCUp3jRmwHBRFGyjBimKps/AJLjRSox+2q/2H4p/PNpQf+pwONWlJiOudkBXtbdmVbFjqyybfTmQ==" + }, "node_modules/minisearch": { "version": "6.3.0", "resolved": "https://registry.npmjs.org/minisearch/-/minisearch-6.3.0.tgz", @@ -1338,9 +1392,9 @@ "dev": true }, "node_modules/postcss": { - "version": "8.4.35", - "resolved": "https://registry.npmjs.org/postcss/-/postcss-8.4.35.tgz", - "integrity": "sha512-u5U8qYpBCpN13BsiEB0CbR1Hhh4Gc0zLFuedrHJKMctHCHAGrMdG0PRM/KErzAL3CU6/eckEtmHNB3x6e3c0vA==", + "version": "8.4.38", + "resolved": "https://registry.npmjs.org/postcss/-/postcss-8.4.38.tgz", + "integrity": "sha512-Wglpdk03BSfXkHoQa3b/oulrotAkwrlLDRSOb9D0bN86FdRyE9lppSp33aHNPgBa0JKCoB+drFLZkQoRRYae5A==", "dev": true, "funding": [ { @@ -1359,16 +1413,16 @@ "dependencies": { "nanoid": "^3.3.7", "picocolors": "^1.0.0", - "source-map-js": "^1.0.2" + "source-map-js": "^1.2.0" }, "engines": { "node": "^10 || ^12 || >=14" } }, "node_modules/preact": { - "version": "10.19.6", - "resolved": "https://registry.npmjs.org/preact/-/preact-10.19.6.tgz", - "integrity": "sha512-gympg+T2Z1fG1unB8NH29yHJwnEaCH37Z32diPDku316OTnRPeMbiRV9kTrfZpocXjdfnWuFUl/Mj4BHaf6gnw==", + "version": "10.20.1", + "resolved": "https://registry.npmjs.org/preact/-/preact-10.20.1.tgz", + "integrity": "sha512-JIFjgFg9B2qnOoGiYMVBtrcFxHqn+dNXbq76bVmcaHYJFYR4lW67AOcXgAYQQTDYXDOg/kTZrKPNCdRgJ2UJmw==", "dev": true, "funding": { "type": "opencollective", @@ -1382,9 +1436,9 @@ "dev": true }, "node_modules/rollup": { - "version": "4.12.0", - "resolved": "https://registry.npmjs.org/rollup/-/rollup-4.12.0.tgz", - "integrity": "sha512-wz66wn4t1OHIJw3+XU7mJJQV/2NAfw5OAk6G6Hoo3zcvz/XOfQ52Vgi+AN4Uxoxi0KBBwk2g8zPrTDA4btSB/Q==", + "version": "4.14.0", + "resolved": "https://registry.npmjs.org/rollup/-/rollup-4.14.0.tgz", + "integrity": "sha512-Qe7w62TyawbDzB4yt32R0+AbIo6m1/sqO7UPzFS8Z/ksL5mrfhA0v4CavfdmFav3D+ub4QeAgsGEe84DoWe/nQ==", "dev": true, "dependencies": { "@types/estree": "1.0.5" @@ -1397,19 +1451,21 @@ "npm": ">=8.0.0" }, "optionalDependencies": { - "@rollup/rollup-android-arm-eabi": "4.12.0", - "@rollup/rollup-android-arm64": "4.12.0", - "@rollup/rollup-darwin-arm64": "4.12.0", - "@rollup/rollup-darwin-x64": "4.12.0", - "@rollup/rollup-linux-arm-gnueabihf": "4.12.0", - "@rollup/rollup-linux-arm64-gnu": "4.12.0", - "@rollup/rollup-linux-arm64-musl": "4.12.0", - "@rollup/rollup-linux-riscv64-gnu": "4.12.0", - "@rollup/rollup-linux-x64-gnu": "4.12.0", - "@rollup/rollup-linux-x64-musl": "4.12.0", - "@rollup/rollup-win32-arm64-msvc": "4.12.0", - "@rollup/rollup-win32-ia32-msvc": "4.12.0", - "@rollup/rollup-win32-x64-msvc": "4.12.0", + "@rollup/rollup-android-arm-eabi": "4.14.0", + "@rollup/rollup-android-arm64": "4.14.0", + "@rollup/rollup-darwin-arm64": "4.14.0", + "@rollup/rollup-darwin-x64": "4.14.0", + "@rollup/rollup-linux-arm-gnueabihf": "4.14.0", + "@rollup/rollup-linux-arm64-gnu": "4.14.0", + "@rollup/rollup-linux-arm64-musl": "4.14.0", + "@rollup/rollup-linux-powerpc64le-gnu": "4.14.0", + "@rollup/rollup-linux-riscv64-gnu": "4.14.0", + "@rollup/rollup-linux-s390x-gnu": "4.14.0", + "@rollup/rollup-linux-x64-gnu": "4.14.0", + "@rollup/rollup-linux-x64-musl": "4.14.0", + "@rollup/rollup-win32-arm64-msvc": "4.14.0", + "@rollup/rollup-win32-ia32-msvc": "4.14.0", + "@rollup/rollup-win32-x64-msvc": "4.14.0", "fsevents": "~2.3.2" } }, @@ -1421,18 +1477,18 @@ "peer": true }, "node_modules/shiki": { - "version": "1.1.7", - "resolved": "https://registry.npmjs.org/shiki/-/shiki-1.1.7.tgz", - "integrity": "sha512-9kUTMjZtcPH3i7vHunA6EraTPpPOITYTdA5uMrvsJRexktqP0s7P3s9HVK80b4pP42FRVe03D7fT3NmJv2yYhw==", + "version": "1.2.4", + "resolved": "https://registry.npmjs.org/shiki/-/shiki-1.2.4.tgz", + "integrity": "sha512-Q9n9jKiOjJCRPztA9POn3/uZXNySHDNKAsPNpmtHDcFyi6ZQhx5vQKZW3Nhrwn8TWW3RudSRk66zqY603EZDeg==", "dev": true, "dependencies": { - "@shikijs/core": "1.1.7" + "@shikijs/core": "1.2.4" } }, "node_modules/source-map-js": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/source-map-js/-/source-map-js-1.0.2.tgz", - "integrity": "sha512-R0XvVJ9WusLiqTCEiGCmICCMplcCkIwwR11mOSD9CR5u+IXYdiseeEuXCVAjS54zqwkLcPNnmU4OeJ6tUrWhDw==", + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/source-map-js/-/source-map-js-1.2.0.tgz", + "integrity": "sha512-itJW8lvSA0TXEphiRoawsCksnlf8SyvmFzIhltqAHluXd88pkCd+cXJVHTDwdCr0IzwptSm035IHQktUu1QUMg==", "dev": true, "engines": { "node": ">=0.10.0" @@ -1454,14 +1510,14 @@ "dev": true }, "node_modules/vite": { - "version": "5.1.4", - "resolved": "https://registry.npmjs.org/vite/-/vite-5.1.4.tgz", - "integrity": "sha512-n+MPqzq+d9nMVTKyewqw6kSt+R3CkvF9QAKY8obiQn8g1fwTscKxyfaYnC632HtBXAQGc1Yjomphwn1dtwGAHg==", + "version": "5.2.8", + "resolved": "https://registry.npmjs.org/vite/-/vite-5.2.8.tgz", + "integrity": "sha512-OyZR+c1CE8yeHw5V5t59aXsUPPVTHMDjEZz8MgguLL/Q7NblxhZUlTu9xSPqlsUO/y+X7dlU05jdhvyycD55DA==", "dev": true, "dependencies": { - "esbuild": "^0.19.3", - "postcss": "^8.4.35", - "rollup": "^4.2.0" + "esbuild": "^0.20.1", + "postcss": "^8.4.38", + "rollup": "^4.13.0" }, "bin": { "vite": "bin/vite.js" @@ -1509,33 +1565,33 @@ } }, "node_modules/vitepress": { - "version": "1.0.0-rc.44", - "resolved": "https://registry.npmjs.org/vitepress/-/vitepress-1.0.0-rc.44.tgz", - "integrity": "sha512-tO5taxGI7fSpBK1D8zrZTyJJERlyU9nnt0jHSt3fywfq3VKn977Hg0wUuTkEmwXlFYwuW26+6+3xorf4nD3XvA==", + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/vitepress/-/vitepress-1.0.2.tgz", + "integrity": "sha512-bEj9yTEdWyewJFOhEREZF+mXuAgOq27etuJZT6DZSp+J3XpQstXMJc5piSVwhZBtuj8OfA0iXy+jdP1c71KMYQ==", "dev": true, "dependencies": { - "@docsearch/css": "^3.5.2", - "@docsearch/js": "^3.5.2", - "@shikijs/core": "^1.1.5", - "@shikijs/transformers": "^1.1.5", + "@docsearch/css": "^3.6.0", + "@docsearch/js": "^3.6.0", + "@shikijs/core": "^1.2.0", + "@shikijs/transformers": "^1.2.0", "@types/markdown-it": "^13.0.7", "@vitejs/plugin-vue": "^5.0.4", - "@vue/devtools-api": "^7.0.14", - "@vueuse/core": "^10.7.2", - "@vueuse/integrations": "^10.7.2", + "@vue/devtools-api": "^7.0.16", + "@vueuse/core": "^10.9.0", + "@vueuse/integrations": "^10.9.0", "focus-trap": "^7.5.4", "mark.js": "8.11.1", "minisearch": "^6.3.0", - "shiki": "^1.1.5", - "vite": "^5.1.3", - "vue": "^3.4.19" + "shiki": "^1.2.0", + "vite": "^5.2.2", + "vue": "^3.4.21" }, "bin": { "vitepress": "bin/vitepress.js" }, "peerDependencies": { - "markdown-it-mathjax3": "^4.3.2", - "postcss": "^8.4.35" + "markdown-it-mathjax3": "^4", + "postcss": "^8" }, "peerDependenciesMeta": { "markdown-it-mathjax3": { diff --git a/package.json b/package.json index 01f287d..c2c6fc4 100644 --- a/package.json +++ b/package.json @@ -10,6 +10,9 @@ "keywords": [], "license": "UNLICENSED", "devDependencies": { - "vitepress": "^1.0.0-rc.44" + "vitepress": "^1.0.2" + }, + "dependencies": { + "medium-zoom": "^1.1.0" } } diff --git a/src/de/changelog.md b/src/de/changelog.md new file mode 100644 index 0000000..344df26 --- /dev/null +++ b/src/de/changelog.md @@ -0,0 +1,13 @@ +--- +outline: deep +--- + +# Changelog + +| Version | Datum | Codename | +| ------- | ---- | -------- | +| [v1.0](./v1.0 "v1.0") | XX-2024 | Decurion | + +## Codename Schema + +Einheiten bei der Römischen Armee, siehe [hier](https://en.wikipedia.org/wiki/List_of_Roman_army_unit_types "Einheiten der römischen Armee") als Referenz. diff --git a/src/de/communities.md b/src/de/communities.md new file mode 100644 index 0000000..15a9038 --- /dev/null +++ b/src/de/communities.md @@ -0,0 +1,120 @@ +--- +outline: deep +--- + +# Communities + +## Community erstellen + +Du kannst jederzeit deine eigene Community erstellen indem du auf das `+` Symbol neben deinem Avatar klickst und **Community erstellen** auswählst. + +![Community erstellen](../images/communities/create-community.webp "Community erstellen") + +Eine Community erstellst du in vier einfachen Schritten. Alles, was du hier einstellst, kann später geändert werden. + +Zuerst wähle einen Anzeigenamen und ein Clan-Tag für deine Community. Der Name sollte 50 oder weniger Unicode-Zeichen enthalten. Das Clan-Tag ist auf 10 Zeichen limitiert. In der Regel wird der Anzeigename verwendet um deine Community zu identifizieren. + +Der nächste Schritt ist das Erstellen des Logos deiner Community. Die ideale Größe beträgt 256x256 Pixel aber falls du hineinzoomen möchtest dann solltest du ein höher aufgelöstes Bild verwenden. Siehe [Logo](#logo) für weitere Informationen zur Anpassung deines Logos. + +Nun kannst du die Grundfarbe deiner Community wählen. Transparente Teile deines Logos werden mit dieser Farbe gefüllt. Sie wird außerdem an verschiedenen Stellen verwendet wie z.B. als Hintergrundfarbe auf der Community-Profilseite oder als Community-Farbe um Mitglieder verschiedener Communities innerhalb einer Slotliste zu unterscheiden. + +Der letzte Schritt ist das auswählen/bestätigen deines Community-Handle. Dieser ist eine aus max. 32 Web-freundlichen Zeichen bestehende Zeichenkette die überwiegend in URLs verwendet wird. Halte das Handle einfach und kurz. Da diese Zeichenkette einmalig sein muss, werden wir dich informieren falls sie bereits von einer anderen Community verwendet wird. + +![Workflow Community erstellen](../images/communities/create-community-workflow.webp "Workflow Community erstellen") + +Schlussendlich wirst du auf die Profilseite deiner Community weitergeleitet. Hier kannst du alles ändern, eine Vorstellung hinzufügen und deine Community verwalten. Ein Einladungs-Link wird automatisch für dich erstellt um ihn mit deinen Community-Mitgliedern zu teilen. Siehe [Mitglieder einladen](#mitglieder-einladen) für weitere Informationen zu Mitgliedereinladungen. + +> [!IMPORTANT] +> Du brauchst eine Einladung (Link) um einer Community beizutreten. Es gibt keinen anderen Weg für den Beitritt. + +![Gerade erstellte Community](../images/communities/fresh-community.webp "Gerade erstellte Community") + +## Mitglieder einladen + +![Überblick Einladungen](../images/communities/invites-overview.webp "Überblick Einladungen") + +Spieler können deiner Community nur mit einer gültigen Einladung betreten. Eine Einladung ist ein Link, kombiniert mit einem Ablaufdatum und einer Höchstanzahl an Verwendungen. Standardmäßig ist eine Einladung für 7 Tage gültig und unbegrenzt nutzbar. Du kannst diese Einstellungen ändern durch klicken auf **Einladungs-Link bearbeiten** in dem Fenster das erscheint wenn du auf **+ Einladung erstellen** klickst. + +![Einladungs-Links bearbeiten](../images/communities/edit-invite-links.webp "Einladungs-Links bearbeiten") + +Die verbleibende Zeit und die Anzahl der Verwendungen wird in der Einladungsübersicht angezeigt. Über das Drei-Punkte-Symbol kannst du das plattformabhängige **Teilen**-Menü öffnen, eine aktive Einladung **löschen** oder **Link kopieren** benutzen. Außerdem kannst du den Link schnell kopieren indem du auf den Einladungs-Code klickst. + +Sende nun den erstellten Link über deine bevorzugte Methode an deine Community-Mitglieder. Das Format eines Einladungslinks ist stets `https://arma.events/i/[EINLADUNGS-CODE]` also z.B. `https://arma.events/i/1YOtETcO` + +Der Empfänger muss nur die URL öffnen, sich per Steam SSO einloggen und die Einladung akzeptieren. + +![Einladung benutzen](../images/communities/use-invite.webp "Einladung benutzen") + +## Community löschen + +Du kannst deine Community einfach löschen indem du in den Einstellungen deiner Community auf **Community löschen** klickst. Du erhältst eine Warnung bevor die Löschung durchgeführt wird. Um eine Community löschen zu können benötigst du Admin-Rechte. Beachte folgende Konsequenzen: + +- Die Mitgliedschaft für alle Mitglieder wird widerrufen. +- Events dieser Community werden gelöscht. +- Einladungen für diese Community werden storniert. +- Für diese Community reservierte Slots werden geöffnet. + +![Community löschen](../images/communities/delete-community.webp "Community löschen") + +## Community-Einstellungen bearbeiten + +Du kannst über den Punkt **Communities** in deinem Avatar-Menü auf die Communities, deren Mitglied du bist, zugreifen. + +![Auf Communities zugreifen](../images/communities/access-communities.webp "Auf Communities zugreifen") + +Du wirst auf die Communities-Liste in deinem Benutzerprofil weitergeleitet. Hier kannst du die Community auswählen, die du verwalten möchtest. + +![Community-Liste](../images/communities/communities-list.webp "Community-Liste") + +Auf der Community-Profilseite kannst du Mitglieder suchen/verwalten, Events einsehen und deine Community verwalten. + +> [!IMPORTANT] +> Du benötigst Admin-Rechte um Mitglieder, Events und die Community-Einstellungen zu verwalten. + +![Community verwalten](../images/communities/manage-community.webp "Community verwalten") + +### Mitglieder + +Im Mitglieder-Tab kannst du nach Mitgliedern in der Mitgliederliste suchen, einem Mitglied Admin-Rechte erteilen/entziehen oder ein Mitglied aus der Community entfernen. Nur Admins können Mitglieder oder andere Admins entfernen. Nur Admins können Mitglieder zu Admins befördern. Wenn du eine Community erstellst, wirst du automatisch der erste Admin. Jeder Admin hat ein Kronensymbol direkt neben seinem Namen. Siehe [Rollen](#rollen) für weitere Informationen. + +### Rollen + +| Rolle | Beschreibung | +| ----- | ------------ | +| Jedermann | Standardrolle für alle **arma-events** Benutzer. Jeder kann deine Community- und Benutzer-Profilseiten sowie alle öffentlich einsehbaren Events sehen. | +| Gast | Gäste (einzelne Benutzer oder ganze Communities) können Events fremder Communities Events beitreten. Muss in den Event-Einstellungen festgelegt werden. Gäste sehen diese Events auf der Startseite unter **Meine Events**. | +| Mitglied | Standardrolle für alle Mitglieder einer Community. Mitglieder können Events erstellen, Events beitreten und die Community verlassen. | +| Autor | Wenn du ein Event erstellt hast, order als Co-Autor eingeladen wurdest dann kannst du dieses bestimmte Event verwalten. | +| Admin | Admins können die Community löschen, die Community-Einstellungen ändern, Mitglieder und Admins entfernen aus der Community entfernen, alle Community-Events verwalten, Community-Einladungen verwalten und Admin-Rechte gewähren oder zurückziehen. | + +### Events + +Im Events-Tab befindet sich eine Liste der vergangenen und anstehenden Community Events für den direkten Zugriff. + +![Community Events](../images/communities/community-events.webp "Community Events") + +### Benennung + +Lege den **Anzeigename** deiner Community auf eine beliebige Zeichenkette fest, die nicht länger als 50 Unicode-Zeichen ist. Der Anzeigename wird die meiste Zeit auf **arma.events** genutzt um deine Community zu identifizieren. Mehrere Communities können denselben Namen tragen. + +Der **Handle** ist eine Zeichenkette mit 32 oder weniger web-sicheren Zeichen, die einmalig auf unserer Plattform sein müssen. Die Verfügbarkeit des Handle wird bei jeder Änderung geprüft. Der Handle wird überwiegend in URLs verwendet. In allen anderen Fällen wird der Anzeigename genutzt. + +Der **Clan-Tag** deiner Community ist eine Zeichenkette mit 10 oder weniger Zeichen. Aktuell wird der Clan-Tag noch nicht verwendet aber in der Zukunft. + +![Community-Benennung](../images/communities/community-naming.webp "Community-Benennung") + +### Vorstellung + +Die Community-Vorstellung ist ein 280 Zeichen umfassendes Textfeld. Nutze es um deine Community Nicht-Mitgliedern vorzustellen, die deine Community Seite auf **arma.events** besuchen. + +### Logo + +Verschiedene Bilddateiformate werden unterstützt. Du kannst in dein Bild mit dem **Scrollrad** deiner Maus hineinzoomen und dein Bild verschieben während du die **linke Maustaste** gedrückt hältst. Meist wird das Logo in einem Kreis dargestellt jedoch ist es auf der Community-Profilseite ein Quadrat. Wir speichern dein Bild mit einer Auflösung von 256x256 Pixeln. Die Verwendung von niedrig aufgelösten Bildern oder das Hineinzoomen kann zu einem verwaschenen Bild führen. + +![Community-Logo](../images/communities/community-logo.webp "Community-Logo") + +### Farbe + +Du kannst eine Basisfarbe für deine Community festlegen. Sie kommt in verschiedenen Fällen als Hintergrundfarbe zum Tragen wie z.B. für Events ohne ein Hauptbild oder auf der Community-Profilseite. Eine angepasste Version der Hintergrundfarbe mit einem höheren Kontrast wird als Hintergrund für das Clan-Tag verwendet. Helle Farben werden dabei heller und dunkle Farben dunkler. Behalte dies im Hinterkopf und wähle eine Hintergrundfarbe die am Besten zu deinen Bedürfnissen passt. + +![Community-Farben](../images/communities/community-colors.webp "Community-Farben") diff --git a/src/de/contribution.md b/src/de/contribution.md new file mode 100644 index 0000000..eb35981 --- /dev/null +++ b/src/de/contribution.md @@ -0,0 +1,7 @@ +--- +outline: deep +--- + +# Mitwirkung + +**arma.events** ist ein Closed-Source-Projekt. Dies mag sich in der Zukunft ändern. Jedoch bedeutet dies nicht, dass es aktuell keinen weg der Mitwirkung gäbe. Bitte tritt mit uns über [Discord](https://discord.gg/b2aABzh8xJ "Discord-Einladung") in Verbindung und wir werden sehen ob und wie deine beabsichtigte Mitwirkung sinnvoll ist. Dies könnte alles Mögliche sein von Vorschlägen über Programmierung, Übersetzung und Meldung von Sicherheitsproblemen bis hin zur projektübergreifenden Zusammenarbeit. diff --git a/src/de/events.md b/src/de/events.md new file mode 100644 index 0000000..5214860 --- /dev/null +++ b/src/de/events.md @@ -0,0 +1,100 @@ +--- +outline: deep +--- + +# Events + +## Event erstellen + +Du kannst jederzeit ein Event für deine Community erstellen indem du das `+` Symbol neben deinem Avatar anklickst und **Event erstellen** auswählst. + +![Event erstellen](../images/events/create-event.webp "Event erstellen") + +Ein Community-Event zu erstellen benötigt nur 4 einfache Schritte. Alles, was du hier einstellst, mit Ausnahme des gewählten Spiels, kann später geändert werden. + +Wähle zuerst das Spiel aus, das in dem Event gespielt wird. Aktuell werden **Arma 3** und **Arma Reforger** unterstützt. Nach Veröffentlichung wird diese Liste auch **Arma 4** umfassen. + +Wähle als nächstes die Community für dein Event. Du kannst aus einer Liste aller Communities wählen deren Mitglied du bist. + +> [!IMPORTANT] +> Jedes Event is mit einer existierenden Community verbunden. Du kannst keine Events ohne diese Verbindung erstellen. Wenn du nicht Teil einer Community bist dann erstelle dir zuerst eine Eigene. + +Nun wähle einen Event-Titel oder generiere einen Zufallstitel durch klicken auf das Würfel-Symbol. + +> [!CAUTION] +> Die Länge des Event-Titels ist aktuell nicht beschränkt. Bitte beschränke dich auf eine Länge von weniger als 32 Unicode-Zeichen. + +Der letzte Schritt ist die Auswahl von Datum und Uhrzeit, an der dein Event beginnt. Du kannst Datum und Uhrzeit manuell angeben oder den plattformabhängigen Dialog für Datum und Uhrzeit verwenden, um den Start deines Events festzulegen. Du kannst kein vergangenes Datum oder vergangene Uhrzeit wählen. + +![Assistent Event erstellen](../images/events/create-event-workflow.webp "Assistent Event erstellen") + +Nach Abschluss des Assistenten befindet sich dein Event im **Entwurfsstatus**. Nun kannst du die Details deines Events festlegen. Im Entwurfsstatus wird dein Event nicht gelistet oder ist irgendwo sichtbar. Nur Autoren können auf das Event zugreifen. + +Du kannst jederzeit deinen Entwurf schließen durch klicken auf die `X` Schaltfläche oder dein Event veröffentlichen durch klicken auf die **Veröffentlichen** Schaltfläche. Dadurch verlässt dein Event den Entwurfsstatus und ist für alle **arma.events** Benutzer und insbesondere für deine Community und für deine Gäste sichtbar. + +Speichere deine Änderungen durch klicken auf die **Entwurf speichern** Schaltfläche und schau dir deine Änderungen im Vorschaumodus an durch klicken auf die **Vorschau** Schaltfläche. + +![Preview-Wechsel](../images/events/preview-toggle.webp "Preview-Wechsel") + +### Event-Details + +Der von dir angegebene **Event-Name** wurde während des Event-Erstellungsprozesses verwendet um ein **Event-Handle** zu erzeugen, das auf min. 5 und max. 32 Web-freundliche Zeichen begrenzt ist. Beides kann geändert werden aber der Event-Handle muss einmalig sein. Du bekommst bei jedem Änderungsversuch ein Feedback über die Verfügbarkeit des Event-Handle. + +Die **Zusammenfassung** ist eine max. 280 Unicode-Zeichen lange Beschreibung deines Events. Sie wird in Übersichten verwendet ist aber in der Detailansicht deines Events nicht sichtbar. + +Jedes Event kann einen oder mehrere **Autoren** haben. Nur Autoren und Admins können die Event-Einstellungen ändern/verwalten. Füge weitere Autoren durch anklicken der `+` Schaltfläche hinzu oder entferne existierende Autoren, dich selbst eingeschlossen, indem du mit der Maus über den Avatar eines Autors fährst und das Mülleimer-Symbol anklickst. + +Standardmäßig können nur Mitglieder deiner Community an deinem Event teilnehmen aber du kannst weitere **Communities** erlauben/einladen indem du auf das Community-Ausklappmenü klickst und die Schaltfläche **Community hinzufügen** anwählst. Du erhältst ein Suchfeld um nach der einzuladenden Community zu suchen. Mitglieder einer Gast-Community können genauso wie deine eigentlichen Community-Mitglieder an dem Event teilnehmen. + +Wenn das gewählte Spiel DLCs unterstützt, wie z.B. bei Arma 3, dann kannst du einige oder alle davon als verpflichtend für das Event deklarieren, indem du auf das **benötigte DLCs** Ausklappmenü klickst. Nur zahlungspflichtige DLCs werden hier gelistet. Zum Beispiel wird der Arma 3 Zeus DLC nicht aufgeführt, da er kostenlos ist. + +**Datum & Uhrzeit** für den Start deines Events kann im entsprechenden Ausklappmenü geändert werden. Wähle ein Datum, das in der Zukunft liegt. + +Es ist eine gute Idee ein **Bild** als Teaser hinzuzufügen. Lässt du das Bild leer dann wird der Bereich mit der benutzerdefinierten Hintergrundfarbe deiner Community gefüllt. + +Außerdem kannst du **Tags** zur Organisation deines Events hinzufügen. Zukünftig werden Tags für die Schnellsuche verwendet. + +![Event-Details](../images/events/event-details.webp "Event-Details") + +### Block-Editor + +Schlussendlich erlaubt dir der Block-Editor dein Event-Briefing oder sonstige Art von Beschreibung oder Dokumentation hinzuzufügen, die du zusammen mit deinem kürzlich angelegten Event zur Verfügung stellen willst. + +Erstelle Text- und Bildblöcke durch anklicken der entsprechenden Schaltflächen **Text hinzufügen** und **Bild hinzufügen**. Die Schaltflächen sind sind nur vor der Erstellung deines ersten Blocks sichtbar. Später erscheinen diese Schaltflächen wenn du mit der Maus über den Kopf- oder Fußbereich eines existierenden Blocks fährst. Du kannst so viele Blöcke erstellen wie du möchtest. Nutze das Vier-Punkte-Symbol um die Blöcke zu verschieben und ihre Reihenfolge zu ändern. + + + +Du kannst für jeden Block entscheiden ob er standardmäßig ein- oder ausgeklappt sein soll. Auf diese Weise kannst du detailliertere Informationen verbergen und nur die wichtigsten Blöcke anzeigen. Der Nutzer kann jeden Block ein- oder ausklappen während er die Event-Dokumentation liest. + +Jeder Block besteht aus einem Überschrifts- und einem Inhaltsteil. Die Benutzung der Überschrift ist optional. + +#### Textblöcke + +In seinem Inhaltsteil unterstützt der Textblock Markdown als Auszeichnungssprache und erlaubt damit die Verwendung von Überschriften, Listen, Links, Bildern, Textattributen und vielem mehr. Sieh dir den [Markdown](./markdown "Markdown") Artikel für weitere Informationen an. + +Während der Bearbeitung ist der Textblock in seiner Größe veränderlich, jedoch wird seine Größe in der Vorschau und bei der Veröffentlichung automatisch an die Größe des Inhalts angepasst. + +![Textblock](../images/events/text-block.webp "Textblock") + +#### Bildblöcke + +Bildblöcke erlauben dir ein oder mehrere Bilder einzubetten. Du kannst für jeden Bild separat einen Bildtitel festlegen. + +> [!IMPORTANT] +> Das gleichzeitige Hochladen mehrerer Bilder wird aktuell nicht unterstützt. Lade deine Bilder einzeln hoch. + +![Bildblock](../images/events/image-block.webp "Bildblock") + +Du kannst die Reihenfolge deiner Bilder innerhalb eines Bildblocks verändern. + + + +## Slotliste verwalten + +WIP + +## Event löschen + +Du kannst dein Event einfach löschen indem du auf die Schaltfläche **Event löschen** klickst. Aus Sicherheitsgründen musst du deine Absicht das Event zu löschen noch einmal bestätigen. + +![Event löschen](../images/events/delete-event.webp "Event löschen") diff --git a/src/de/faq.md b/src/de/faq.md new file mode 100644 index 0000000..8dca0a4 --- /dev/null +++ b/src/de/faq.md @@ -0,0 +1,29 @@ +--- +outline: deep +--- + +# Häufig gestellte Fragen (FAQ) + +## Welche Features habt ihr bereits geplant? + +Du findest eine Liste aller geplanten Dinge, zu deren Umsetzung wir noch nicht gekommen sind, auf unserer [Roadmap](./roadmap "Roadmap"). + +## Wird es einen dunklen Modus geben? + +Natürlich! Wir haben (nahezu) alles vorbereitet um weitere Themes unterstützen zu können, aber im Moment möchten wir uns auf das Hinzufügen neuer Features konzentrieren ohne uns Sorgen machen zu müssen wie sie in anderen Farben aussehen. + +## Wird es eine Discord-Integration von **arma.events** geben? + +Ja! Wir planen die Entwicklung eines raffinierten Discord-Bots, der sich mit den geplanten Events bei Discord integriert und möglicherweise sogar erlaubt direkt in Discord an Events teilzunehmen. + +## Kann ich Daten aus **arma.events** in mein eigenes Forum oder meine eigene Software integrieren? + +Wir planen die Möglichkeit der Erzeugung von Zugangs-Token zu unserer API, um dir die Integration von Daten aus deiner **arma.events** Community per GraphSQL API und Webhooks in deine eigene Webseite, dein eigenes Forum oder deinen eigenen Discord-Bot zu erlauben. + +## Wird die Nutzung von **arma.events** kostenpflichtig sein? + +Obwohl wir noch ein ganzes Stück davon entfernt sind (und sich dies daher noch ändern kann), sieht die aktuelle Planung vor zukünftig ein kleines, monatliches Abo für Communities zu einem sehr niedrigen Preis (<5€) anzubieten, um unsere Serverkosten zu decken. Da wir die typischen Freemium-Angebote genauso sehr hassen wie du, werden im Abo nur Features enthalten sein, die Nice-To-Have sind, wie z.B. Community-weite Vorlagen für Events / Slotlisten / Slotlisten-Einheiten usw., jedoch keine zwingend notwendigen Features. Unser Ziel für Communities ist, dass du nicht für ein Abo zahlen musst, um genauso gut **arma.events** nutzen zu können, wie dies zahlende Communities tun, abgesehen von ein paar fehlenden Quality-Of-Life Features. + +## Wird **arma.events** Open-Source sein? + +Wir sind große Unterstützer von Open-Source, aber **arma.events** wird in naher Zukunft nicht Open-Source. Da eines unserer größten Ziele die Förderung der Zusammenarbeit zwischen Communities ist, wird **arma.events** nur glänzen können wenn viele Communities dieselbe Plattform nutzen. Daher wollen wir sicherstellen, dass es nur eine Plattform gibt und nicht eine Plattform pro Community. Davon abgesehen: Es gibt viele, kleine Open-Source Projekte und Bibliotheken, die aus der Entwicklung von **arma.events** hervorgegangen sind und viele weitere werden wahrscheinlich folgen. diff --git a/src/de/feedback.md b/src/de/feedback.md new file mode 100644 index 0000000..4ce197c --- /dev/null +++ b/src/de/feedback.md @@ -0,0 +1,7 @@ +--- +outline: deep +--- + +# Feedback + +Falls du irgendwelches Feedback für uns hast um **arma.events** zu verbessern, dann sei so frei und besuche uns auf [Discord](https://discord.gg/b2aABzh8xJ "Discord Einladung"). Lass uns wissen, was aus deiner Sicht gut oder schlecht ist oder hilf uns durch deine Vorschläge. diff --git a/src/de/index.md b/src/de/index.md new file mode 100644 index 0000000..bd31768 --- /dev/null +++ b/src/de/index.md @@ -0,0 +1,42 @@ +--- + +cSpell: disable + +# https://vitepress.dev/reference/default-theme-home-page +layout: home + +hero: + name: "docs.arma.events" + text: "Slotlisten einfach erstellt" + tagline: Bleibe mit deinen Community Events organisiert + image: + src: /landing-page-image.webp + alt: arma.events ORBAT slotlist + actions: + - theme: brand + text: Überblick + link: /de/overview + - theme: brand + text: Benutzer + link: /de/users + - theme: brand + text: Communities + link: /de/communities + - theme: brand + text: Events + link: /de/events + - theme: alt + text: Markdown + link: /de/markdown + - theme: alt + text: Slotliste + link: /de/slotlist + +features: + - title: Eventerstellung + details: Briefe dein Team mit unserem WYSIWYG Block Editor, lade Karten und Bilder hoch und erstelle schöne ORBAT Slotlisten. + - title: Multi-Community-Events + details: Lade andere Communities ein mit dir zu spielen. Teile individuelle Slots oder ganze Teams mit ihnen um sich einzuslotten. + - title: Steam SSO + details: Logge dich einfach mit Steam ein und du bist startklar. Es wird kein zusätzlicher Account benötigt. +--- \ No newline at end of file diff --git a/src/de/markdown.md b/src/de/markdown.md new file mode 100644 index 0000000..fed94db --- /dev/null +++ b/src/de/markdown.md @@ -0,0 +1,109 @@ +--- +outline: deep +--- + +# Markdown + +Markdown ist eine einfach Textauszeichnungssprache um formatierten Text und strukturierte Dokumente zu erstellen. **arma.events** unterstützt Markdown zur Strukturierung der Event-Texte. Die Benutzung von Markdown ist vollständig optional. Du kannst einfach deine Texte schreiben und sie durch Erstellung separater Textboxen mit Überschriften strukturieren, ohne dabei Markdown zu verwenden. Wenn du beabsichtigst Markdown zu verwenden, dann sieh dir die folgende Liste unterstützter Textauszeichnungen an. + +![Markdown vs. Kein Markdown](../images/markdown/markdown-vs-no-markdown.webp "Markdown vs. Kein Markdown") + +## Absätze und Zeilenumbrüche + +Jedes Return in deinem Text erzeugt einen manuellen Zeilenumbruch. Jede leere Zeile erzeugt einen neuen Absatz. + +![Absätze und Zeilenumbrüche](../images/markdown/paragraphs-and-line-breaks.webp "Absätze und Zeilenumbrüche") + +## Überschriften + +Mit der #-basierenden Schreibweise kannst du bis zu 4 Abstufungen für Überschriften erzeugen. Mit `=====` und `-----` lassen sich nur 2 Abstufungen erzeugen. + +![Überschriften](../images/markdown/headlines.webp "Überschriften") + +![Überschriften - Alternative Schreibweise](../images/markdown/alt-headlines.webp "Überschriften - Alternative Schreibweise") + +## Textauszeichnungen + +\**kursiv*\* or \kursiv\_ (Alternative Schreibweise) + +\*\***fett**\*\* or \_\___fett__\_\_ (Alternative Schreibweise) + +\*\*\****fett kursiv***\*\*\* oder \_\_\____fett kursiv___\_\_\_ (Alternative Schreibweise) + +\``Nichtproportional`\` + +\~\~~~durchgestrichen~~\~\~ + +![Textauszeichnungen](../images/markdown/text-attributes.webp "Textauszeichnungen") + +![Textauszeichnungen - Alternative Schreibweise](../images/markdown/alt-text-attributes.webp "Textauszeichnungen - Alternative Schreibweise") + +## Horizontale Linie + +Mit drei Strichen `---` kannst du eine horizontale Linie erzeugen. Um Formatierungsprobleme zu vermeiden, setze eine Leerzeile über und unter der horizontalen Linie. + +![Horizontale Linie](../images/markdown/horizontal-rule.webp "Horizontale Linie") + +## Unsortierte Listen + +Füge zwei Leerzeichen vor deinem Listenelement ein um es einzurücken. Du kannst `-`,`+` oder `*` als Listensymbol verwenden. + +![Unsortierte Listen](../images/markdown/unsorted-lists.webp "Unsortierte Listen") + +![Unsortierte Listen - Alternative Schreibweise 1](../images/markdown/alt-unsorted-lists.webp "Unsortierte Listen - Alternative Schreibweise 1") + +![Unsortierte Listen - Alternative Schreibweise 2](../images/markdown/alt2-unsorted-lists.webp "Unsortierte Listen - Alternative Schreibweise 2") + +## Sortierte Listen + +Füge zwei Leerzeichen vor deinem Listenelement ein um es einzurücken. + +![Sortierte Listen](../images/markdown/sorted-lists.webp "Sortierte Listen") + +## Links + +Format `[VERLINKTER TEXT] (URL "MOUSEOVER-TEXT")` + +![Links](../images/markdown/links.webp "Links") + +## Bilder + +Format `![ALTERNATIVER TEXT] (URL "MOUSEOVER-TEXT")` + +![Bilder](../images/markdown/images.webp "Bilder") + +## Autolinks and E-Mail-Adressen + +Umschließe deine URL or E-Mail-Adresse mit `<` und `>` um einen automatischen Link mit dem URI als Link-Text zu erzeugen. + +![Autolinks](../images/markdown/autolinks.webp "Autolinks") + +## Code-Block + +Beginne jede Zeile mit ` ` 4 Leerzeichen um einen Code-Block zu erzeugen. Alternativ umschließe den Text mit ` ``` ` um einen Code-Block zu erzeugen. Syntax-Highlighting wird nicht unterstützt. + +![Code-Block](../images/markdown/code-block.webp "Code-Block") + +![Code-Block Alternative](../images/markdown/alt-code-block.webp "Code-Block Alternative") + +## Zitat-Block + +Beginne jede Zeile or deinen Absatz mit `>` und einem ` ` Leerzeichen um einen Zitat-Block zu erstellen. + +![Zitat-Block](../images/markdown/blockquote.webp "Zitat-Block") + +## Warnungen + +Markdown Warnungen werden wie Zitat-Blöcke erzeugt, jedoch enthält die erste Zeile ein Schlüsselwort wie `[!NOTE]` oder `[!WARNING]`. + +![Warnungen 1](../images/markdown/alerts-1.webp "Warnungen 1") + +![Warnungen 2](../images/markdown/alerts-2.webp "Warnungen 2") + +![Warnungen 3](../images/markdown/alerts-3.webp "Warnungen 3") + +## Markdown Zeichen maskieren + +Wenn du Markdown Zeichen wie normalen Text behandelt wissen möchtest dann musst du diese Zeichen mit dem `\` Prefix maskieren. + +![Maskierung](../images/markdown/escaping.webp "Maskierung") diff --git a/src/de/overview.md b/src/de/overview.md new file mode 100644 index 0000000..8c6cffa --- /dev/null +++ b/src/de/overview.md @@ -0,0 +1,37 @@ +--- +outline: deep +--- + +# Überblick + +## Globale Suchleiste + +Auf unsere globale Suchleiste kann auf jeder Seite ganz oben zugegriffen werden. Darin kannst du nach Events, Communities und Benutzern suchen. + +![Globale Suchleiste](../images/overview/global-search-bar.webp "Globale Suchleiste") + +Während des Tippens erhältst du schnelle Suchergebnisse. Du kannst diese Ergebnisse direkt **filtern**, auf die **Ergebnisse** zugreifen oder dir die **vollständige Suchergebnisseite** anzeigen lassen. + +![Schnelle Suchergebnisse](../images/overview/quick-search-results.webp "Schnelle Suchergebnisse") + +Die vollständige Suchergebnisseite erlaubt dir Zugriff auf **alle Suchergebnisse** und erlaubt dir zudem die **Filterung** der Ergebnisse für Events, Communities und Benutzer. Diese Ergebnisse haben eine detailliertere Vorschau als die schnellen Suchergebnisse. Klicke auf ein Suchergebnis um direkt zur entsprechenden Seite zu gelangen. + +![Vollständige Suchergebnisse](../images/overview/full-search-results.webp "Vollständige Suchergebnisse") + +## Benutzerprofilseiten + +Jeder Benutzer hat eine global sichtbare Profilseite, die den Avatar, den Anzeigenamen und den Handle des Nutzers sowie eine Liste der Communities, deren Mitglied der Benutzer ist, und eine Liste der Events, an deren der Benutzer teilgenommen hat oder von denen er Autor war, enthält. You kannst direkt auf die Communities oder Events über diese Listen zugreifen. Siehe [Benutzer](./users "Benutzer") für weitere Details. + +![Benutzerprofilseite](../images/overview/user-profile-page.webp "Benutzerprofilseite") + +## Community-Profilseite + +Jede Community hat eine global sichtbare Profilseite, die das Logo, den Namen, das Clan-Tag, die Mitgliederanzahl und eine Vorstellung sowie eine durchsuchbare Liste aller Mitglieder (inklusive Avatar, Name, Handle und einem Kronensymbol falls das Mitglied ein Administrator dieser Community ist) und Listen der vergangenen und zukünftigen Events enthält. Du kannst direkt auf die Benutzer (WIP) oder Events über diese Listen Zugreifen. Siehe [Communities](./communities "Communities") für weitere Details. + +![CommunityProfilseite](../images/overview/community-profile-page.webp "CommunityProfilseite") + +## Event-Seiten + +Jedes Event, falls es nicht auf privat gesetzt wurde, hat eine global sichtbare Profilseite, die den Namen, das Teaser-Bild, Startdatum und Uhrzeit, die gastgebende Community und Gast-Communities, eine Liste der Autoren, das Spiel und die benötigten DLCs, Tags, die Slotliste (WIP) und möglicherweise mehrere Text- und Bildboxen enthält, die das Event-Briefing darstellen. Siehe [Events](./events "Events") für weitere Details. + +![Event-Seite](../images/overview/event-profile-page.webp "Event-Seite") diff --git a/src/de/roadmap.md b/src/de/roadmap.md new file mode 100644 index 0000000..e68a5e0 --- /dev/null +++ b/src/de/roadmap.md @@ -0,0 +1,37 @@ +--- +outline: deep +--- + +# Roadmap + +## Event-Kommentare + +Chatte über dein Event. Sammle Screenshots und verlinke Videos. + +## Benachrichtigungen + +Sende Erinnerungen an deine Event-Teilnehmer und bleibe auf dem Laufenden bei Events zu denen du eingeladen wurdest. + +## Private Events + +Deaktiviere die öffentliche Sichtbarkeit deiner Events, damit sie nur von deiner Community gesehen werden können. + +## Slot-Management + +Automatische Entsperrung von Slots über Zeit oder nachdem ein Grenzwert erreicht wurde. Manuelle Sperrung für einzelne Spieler oder Gruppen. + +## Discord-Support + +Automatische Discord Events, Erinnerungen, synchronisierte Posts und möglicherweise Event-Teilnahme. + +## Missionsauswertung + +Sammle Missionsrückmeldungen und erhalte Statistiken über Mitgliederaktivität, Rollenwahl und mehr. + +## Rollenmanagement + +Sperre Slots für individuelle Rollen, verwalte deine Rollen und Ränge innerhalb deiner Community. + +## Integrierte Karten + +Füge interaktive Karten zu deinem Briefing hinzu. Visualisiere Objectives direkt in deinem Browser. diff --git a/src/de/slotlist.md b/src/de/slotlist.md new file mode 100644 index 0000000..3d87d12 --- /dev/null +++ b/src/de/slotlist.md @@ -0,0 +1,79 @@ +--- +outline: deep +--- + +# Slotliste + +![Slotliste Überblick](../images/slotlist/slotlist-overview.webp "Slotliste Überblick") + +Jede neue Slotliste beginnt mit einer Fraktion und einer darin enthaltenen Kompanie. Dies ist das benötige Minimum. Solang du keinen Namen für die Dummy-Fraktion oder die Dummy-Kompanie vergibst werden sie in der Slotliste versteckt. Du kannst die Dummy-Fraktion und die Dummy-Kompanie nicht verschieben. Sie sind stets die letzten Elemente. Die Dummy-Fraktion und die Dummy-Kompanie werden durch eine graue Überschrift gekennzeichnet. Alle anderen Fraktionen und Kompanien sind lösch- und verschiebbar. + +Jede Änderung innerhalb des Slotlist-Editors lässt sich **rückgängig machen oder wiederherstellen**. Die Historie hat ein Limit von 20 Schritten. Du kannst **weitere Fraktionen, Kompanien und Gruppen hinzufügen** durch anklicken der `+` Schaltfläche. Du kannst bei Fraktionen, Kompanien innerhalb von Fraktionen, Gruppen innerhalb von Kompanien und Gruppen innerhalb von Gruppen die **Reihefolge ändern** indem du den Vier-Punkte-Anfasser verwendest. Solang die **Namen** nicht gesetzt sind (graue Überschrift), bleiben sie in der endgültigen Slotliste versteckt. Jede runde `+` Schaltfläche in der Slotliste zeigt eine Position an, wo **Spieler-Slots** hinzugefügt werden können. + +## Organisationseinheiten + +| OU | Elternelement | Kindelemente | Slots | Eigenschaften | Charakteristiken | +| --- | ------ | -------- | ----- | ---------- | --------------- | +| Fraktion* | keins | Kompanie | nein | Farbe, Name | Parteien, die Teil des Konflikts sind, wie OPFOR, BLUFOR, Independant | +| Kompanie* | Fraktion | Gruppe oder Slot | ja | Name, Symbol | Höchste Organisationseinheit innerhalb einer Fraktion; kann Kompanie, Zug, Gruppe, Trupp oder Sonstiges sein | +| Gruppe** | Kompanie oder Gruppe | Gruppe oder Slot | ja | Name, Symbol | Kleinere/Mittlere Organisationseinheit; kann weitere Gruppen beinhalten; kann Zug, Gruppe, Trupp oder Sonstiges sein | +| Trupp | Gruppe | Slot | ja | keine | Kleinste Organisationseinheit | +| Slot | Kompanie, Gruppe oder Trupp | keine | nein | Name | Der Slot des Spielers | + +\**Es gibt stets eine Dummy-Fraktion und eine Dummy-Kompanie* + +\*\**Zur deutschen Übersetzung: Gruppe meint hier nicht ausschließlich die militärische Einheit sondern ist ein Überbegriff für verschiedene Einheitstypen, einschließlich einer militärischen Gruppe, könnte also auch mit 'Einheit' übersetzt werden* + +## Fraktionen, Kompanien, Gruppen erstellen + +Du kannst Fraktionen, Kompanien und Gruppen durch klicken auf die quadratische `+` Schaltfläche in der unteren Menüleiste und anschließendem ziehen auf eine der durch einen grauen Balken markierten, möglichen Ablagefläche erstellen. Die aktuell aktive Ablagefläche wird größer und die Farbe ändert sich zu einem dunkleren Grau, um die aktuelle Auswahl anzuzeigen. Du kannst Gruppen innerhalb von Gruppen erstellen. + + + +## Slots erstellen + +Slots werden durch einmaliges oder mehrfaches Klicken auf die runde `+` Schaltfläche erzeugt. Es gibt keine natürliche Slot-Begrenzung aber organisiere dich mit deiner Slotliste, indem du nicht zu große Einheiten erstellst. Der erste Slot innerhalb einer Kompanie oder innerhalb einer Gruppe ist stets ein Führungs-Slot. Der Avatar ist größer und der Standardname ist **CL** (Company Lead = Kompanieführung) oder **SQL** (Squad Lead = Gruppenführer). Du kannst die Slot-Namen später anpassen. Der erste Slot innerhalb eines Trupps heißt **FTL** (Fireteam Lead = Truppführer) aber der Avatar wird nicht vergrößert. + + + +## Trupps erstellen + +Trupps sind ein Spezialfall bei den Einheiten. Du kannst den ersten Trupp nur innerhalb einer Gruppe durch Ziehen eines existierenden Slots auf die untere Ablagefläche erstellen. Eine Gruppe kann sich in mehrere Trupps aufteilen. Erstelle weitere Trupps durch klicken auf die Drei-Punkte-Schaltfläche. + + + +## Fraktionen, Kompanien, Gruppen verschieben + +Du kannst Fraktionen, Kompanien und Gruppen mithilfe des Vier-Punkte-Anfassers verschieben. Graue Ablageflächen zeigen gültige Positionen an, an die du Elemente verschieben kannst. Die aktuell ausgewählte Ablagefläche wird dunkler und größer als die nicht Ausgewählten dargestellt. + + + +## Slots verschieben + +Du kannst Slots per Drag-And-Drop auf die hervorgehobenen Ablagezonen verschieben. Die aktuell ausgewählte Ablagezone wird dunkler und größer als die nicht Ausgewählten dargestellt. + + + +> [!IMPORTANT] +> Du kannst Trupps nicht verschieben. Wenn du einen Trupp verschieben willst, musst du die einzelnen Slots durchwechseln. + +## Fraktionen, Kompanien, Gruppen umbenennen + +WIP + +## Slots umbenennen + +WIP + +## Fraktionen, Kompanien, Gruppen löschen + +Du kannst Fraktionen, Kompanien und Gruppen per Drag-And-Drop auf das Mülleimersymbol löschen. Kindelemente werden dadurch auch gelöscht. Wenn du zum Beispiel eine Fraktion löschst, dann werden alle Kompanien und Gruppen innerhalb dieser Fraktion gleichermaßen gelöscht. + + + +## Slots löschen + +WIP + +> [!IMPORTANT] +> Du kannst keine Trupps löschen. Wenn du einen Trupp löschen möchtest dann musst du seine Slots löschen. diff --git a/src/de/support.md b/src/de/support.md new file mode 100644 index 0000000..882b79a --- /dev/null +++ b/src/de/support.md @@ -0,0 +1,11 @@ +--- +outline: deep +--- + +# Support + +Wenn du auf irgendwelche Schwierigkeiten bei der Benutzung von **arma.events** stößt oder wenn du irgendwelche Fragen, Vorschläge oder Angebote hast, dann zögere nicht uns zu kontaktieren und wir werden versuchen dein Problem zu lösen, deine Fragen beantworten, deine Vorschläge diskutieren und deine Angebote prüfen. + +Die einfachste Methode ist unserem [Discord](https://discord.gg/b2aABzh8xJ "Discord Einladung") Server beizutreten. Du kannst jedoch auch über [X](https://x.com/arma_events "arma.events auf X") mit uns in Kontakt treten. + +Obwohl es möglich ist Kommentare unter unseren Videos auf [YouTube](https://www.youtube.com/@arma.events "YouTube-Kanal") zu hinterlassen, solltest du jedoch keine sehr schnellen Reaktionen erwarten. diff --git a/src/de/team.md b/src/de/team.md new file mode 100644 index 0000000..e0bca43 --- /dev/null +++ b/src/de/team.md @@ -0,0 +1,34 @@ +--- +outline: deep +cSpell: disable +--- + +# Team + +## Concept + + [nomisum](https://github.com/nomisum "nomisum") + + [DerZade](https://github.com/derzade "DerZade") + +## Frontend + + [DerZade](https://github.com/derzade "DerZade") + + [RednecksRevenge](https://github.com/rednecksrevenge "RednecksRevenge") + +## Backend + + [TheWillard](https://github.com/thewillard "TheWillard") + + [DerZade](https://github.com/derzade "DerZade") + +## Artwork & Design + + [nomisum](https://github.com/nomisum "nomisum") + +## QA & Docs + + [y0014984](https://github.com/y0014984 "y0014984") + + [Gelir95](https://github.com/gelir95 "Gelir95") diff --git a/src/de/tech-stack.md b/src/de/tech-stack.md new file mode 100644 index 0000000..99aedf9 --- /dev/null +++ b/src/de/tech-stack.md @@ -0,0 +1,5 @@ +--- +outline: deep +--- + +# Tech-Stack diff --git a/src/de/users.md b/src/de/users.md new file mode 100644 index 0000000..a31109d --- /dev/null +++ b/src/de/users.md @@ -0,0 +1,63 @@ +--- +outline: deep +--- + +# Benutzer + +## Per Steam SSO einloggen + +Es ist sehr wahrscheinlich, dass jeder Spieler, der unsere Plattform nutzen möchte, einen Steam Account hat. Aus diesem Grund entschieden wir uns Accounts auf **arma.events** mit dem Steam Account des Spielers zu verknüpfen. Du musst dich nur mit deinem Steam Account einloggen. Das ist alles, was nötig ist. Aktuell gibt es keine Möglichkeit einen Account basierend auf Benutzername und Passwort zu erzeugen. Steam kümmert sich für uns um den Login-Vorgang. Wir können weder dein Passwort sehen noch auf deinen Steam Account zugreifen. + +## Account erstellen + +Es braucht nur drei einfache Assistent-geführte Schritte, um einen **arma.events** Benutzer-Account zu erstellen. Als Erstes log dich mit deinem bestehenden Steam Account ein. Du wirst automatisch zu Steam und wieder zurück geleitet während dieses Vorgangs. Als Zweites bestätige oder ändere deinen Anzeigenamen. Als Drittes wähle deinen Avatar oder lass ihn leer. + +![Account erstellen](../images/users/create-account.webp "Account erstellen") + +Das war's. Du bist nun erfolgreich bei **arma.events** mit deinem Steam Account eingeloggt. Du kannst alles später in deinen Profileinstellungen ändern. Nun kannst du deine eigene Community erstellen oder deinen Community Manager bitten dir eine Einladung für deine Community zu senden. Als Mitglied einer Community kannst du an Events dieser Community teilnehmen. Siehe [Communities](./communities "Communities") für weitere Informationen. + +![Benutzerprofil](../images/users/user-profile.webp "Benutzerprofil") + +## Account löschen + +***WIP*** + +## Benutzerprofil bearbeiten + +### Avatar + +Zahlreiche Bilddateiformate werden unterstützt. Du kannst mithilfe des **Scrollrades** deiner Maus in das Bild hineinzoomen und es bewegen während du die **linke Maustaste** gedrückt hältst. Der Avatar wird stets in einem Kreis dargestellt. Wir speichern dein Bild mit einer Auflösung von 256x256 Pixeln. Die Verwendung von niedrig aufgelösten Bildern oder das Hineinzoomen können zu einem verschwommenen Bild führen. + +![Avatar](../images/users/avatar.webp "Avatar") + +### Benennung + +Der **Anzeigename** und der **Handle** sind meistens identisch nach dem ersten Login. Nicht erlaubte sind Zeichen werden im Handle entfernt oder ersetzt und die Länge wird begrenzt. Beide, der Anzeigename und der Handle, können später unabhängig voneinander geändert werden. + +Nutze eine beliebige Zeichenkette für deinen **Anzeigenamen**, die kleiner gleich 50 Unicode-Zeichen ist. Der Anzeigename ist derjenige der die meiste Zeit auf **arma.events** zur Anzeige kommt. Mehrere Benutzer können den identischen Anzeigenamen haben. + +Der **Handle** ist eine auf unserer Plattform einmalige Zeichenkette bestehend aus 32 oder weniger Web-freundlichen Zeichen. Die Verfügbarkeit des Handles wird bei jedem Änderungsversuch geprüft. Der Handle wird überwiegend in URLs genutzt. In allen sonstigen Fällen wird der Anzeigename verwendet. + +![Benennung](../images/users/naming.webp "Benennung") + +### Communities + +Dein Benutzerprofil enthält eine Liste aller Communities, deren Mitglied du bist. Du kannst diesen Überblick verwenden um zu einer Community zu springen oder über das Drei-Punkte-Kontextmenü Communities zu verlassen, deren Mitglied du nicht mehr sein möchtest. + +Bedenke, dass die Community gelöscht wird, falls du das einzige/letzte Mitglied bist. Falls noch andere Mitglieder vorhanden sind aber du der einzige Administrator dieser Community bist, dann musst du deine Admin-Rechte vor der Löschung auf ein anderes Mitglied übertragen. Siehe [Communities](./communities "Communities") für weitere Informationen zum Community-Management. + +![Sessions](../images/users/user-profile-communities-overview.webp "Sessions") + +### Sessions + +Das Session-Management ist ein Sicherheits-Feature. Es listet alle aktiven Browser-Sessions auf deinen Geräten. Fühl dich frei alle Sessions, die du nicht mehr benötigst, oder alle Sessions gleichzeitig zu löschen/widerrufen. Eine widerrufene Session bedeutet, dass du dich auf der bestimmten Gerät-Browser-Kombination erneut einloggen musst. + +![Sessions](../images/users/sessions.webp "Sessions") + +### Spiele und DLCs + +In deinem Profil kannst du definieren welche Spiele du besitzt. Aktuell unterstützt werden **Arma 3** und **Arma Reforger**. Wenn veröffentlicht wird auch **Arma 4** hinzugefügt. Kontaktiere unseren [Support](./support "Support") wenn du daran interessiert bist weitere Spiele hinzuzufügen. Falls das Spiel DLCs unterstützt dann gib bitte zusätzlich an, welche du davon besitzt. + +Die in deinem Besitz befindlichen DLCs werden gegen die vom Missionsersteller für ein bestimmtes Event festgelegten DLC-Anforderungen abgeglichen. Im Falle eines fehlenden DLCs erhältst du eine Warnung. + +![Spiele und DLCs](../images/users/games-and-dlcs.webp "Spiele und DLCs") diff --git a/src/de/v1.0.md b/src/de/v1.0.md new file mode 100644 index 0000000..f261d56 --- /dev/null +++ b/src/de/v1.0.md @@ -0,0 +1,31 @@ +--- +outline: deep +--- + +# v1.0 "Decurion" XX-2024 + +Initialer Release und kleinstes, realisierbares Produkt (MVP = Minimum Viable Product) + +- Benutzerverwaltung + - Steam SSO + - Benutzerprofil + - Spiele und DLCs +- Community-Management + - Mitgliedereinladungen + - Community-Profil + - Admin-Rechte erteilen/entziehen + - Rollen- und Rechteverwaltung (FEHLEND) +- Event-Management + - Multi-Community-Events (FEHLEND) + - ORBAT Slotliste (WIP) + - Markdown-Briefings + - Missionsattribute (WIP) + - Multi-Autoren-Bearbeitung + +- WIP + - ORBAT Slotliste + - Missionsattribute (DLC-Anforderungen hinzufügen, Missionsdatum/-uhrzeit und weitere Attribute wie Mods, Gameserver und vieles mehr.) + +- FEHLEND + - Multi-Community-Events (Erlaube das Slotting für einzelne Slots oder ganze Gruppen) + - Rollen- und Rechteverwaltung (Zeige die Struktur deiner Community an und weise entsprechende Rechte zu.) diff --git a/src/en/changelog.md b/src/en/changelog.md new file mode 100644 index 0000000..867790d --- /dev/null +++ b/src/en/changelog.md @@ -0,0 +1,13 @@ +--- +outline: deep +--- + +# Changelog + +| Version | Date | Codename | +| ------- | ---- | -------- | +| [v1.0](./v1.0 "v1.0") | XX-2024 | Decurion | + +## Codename Scheme + +Roman army unit types, see [here](https://en.wikipedia.org/wiki/List_of_Roman_army_unit_types "Roman Army Unit Types") for reference. diff --git a/src/en/communities.md b/src/en/communities.md new file mode 100644 index 0000000..8aaeff4 --- /dev/null +++ b/src/en/communities.md @@ -0,0 +1,120 @@ +--- +outline: deep +--- + +# Communities + +## Create Community + +You can create your own community at any time by pressing the `+` symbol next to your profile avatar and selecting **Create Community**. + +![Create Community](../images/communities/create-community.webp "Create Community") + +Creating a community is done in four simple steps. Everything you setup here can be changed later. + +First choose a display name and a tag for your community. The name should contain 50 or less unicode characters. The tag is limited to 10 characters. The display name is used most of the time to identify your community. + +Next step is to set the logo of your community. The perfect size is 256x256 pixel but if you want to zoom in then you should use an image with higher resolution. See [Logo](#logo) for more information about logo modifications. + +Now you choose the base color of the community. Transparent parts of your logo will be filled with this color. It is also used in various other places like the community profile page as the background color or as a community color to distinguish members of multiple communities within the slotlist feature. + +The last step is to setup/confirm the handle of your community. This is a max. 32 web-friendly characters long string that is mostly used in URLs. Keep the handle short and easy. Because this string needs to be unique we will tell you if it is already used by another community. + +![Create Community Workflow](../images/communities/create-community-workflow.webp "Create Community Workflow") + +Finally, you will be redirected to the profile page of your community. Here you can change everything, add an introduction and manage your community. An invitation link is automatically created for you to share with your community members. See [Invite Members](#invite-members) for more information about member invitations. + +> [!IMPORTANT] +> You need an invitation (link) to join a community. There is no other way of joining. + +![Fresh Community](../images/communities/fresh-community.webp "Fresh Community") + +## Invite Members + +![Invites Overview](../images/communities/invites-overview.webp "Invites Overview") + +Players can join your community only with a valid invitation. An invitation is a link combined with an expiration time and a max number of uses. By default the invitation is valid for 7 days and with an unlimited number of uses. You can change these settings by pressing **Edit invite link** in the window that pops up when you hit the **+ Create Invite** button. + +![Edit Invite Links](../images/communities/edit-invite-links.webp "Edit Invite Links") + +The remaining time and the number of uses is reported in the invites overview. You can open a platform dependent **Share** menu, **Delete** an active invitation or use **Copy Link** via the three dots symbol. You can also quick copy the link to your clipboard by clicking on the invite code. + +Now send the created link to your community members via your preferred sharing method. The format of invitation links is always `https://arma.events/i/[INVITE-CODE]` like for example `https://arma.events/i/1YOtETcO` + +The recipient only needs to open the URL, login via Steam SSO and accept the invite. + +![Use Invite](../images/communities/use-invite.webp "Use Invite") + +## Delete Community + +You can simply delete your community by hitting the **Delete Community** button in the settings of your community. You will get a warning before the deletion will take affect. You need admin rights to delete a community. Keep these consequences in mind: + +- Membership for all members will be revoked. +- Events of this community will be deleted. +- Invites for this community will be cancelled. +- Slots reserved for this community will be opened. + +![Delete Community](../images/communities/delete-community.webp "Delete Community") + +## Edit Community Settings + +You can access the communities you are member of by choosing **Communities** from your avatar menu. + +![Access Communities](../images/communities/access-communities.webp "Access Communities") + +You will be redirected to the communities list in your user profile. Here you can select the community you want to manage. + +![Communities List](../images/communities/communities-list.webp "Communities List") + +On the community profile page you can search/manage members, see events and manage your community. + +> [!IMPORTANT] +> You need admin rights to manage members, events and community settings. + +![Manage Community](../images/communities/manage-community.webp "Manage Community") + +### Members + +In the members tab you can search for members in the members list, grant/revoke admin rights to a member or remove a member from the community. Only admins can remove members or other admins. Only admins can promote members to admins. If you create a community you are automatically the first admin. Every admin has a crown symbol right next to his name. See [Roles](#roles) for more information. + +### Roles + +| Role | Description | +| ---- | ---------- | +| Everybody | Default role for all **arma-events** users. Everybody can see your community or user profile page and all your publicly visible events. | +| Guest | Guests (single users or whole communities) can join events of foreign communities. Needs to be configured in event settings. Guests see these events on the landing page under **My Events**. | +| Member | Default role for all members of a community. Members can create events, join events and leave the community. | +| Author | If you created an event or have been invited for co-authoring then you can manage this specific event. | +| Admin | Admins can delete the community, change community settings, remove members and admins from community, manage all community events, manage community invitations and grant or revoke admin rights. | + +### Events + +In the events tab you get lists of your past and upcoming community events for direct access. + +![Community Events](../images/communities/community-events.webp "Community Events") + +### Naming + +Set the **display name** of your community to any string that is less or equal 50 unicode characters. The display name is used on **arma.events** most of the time to identify your Community. Multiple communities can share the same display name. + +The **handle** is a string with 32 or less web-safe characters that has to be unique on our platform. The availability of the handle is checked every time you try to change it. The handle is mostly used in URLs. In all other cases the display name is shown. + +The **tag** of your community is a string that is 10 or less characters long. It's currently not used but will be in the future. + +![Community Naming](../images/communities/community-naming.webp "Community Naming") + +### Description + +The community description is a 280 characters long text field. Use it to introduce your community to non-members who visit your community page on **arma.events**. + +### Logo + +Various image file formats are supported. You can zoom into your image with the **scroll wheel** of your mouse and move the image while holding the **left mouse button**. The logo is mostly displayed in a circle but on your community profile page it's a square. We store your image with a resolution of 256x256 pixels. Using a very low-res image or zooming in can lead to a blurry image. + +![Community Logo](../images/communities/community-logo.webp "Community Logo") + +### Color + +You can define a base color for your community. It is used in various cases as a background color like for events without that have no main image or on the community profile page. A modified version of your background color with a higher text contrast is used as a background for the community tag. Light colors will get lighter and dark colors will get darker. Keep that in mind and choose a background color that fits best your needs. + +![Community Colors](../images/communities/community-colors.webp "Community Colors") diff --git a/src/en/contribution.md b/src/en/contribution.md new file mode 100644 index 0000000..efb5551 --- /dev/null +++ b/src/en/contribution.md @@ -0,0 +1,7 @@ +--- +outline: deep +--- + +# Contribution + +**arma.events** is a closed source product. This might change in the future. But that doesn't mean that there is currently no way to contribute. Please get in touch with us via [Discord](https://discord.gg/b2aABzh8xJ "Discord invite") and we will see if and how your planned contribution makes any sense. This could be anything from suggestions to code contribution, translation, reporting security issues or collaboration across projects. diff --git a/src/en/events.md b/src/en/events.md new file mode 100644 index 0000000..5fd1acd --- /dev/null +++ b/src/en/events.md @@ -0,0 +1,100 @@ +--- +outline: deep +--- + +# Events + +## Create Event + +You can create an event for your community at any time by pressing the `+` symbol next to your profile avatar and selecting **Create Event**. + +![Create Event](../images/events/create-event.webp "Create Event") + +Creating a community event is done in four simple steps. Everything you setup here can be changed later except the chosen game. + +First select the game that is played in the event. Currently supported is **Arma 3** and **Arma Reforger**. When released this list will be expanded to include **Arma 4**. + +Next select the community for the event. You get a list of all communities you are member of to choose from. + +> [!IMPORTANT] +> Every event is linked to an existing community. You can't create events without that connection. If you are not part of any community then create your own community first. + +Now choose an event title or generate a title randomly by pressing the dice icon. + +> [!CAUTION] +> Event title length currently not restricted. Please keep the length shorter then 32 unicode characters. + +The last step is to choose a date and time for your event to start. You can setup date and time manually or use the platform dependant date and time dialog to choose the start of your event. You can't choose a date and time that is in the past. + +![Create Event Workflow](../images/events/create-event-workflow.webp "Create Event Workflow") + +After finishing the workflow your event is in **draft** state. Now you can setup your event details. While in draft state the event is not listed or visible anywhere. Only the authors can access the event. + +You can close your draft any time by pressing the `X` button or publish your event by pressing the **Publish** button. By that your event leaves the draft state and is visible to all **arma.events** users and especially to your community and your guests. + +Save your changes by pressing the **Save Draft** button and see your changes in preview mode by pressing the **Preview** button. + +![Preview Toggle](../images/events/preview-toggle.webp "Preview Toggle") + +### Event Details + +Your given **event name** was used in the event creation process to create an **event handle** that is restricted to min. 5 and max. 32 web-friendly characters. Both can be changed but the event handle needs to be unique. You will get a feedback if the chosen name is available every time you try to change it. + +The **summary** is a max. 280 unicode characters long description of your event. It's used in overviews but not in the detailed view of your event. + +Every event can have one or more **authors**. Only authors and admins can change/manage the event settings. Add more authors by pressing the `+` button or remove existing authors including yourself by hovering with the mouse over the avatar image of an author and pressing the trash can icon. + +By default only members of your community can join your event but you can allow/invite more **communities** by clicking on the communities fold-out menu and hitting the **Add Community** button. You will get a search field to search for the community you want to invite. Guest community members can join your events like your origin community members. + +If the chosen game supports DLCs like for example Arma 3 then you can set some or all of them as required for this event by clicking on the **required DLCs** fold-out menu. Only DLCs that need to be purchased will be listed here. For example the Arma 3 Zeus DLC is not listed here because it's free. + +The **date & time** your event starts can be changed in the according fold-out menu. Choose a date that is in the future. + +It's a good choice to add a teaser **image**. If you leave the image blank then the space is filled with the custom background color of your community. + +You can also add **tags** to organize your event. In the future tags will be used as quick search terms. + +![Event Details](../images/events/event-details.webp "Event Details") + +### Block Editor + +The Block Editor finally allows you to create your event briefing or any kind of description or documentation that you want to provide with your newly created event. + +Create text blocks and image blocks by pressing the corresponding buttons **Add Text** and **Add Image**. The buttons are only visible before creating your first block. Later these buttons appear if you hover with your Mouse over the the top or bottom area of an existing block. You can create as much blocks as you want. Use the four dots symbol to move the blocks around and change their order. + + + +For every block you can decide to collapse or expand it by default. That way you can hide more detailed information and only show the most significant blocks. The user can expand or collapse every block while reading through the event documentation. + +Every block consists of a heading part and a content part. Using the heading is completely optional. + +#### Text Blocks + +The text block supports Markdown as a markup language in it's content part which enables you to use headlines, lists, links, images, text attributes and many more. See the [Markdown](./markdown "Markdown") article for more information. + +The Text block ist resizable while editing but will automatically adjust it's size in preview and when published based on it's content. + +![Text Block](../images/events/text-block.webp "Text Block") + +#### Image Blocks + +Image blocks allow you to embed one or more images. You can setup an image title for every image separately. + +> [!IMPORTANT] +> Multi-Image upload is currently not supported. Upload your images separately. + +![Image Block](../images/events/image-block.webp "Image Block") + +You can change the order of your images inside the image block. + + + +## Manage Slotlist + +WIP + +## Delete Event + +You can simply delete your event by pressing the **Delete Event** button. For security reasons you must confirm your intention to delete the event. + +![Delete Event](../images/events/delete-event.webp "Delete Event") diff --git a/src/en/faq.md b/src/en/faq.md new file mode 100644 index 0000000..eec4032 --- /dev/null +++ b/src/en/faq.md @@ -0,0 +1,29 @@ +--- +outline: deep +--- + +# Frequently Asked Questions (FAQ) + +## What features do you have planned already? + +You can find a list of things we've planned on our [roadmap](./roadmap "Roadmap"), but haven't come around to implement. + +## Will there be a dark theme? + +Of course! We have (almost) everything in place to support adding other themes, but for now we want to focus on adding features without worrying about how they look with different colors. + +## Will there be a Discord integration of **arma.events**? + +Yes! We plan to develop a sophisticated Discord bot that integrates with Discord's Scheduled Events and may even allow you to participate in events directly in Discord. + +## Can I integrate **arma.events** data into my own forum / software? + +We plan to add the ability to generate access tokens for our API, to allow you to integrate data from your **arma.events** community via our GraphQL API and webhooks into your own website, forum or discord bot. + +## Will the use of **arma.events** cost money? + +Although we are still a long way off (and therefore this is still subject to change), we are currently planning to offer a small monthly subscription for communities at a very low price (<$5) to cover our server costs. Since we probably hate the typical freemium offers as much as you do, this will only include features that are "nice-to-have" but absolutely no "must-haves", such as community-wide presets for events / slotlists / slotlist units, etc. Our goal for communities is that you do not pay for the subscription to be able to use **arma.events** just as well as communities that do pay, albeit with some missing quality-of-life features. + +## Will **arma.events** be open source? + +We are big supporters of open source, but **arma.events** won't be open sourced in the near future. Since one of our biggest goals is to encourage collaboration between communities, **arma.events** only really comes to shine when many communities are on the same platform. So we want to make sure that there is one platform and not one platform per community. That being said: There are many small open source projects and libraries that have sprung from the development of **arma.events**, and many more are likely to follow. diff --git a/src/en/feedback.md b/src/en/feedback.md new file mode 100644 index 0000000..a2c0ab1 --- /dev/null +++ b/src/en/feedback.md @@ -0,0 +1,7 @@ +--- +outline: deep +--- + +# Feedback + +If you have any feedback for us to improve **arma.events** then feel free to join our [Discord](https://discord.gg/b2aABzh8xJ "Discord invite"). Let us know what's good or bad from your point of view or help us with your suggestions. diff --git a/src/en/index.md b/src/en/index.md new file mode 100644 index 0000000..97fb5de --- /dev/null +++ b/src/en/index.md @@ -0,0 +1,42 @@ +--- + +cSpell: disable + +# https://vitepress.dev/reference/default-theme-home-page +layout: home + +hero: + name: "docs.arma.events" + text: "Slotlists made easy" + tagline: Keep your community events organized + image: + src: /landing-page-image.webp + alt: arma.events ORBAT slotlist + actions: + - theme: brand + text: Overview + link: /en/overview + - theme: brand + text: Users + link: /en/users + - theme: brand + text: Communities + link: /en/communities + - theme: brand + text: Events + link: /en/events + - theme: alt + text: Markdown + link: /en/markdown + - theme: alt + text: Slotlist + link: /en/slotlist + +features: + - title: Event Creation + details: Brief your team with our WYSIWYG block editor, upload maps and pictures and create a beautiful ORBAT slotlist. + - title: Multi Community Events + details: Invite other communities to play with you. Share individual slots or whole teams for them to sign up to. + - title: Steam SSO + details: Just sign in with Steam and you are ready to go. No additional account needed. +--- \ No newline at end of file diff --git a/src/en/markdown.md b/src/en/markdown.md new file mode 100644 index 0000000..f78418c --- /dev/null +++ b/src/en/markdown.md @@ -0,0 +1,109 @@ +--- +outline: deep +--- + +# Markdown + +Markdown is a plain text lightweight markup language for creating formatted text and structured documents. **arma.events** supports Markdown for structuring your event texts. Using Markdown is completely optional. You can simply write your texts and structure them by creating separate text boxes with headlines and without using Markdown at all. If you intend to use Markdown see the list of the supported text markups below. + +![Markdown vs. No Markdown](../images/markdown/markdown-vs-no-markdown.webp "Markdown vs. No Markdown") + +## Paragraphs and Line Breaks + +Each return in your text will create a manual line break. Each blank line will create a new paragraph. + +![Paragraphs and Line Breaks](../images/markdown/paragraphs-and-line-breaks.webp "Paragraphs and Line Breaks") + +## Heading + +With the #-based syntax you can create up to 4 headline hierarchies. With `=====` and `-----` you can create only 2 hierarchies. + +![Headlines](../images/markdown/headlines.webp "Headlines") + +![Headlines - Alternative Syntax](../images/markdown/alt-headlines.webp "Headlines - Alternative Syntax") + +## Text Attributes + +\**italic*\* or \__italic_\_ (Alternative Syntax) + +\*\***bold**\*\* or \_\___bold__\_\_ (Alternative Syntax) + +\*\*\****bold italic***\*\*\* or \_\_\____bold italic___\_\_\_ (Alternative Syntax) + +\``monospaced`\` + +\~\~~~strikethrough~~\~\~ + +![Text Attributes](../images/markdown/text-attributes.webp "Text Attributes") + +![Text Attributes - Alternative Syntax](../images/markdown/alt-text-attributes.webp "Text Attributes - Alternative Syntax") + +## Horizontal Rule + +With three dashes `---` you can create a horizontal line. Keep a blank line before and after to prevent formatting issues. + +![Horizontal Rule](../images/markdown/horizontal-rule.webp "Horizontal Rule") + +## Unsorted Lists + +Add two blank spaces in front of your list item for intendation. You can use `-`,`+` or `*` as a list sign. + +![Unsorted Lists](../images/markdown/unsorted-lists.webp "Unsorted Lists") + +![Unsorted Lists - Alternative Syntax 1](../images/markdown/alt-unsorted-lists.webp "Unsorted Lists - Alternative Syntax 1") + +![Unsorted Lists - Alternative Syntax 2](../images/markdown/alt2-unsorted-lists.webp "Unsorted Lists - Alternative Syntax 2") + +## Sorted Lists + +Add two blank spaces in front of your list item for intendation. + +![Sorted Lists](../images/markdown/sorted-lists.webp "Sorted Lists") + +## Links + +Format `[LINKED TEXT] (URL "MOUSEOVER TEXT")` + +![Links](../images/markdown/links.webp "Links") + +## Images + +Format `![ALTERNATIVE TEXT] (URL "MOUSEOVER TEXT")` + +![Images](../images/markdown/images.webp "Images") + +## Autolinks and Email Addresses + +Enclose your URL or email address in `<` and `>` to create an automatic link with the URI as the link text. + +![Autolinks](../images/markdown/autolinks.webp "Autolinks") + +## Code Block + +Begin every line with ` ` 4 blank spaces to create a code block. Alternatively, enclose the text in ` ``` ` to create a code block. No support for syntax highlighting. + +![Code Block](../images/markdown/code-block.webp "Code Block") + +![Code Block Alternative](../images/markdown/alt-code-block.webp "Code Block Alternative") + +## Blockquote + +Begin every line or your paragraph with `>` and a ` ` blank space to create a blockquote. + +![Blockquote](../images/markdown/blockquote.webp "Blockquote") + +## Alerts + +Markdown alerts are created like blockquotes but the first line contains a keyword like `[!NOTE]` or `[!WARNING]`. + +![Alerts 1](../images/markdown/alerts-1.webp "Alerts 1") + +![Alerts 2](../images/markdown/alerts-2.webp "Alerts 2") + +![Alerts 3](../images/markdown/alerts-3.webp "Alerts 3") + +## Escape Markdown Characters + +If you want to treat Markdown characters as normal text then you can escape these characters with the `\` prefix. + +![Escaping](../images/markdown/escaping.webp "Escaping") diff --git a/src/en/overview.md b/src/en/overview.md new file mode 100644 index 0000000..9f88e0e --- /dev/null +++ b/src/en/overview.md @@ -0,0 +1,37 @@ +--- +outline: deep +--- + +# Overview + +## Global Search Bar + +Our global search bar is accessible on every page on the very top. There you can search for events, communities and users. + +![Global Search Bar](../images/overview/global-search-bar.webp "Global Search Bar") + +While typing you get quick search results. You can **filter** the results directly, access the **results** or go to the **full results page**. + +![Quick Search Results](../images/overview/quick-search-results.webp "Quick Search Results") + +The full search results page gives you access to **all search results** and also allows you to **filter** the results for events, communities or users. These results have a more detailed preview then the quick search results. Click on a result to jump directly to the corresponding page. + +![Full Search Results](../images/overview/full-search-results.webp "Full Search Results") + +## User Profile Pages + +Every user has a globally visible profile page containing the avatar, the display name and the handle of the user as well as a list of communities the user is a member of and lists of the events in which the user took part or of which the user was an author. You can directly access the communities or events from these lists. See [users](./users "Users") for more details. + +![User Profile Page](../images/overview/user-profile-page.webp "User Profile Page") + +## Community Profile Pages + +Every community has a globally visible profile page containing the logo, the name, the tag, the member count and an introduction as well as a searchable list of all members (including avatar, name, handle and a crown symbol if the member is an administrator of this community) and lists of past and upcoming events. You can directly access the users (WIP) or events from these lists. See [communities](./communities "Communities") for more details. + +![Community Profile Page](../images/overview/community-profile-page.webp "Community Profile Page") + +## Event Pages + +Every event if not set to private has a globally visible profile page containing the name, the teaser image, the start date and time, the hosting community and the guest communities, the list of authors, the game and the required DLCs, the tags, the slotlist (WIP) and perhaps multiple text and image boxes containing the event briefing. See [events](./events "Events") for more details. + +![Event Page](../images/overview/event-profile-page.webp "Event Page") diff --git a/src/en/roadmap.md b/src/en/roadmap.md new file mode 100644 index 0000000..6ecd75f --- /dev/null +++ b/src/en/roadmap.md @@ -0,0 +1,37 @@ +--- +outline: deep +--- + +# Roadmap + +## Event Commentary + +Chat about your event. Collect screenshots and link videos. + +## Notifications + +Send reminders for your own event participants and stay on track on events you are invited to. + +## Private Events + +Remove your events from the public eye, only for your community to see. + +## Slots Management + +Automatic unlocking of slots after time or player count reached. Manual locking for individuals or groups. + +## Discord Support + +Automatic Discord events, reminders, synced posts and maybe event attendance. + +## Mission Evaluation + +Collect mission feedback and receive stats about member activity, role picking and more. + +## Role Management + +Lock slots for individual roles, manage your roles and ranks inside your community. + +## Integrated Maps + +Add an interactive map to your briefing. Visualize objectives directly in your browser. diff --git a/src/en/slotlist.md b/src/en/slotlist.md new file mode 100644 index 0000000..d586525 --- /dev/null +++ b/src/en/slotlist.md @@ -0,0 +1,77 @@ +--- +outline: deep +--- + +# Slotlist + +![Slotlist Overview](../images/slotlist/slotlist-overview.webp "Slotlist Overview") + +Every new slotlist starts with a faction and a company in it. This is the required minimum. As long as you do not set the name of the dummy faction and the dummy company they will be hidden in the slotlist. You can't delete the dummy faction and the dummy company or move them around. They are always the last items. The dummy faction and the dummy company are indicated by a grey heading. All other factions and companies are deletable and moveable. + +You can **undo or redo** every change inside the slotlist editor. The history has a limit of 20 steps. You can **add more factions, companies or groups** by pressing the `+` button. You can **change the order** of factions, companies inside factions, groups inside companies and groups inside groups by using the four dots handle. As long as the **names** are not set (grey heading) they will be hidden in the final slotlist. Every round `+` button in the slotlist indicates a position where **player slots** can be added. + +## Organizational Units + +| OU | Parent | Children | Slots | Properties | Characteristics | +| --- | ------ | -------- | ----- | ---------- | --------------- | +| Faction* | none | Company | no | Color, Name | Parties that are part of the conflict like OPFOR, BLUFOR, Independent | +| Company* | Faction | Group or Slot | yes | Name, Symbol | Highest organizational unit in a faction; can be Company, Platoon, Squad, Group or anything else | +| Group | Company or Group | Group or Slot | yes | Name, Symbol | Lower/Middle organizational unit; can host other groups; can be Platoon, Squad, Group or anything else | +| Fireteam | Group | Slot | yes | none | Smallest organizational unit | +| Slot | Company, Group or Fireteam | none | no | Name | The player's slot | + +\**There is always one dummy faction and one dummy company* + +## Create Factions, Companies, Groups + +You can create factions, companies and groups by clicking the square `+` button in the lower menu bar and then dragging and dropping the dedicated item onto one of the possible drop zones indicated by a grey bar. The currently active drop zone gets bigger and the color changes to a darker grey to indicate current selection. You can create groups inside of groups. + + + +## Create Slots + +Slots are created by pressing the round `+` symbol one or multiple times. There is no natural slot limit but keep your slotlist organized by creating not too big units. The first slot in a company or in a group is always a leader slot. The avatar is bigger and the default name is **CL** (Company Lead) or **SQL** (Squad Lead). You can change the slot names later. The first slot inside a fireteam is called **FTL** (Fireteam Lead) but the avatar size is not increased. + + + +## Create Fireteams + +Fireteams are a special type of unit. You can create the first fireteam only inside of a group by dragging an existing slot onto the bottom drop zone. One group can divide into multiple fireteams. Create additional fireteams by clicking on the three dots symbol. + + + +## Move Factions, Companies, Groups + +You can move factions, companies and groups by using the four dots icons. Grey drop zone bars indicate the valid positions where you can move the items to. The currently selected drop zone is rendered darker and bigger then the not selected ones. + + + +## Move Slots + +You can move slots around by dragging and dropping them onto the highlighted drop zones. The currently selected drop zone is rendered darker and bigger then the not selected ones. + + + +> [!IMPORTANT] +> You can't move fireteams around. If you want to move a fireteam then you need to swap slots. + +## Rename Factions, Companies, Groups + +WIP + +## Rename Slots + +WIP + +## Delete Factions, Companies, Groups + +You can delete factions, companies and groups by dragging and dropping them on the trash can symbol. Child elements will be deleted as well. If you for example delete a faction then all companies and groups in that faction will be deleted accordingly. + + + +## Delete Slots + +WIP + +> [!IMPORTANT] +> You can't delete fireteams. If you want to delete a fireteam then you need to delete it's slots. diff --git a/src/en/support.md b/src/en/support.md new file mode 100644 index 0000000..ff17aa7 --- /dev/null +++ b/src/en/support.md @@ -0,0 +1,11 @@ +--- +outline: deep +--- + +# Support + +If you experience any problems when using **arma.events** or you have any questions, suggestions or offers then please get in touch with us and we will try to fix your issue, answer your question, discuss your suggestion or check your offer. + +The easiest method is to join our [Discord](https://discord.gg/b2aABzh8xJ "Discord invite"). But you can also get in touch with us via [X](https://x.com/arma_events "arma.events on X"). + +While it's possible to leave comments on videos of our [YouTube](https://www.youtube.com/@arma.events "YouTube Channel") channel please don't expect very fast reactions. diff --git a/src/en/team.md b/src/en/team.md new file mode 100644 index 0000000..e0bca43 --- /dev/null +++ b/src/en/team.md @@ -0,0 +1,34 @@ +--- +outline: deep +cSpell: disable +--- + +# Team + +## Concept + + [nomisum](https://github.com/nomisum "nomisum") + + [DerZade](https://github.com/derzade "DerZade") + +## Frontend + + [DerZade](https://github.com/derzade "DerZade") + + [RednecksRevenge](https://github.com/rednecksrevenge "RednecksRevenge") + +## Backend + + [TheWillard](https://github.com/thewillard "TheWillard") + + [DerZade](https://github.com/derzade "DerZade") + +## Artwork & Design + + [nomisum](https://github.com/nomisum "nomisum") + +## QA & Docs + + [y0014984](https://github.com/y0014984 "y0014984") + + [Gelir95](https://github.com/gelir95 "Gelir95") diff --git a/src/en/tech-stack.md b/src/en/tech-stack.md new file mode 100644 index 0000000..9fe4839 --- /dev/null +++ b/src/en/tech-stack.md @@ -0,0 +1,5 @@ +--- +outline: deep +--- + +# Tech Stack diff --git a/src/en/users.md b/src/en/users.md new file mode 100644 index 0000000..9ffd235 --- /dev/null +++ b/src/en/users.md @@ -0,0 +1,63 @@ +--- +outline: deep +--- + +# Users + +## Login with Steam SSO + +It is very likely that every player that wants to use our platform has a Steam account. That is why we decided to link accounts on **arma.events** to the players Steam account. You simply need to login with your Steam account. That's all it takes. There is currently no way to create an account based on email address and password. Steam takes care of the login process for us. We can neither see your password nor access your steam account. + +## Create User Account + +It takes only three simple assistant-driven steps to create an **arma.events** user account. First, login with your existing Steam account. You will be redirected automatically to Steam and back within this process. Second, confirm or change your display name. Third, choose your avatar or leave it blank. + +![Create Account](../images/users/create-account.webp "Create Account") + +That's it. You are now successfully logged into **arma.events** with your Steam account. You can change everything later in your profile settings. Now you can create your own community or ask your community manager to send you an invite to your community. As a member of a community you can join the events of that community. See [Communities](./communities "Communities") for more information. + +![User Profile](../images/users/user-profile.webp "User Profile") + +## Delete User Account + +***WIP*** + +## Edit User Profile + +### Avatar + +Various image file formats are supported. You can zoom into your image with the **scroll wheel** of your mouse and move the image while holding the **left mouse button**. The avatar is always displayed in a circle. We store your image with a resolution of 256x256 pixels. Using a very low-res image or zooming in can lead to a blurry image. + +![Avatar](../images/users/avatar.webp "Avatar") + +### Naming + +The **display name** and the **handle** are mostly identical after first login. Not allowed characters have been removed or replaced in the handle and the length has been limited. Both the display name and the handle can be changed later independently. + +Set your **display name** to any string that is less or equal 50 unicode characters. The display name is the one that is displayed on **arma.events** most of the time. You can share the same display name with other users. + +The **handle** is a string with 32 or less web-safe characters that has to be unique on our platform. The availability of the handle is checked every time you try to change it. The handle is mostly used in URLs. In all other cases the display name is shown. + +![Naming](../images/users/naming.webp "Naming") + +### Communities + +Your user profile contains a list of all communities you are a member of. You can use this overview to quickly jump to the community or to leave the communities you no longer want to be part of by using the 3 dots context menu. + +Keep in mind that the community will be deleted if you are the only/last member. If there are other members but you are the only administrator of this community then you need to transfer your admin rights to another member before deletion. See [communities](./communities "Communities") for more information about community management. + +![Sessions](../images/users/user-profile-communities-overview.webp "Sessions") + +### Sessions + +Session management is a security feature. It lists every active browser session on your devices. Feel free to close/revoke all sessions you no longer need or all sessions at once. A revoked session means that you need to login again on that specific device/browser combination. + +![Sessions](../images/users/sessions.webp "Sessions") + +### Games and DLCs + +In your profile you can setup which games you own. Currently supported are **Arma 3** and **Arma Reforger**. When released **Arma 4** will be added as well. Contact our [Support](./support "Support") if you are interested in adding more games. If the game supports DLCs then please specify which DLCs you own. + +Your owned DLCs will be matched against the DLC requirements that a mission creator has defined for a specific event. In case of a missing DLC you will get a warning. + +![Games and DLCs](../images/users/games-and-dlcs.webp "Games and DLCs") diff --git a/src/en/v1.0.md b/src/en/v1.0.md new file mode 100644 index 0000000..c049c10 --- /dev/null +++ b/src/en/v1.0.md @@ -0,0 +1,32 @@ +--- +outline: deep +--- + +# v1.0 "Decurion" XX-2024 + +Initial Release and Minimum Viable Product (MVP) + +- User Management + - Steam SSO + - User Profile + - Games and DLCs +- Community Management + - Member Invitations + - Community Profile + - Grant/Revoke Admin Rights + - Role and Permission Management (MISSING) +- Event Management + - Multi Community Events (MISSING) + - ORBAT Slotlist (WIP) + - Markdown Briefings + - Mission Attributes (WIP) + - Multi Author Editing + +- WIP + - ORBAT Slotlist + - Mission Attributes (Add DLC Requirements, Mission Date & Time and other attributes like mods, game server and much more.) + +- MISSING + - Multi Community Events (Share individual slots or whole teams for them to sign up to.) + - Role and Permission Management (Show the structure of your community and assign permissions accordingly.) + \ No newline at end of file diff --git a/src/images/communities/access-communities.svg b/src/images/communities/access-communities.svg new file mode 100644 index 0000000..bc3209e --- /dev/null +++ b/src/images/communities/access-communities.svg @@ -0,0 +1,65 @@ + + + diff --git a/src/images/communities/access-communities.webp b/src/images/communities/access-communities.webp new file mode 100644 index 0000000000000000000000000000000000000000..02ac077e3a38fac40a8accad6099460435b8ebf7 GIT binary patch literal 52102 zcmV()K;OSoNk&F~%K!jZMM6+kP&il$000040001g2LLw&09H^qObW&T055;X4FS!# zktE4cqI()y{Qtu%Sms=ei2hH28b2sa6XxgGVMbLANdiS8=KjiH+j#Y;Ed#cWvtB_J zV-kOm_`yM-mbPbDw0MB;0ER6L4Y1ArAYr?KY|Hc4Yon{3Ai!1hOA<+{s>1H2=Za}F zDVknn%2JoS*5A*K+engKrIGmuNC23aUu>bD_zxF@i6lviDn=i)TsiXO{r@E=nHe>s zNRkxg9&2F#?(Vs~{b%5|k)mXo_uv!gFj9^X@>vN=FZp@RzD_1$^{BP@350wOqTRGZ z83As7Co
qZ|7h=T`<5ihk|fEtkk#BhZhig#kLw?} z_guowOjS83Ft**cm5xK{>AlBd5et$kv{U>S@GVJ_B}tNP2|w5M|9`DNMxet*m|4`_ zb1qc|AW9%<@ z@BiM(*`{;fYgp?y4BNI1Ludb=yvnyENtPr@wuL0-9+A2J|5qzl=5(fWNMIyMZkv`w zt&V%-^47t ~Z7l_~TX0*0!mVBs=f_o7qNp5BGqKNUZ9D zW;o1((HV)QnKaWC@il0~%*?E2sLD=?%#6s0@Nn8>X1`}^+m<)7ZR>uX_xnjQM1&&} zBBR4#X6Di;jT(<*8ntmGW6sj7F*8GFj?6&YVO!D<-}eS2wv8M~?Aw5yaPG}LGus=U z-mq<3+&0^`b4W8{X33J7V@&K|Q)cGg%*@Qp%=djUW83@6)udOFHVr3s*p8VkS&}Vg z8d?^6M6rGO?>P|xiIL>EP5ZWv%u+y>OH!0#6M6i{Z~xspB@;i=S_2{JQbN5-482Ho zE;s2bf2Ri~z )fYn#sy<5h!-B0|Iq!^n@;~zwHMZ?C%59VtJ|^OjAmKcU za#K9_ZC ri0;?br?RHKtK#hZokMN~j1}7n08Vaa z@btkWiCKSlV&~h5E1R4>2C@6HfulYGNgxGg{SMC{42>kN?(bH16VFlAF@CDVCbtJ< zR6tqG8T$ -6} zF<mY}sc{xVBPtNwgBSKU)W2%Ed zh$jITIIs ir+x;m66WfbBb1~saT mth-lgRs zxqqHA(B&RNn~<~31d%n$ld_45_V>U^@Yt$qm+Ju?2`CE?J*b+l#|Z?~0WmFbuvzd> z!AETR5 W*V4s_X$>MASSEY34;?rOa(t8zBH q4yf6hja5Js63^#uqt?0m`|pn zKr{e|IfxJC0kN~toB)DO5MXmU@OH_1%{tG8e5g#`g-=Fjbq _L)D)1=5jKZqxWQ2Lrk+8!~H($};os?4S);zb#wm3_l|34Oq5dtO5 zw**`enmQL3U_k-P4o^0r0Mz$=$@};2Kz^>ULq;C#_X{UMtrnv4J*?hlH{s8TVD@-s zf9jF{pwn41AlTSi54aXrpv@6=Y~$Vm<==t)Ou-=)>TeBip3TyTfpVHpR9@&Oh1b^T z(;(bypYKANL>_e5MafzxG<7BJf?OL!$i->9$$TJ`M+yYud}^3=w-cLkJ8;pHf}|8e z0hka9=P|Ae5F=$A$wQO^7uuCD;R*;sDJU2yn1mq+P-F>0hb^DTmRFo_pIrTY1cHYM zHr+IA4yY=nFd~E#pF!z5Occ&xQ^uL+3S!2iZZ|e>E7m1bfe<-S0;v&5p797d^_b*t z!lgj4$ziz3;{@}NW`(u^LWE#AOb025s1QPtKNK#*6jsddA%KdyFe>2kg2S#av}8mj z4uDfp*rQhvCaO@B_@R6PpD5T9t5hEWe0^?bv+C(Ek+lU8A^fm$7Evs(I82yKg|XD5 zLu84gB&ZE+Z<&t#Wvf3*pu$JQ?1>{$03}HtB7Z>f*0H+WxD)_=>T{!Vtg&)Br^aw9 zJk~jvQ)3k#Q!FXXY9`sqYNp27$t0^;yH o#|FqjrbN |L?vdpw9W2exbnt-^91fbR0Q7L>dbO<6h2h&{78ZhfSepwCWXTgq@Y5G zJg*HatfP48?djZeZF^nL>ez!wCk+#km vr-`naw?!efk~l`o|;+W#_j zTXDCYQ{6+LP$perd{O9 Ed^loRY|fC z`MOb8?^V~kVejr9Kg?l7Qb0IdNH`B8<3Icgd+1{)vBdk)OEJM-+*+}_w>ir~gqmiW zjIIG7M?ho+&OTHJaw!_l?=kok!HJ!LuH_$pxEGs+$|MS^2$5Te6uTOG*X~`{`-%rZ zBxF*^HQgeTndlnp0K2F~m0c78MDn$FcW?KK&1r4ZgxI1}016^qNI|}Wd>`__WO}Xn zdH9sTJH#N^)ndX1r*emT1qh@3Bx8=G5I>AKMx%F~SDkljFA9Kq7P1VShMxaqLRQ($ zW;U>q{Qx3U?A~UtyVsm-Qwl=3_K+n4UxBxe-e&dgn)?WxS9p%#WDv*_YAK9}oZ(&p z4Wt0FsxC#QuMpp@i=JBVy51MPd;lm>!E%;SfsRi_VP+>AkWCx|5SeN9n*VamD qXog|=C zrZ<;k0`Ia)0n-#Do2q;r?7PVez*IJZC48Eb_Bc1Po;v_!l6^_nYS%2QCTsUXQBh>| zYFX0o;>t&0Gh&syn`7>vL_k0lo*eA^CY*?X7iK~c2qVh7cR3nifWn4&INMj{zEAh% z1u$|On^=m-r#>kk Bdy-yqn8E5T(4X|q}JtKk1q2y?eOvV67 zv1{`L`$H=at*T6?=Zz*o^+QBaqD+#eE$j2F L8LWcxr0hfDWEv{MSd9H^TzrgNi@b>-Yx zWKp4KO5rKRcx1>>id4chpyHByHiKV62TM_BHfvq8d3~x*O!5t+p~3Y-L@}D|cr=-O z4r5Sq%oY{7mq|Z0%d>5{0tMyvP{K@EAPhLP)AzgmKZ}4;zQY}Smb(!i=1vGc_V?p0 zKd<)46(~SJfx<~S440B4j$^j@wK*D|D4Tp|Nt?Syo$lNfJ0+CbQum(6U=eW>N12>n zr{JFFZ?++`5P6)Imc!7ffGC#7S9fQcZI#7V*KSo6MZUgabefys+tXvoOjG{83X>BZ zwoI)1C?D^I*9gR-0BnCVTJ@11AN12AU^d_3Mn2;usHyyjO^En8-1i&%+3KM%3XH&( zQP@CE%e~nwngLHt;2X>7J`U{4Ky+E-# &*=OBOS2{9gc44MYLh`L@rd8+NQ+;Zt zTBoo$Nc4!)PF7MC&gHWw*Si9@*0nVr^#&0?7>s+`qgmMn4$T{~l2Ik55YBY%h65Tv zc-Xz~=eB;>1uW(#tYQ)v|5V5i*o+p+@xHhC+3XciKt@0&lB}aV(#oaBJ#^DXd=hx-Pq1Z!gI8(`-!^y{nD3X#eWpZ(uW~R2tWSKZ`_*d=aNb_KaQMwy#ceZB_ z1~L-5h-vc}eKx*$KQv#_v*V2+UV`zKj!II~TxA)o{OprOc^)n4VslX_HWpF>(z|}_ z?8lgZHT;CtOcJAyv-loQ69I6huh;!-@B-Lb!H}X@V$o8nv-==~zLTw+dM7`6*9TH5 zYrXEF2hgAU-e#pJce3OF*r3=nQ_NsMVt4LN_)L?ADVel4v`z2qjw$EVoh>;dPUjph zL$xNzz(K8>h>i$&BWN!eceR?PmEr)ekF7VrdW&TzJ8@$H81|~l*FoPNfSdUVi Z#jl_)=1}=FH^zAHM&rg`eB$LSTe1$Kf2dMTw z-j^RL2(RUUf=s$uQb%C&Yk&l64t7OxZal%5Yu8k4vCNF-LR6I!Qlu4Rkrxui4yTtj zyRl|S0#|7!ojlpncqduR#X8AEDk>gYptL5KJ|Hsiz(JXmmk{?nt?MzI5c?`hb{>G7 zSZHzk`)>0989YiUlTeyRb3e-g9NNF{7B6}2TE0ml#dnW#BO<(raYrT-<8OTp&@KO+ zdyggf%5$-qo*X+ziaDvPvTSu$rRg+TaEk1bY00NmPk91{iI~U)!!Qj~6byN~anWQM zakT)5>_q86Mu4Osd9JWbL=3TjOO3x ?kk;W&+BAZLh(~wPClQc~=D0GUrWJnYiMIlMk z5fD>BOu}SpF-
{&yFU5Oxyt0X}YWDp1-J9#TH;S%NVRydntrUEK! zWlXSZzwe7)Kr)*tU{XtMBO6%=VD0wz-R8xNz(#p_MQ+20is=(5Jqr6as9l+x@%?p` zfAif=55 l?W|#0A#jFsqsG6 z7e(MM) 3SdhsPC1Z6(~gQGg$Kw^C25PkM1TDa4lxJCpD7?X zDdYW8LqZ5*M$}Sw!50_4hmT7iKT*AaQu|ZU!^_y_h@wY^XVjvXFw0rkTn@!GJ qK+D+CmGSi(Jsxyu?_Vkvqp8mlKx8D$N{AFsKBK zgb=rk<~AUqm80+cs^Zb5dp6jr4tZ0Z4D)5r9!K|U<@v?XZqfQxq(nl_w!5J;?EU3g zaJ)~EDJA8as#wHnMJTX@HQi()knSR lv*-D@>>{LMqANrtojk}lD~5qO%e5D8N; zDt6_v+}EYGhSzBKw0Qw>JWM&0qz9sSfH?reuHMT>V3UEJCB|;K-lmT9qW};f{D1(m z?>_!`SnMM_ _?oHO(-fkHVAQy2nd3`I~7$B_H@vSPLO(Y(`1E$pO8mLg>)k%%qP zZ)U&Dnzd*oK9QM%d#u)b+~o9AY <;ihRC!kP1OV@aGFYGs%fiMKF{&SQMN%j zsR6FOv~Q<^)VT=>W*gW2;aaVDyv)G(2 z@o$DYJmay2G>`AkIpRq|iky`+Qb;m!B!nSTz%qekjk2OtrRp#Wx>NnQE _fy87t8RBT-boUsAV@=qunn*bGA9HB5~e}Rp(42I*iG~u zJl+f)$8fL|p1>wVI;kPU1jLannv|4@kU3g~TAvJi;&WK32s0K8xeL7kktM`2sX9bp zAt?Y|uH6G5#Pm`a>Yy^AUuerNWZ!-Kj*}5FXuo%4lVh_DL(OI^2rHEQ99Kdjd)3a4 zeH6nGB3;oGoix;t3}+$|niQXey(rRtJNNv |}oboI> zKIr(ynZfaCy`$Uzq^>q81=2_JmXt`Fbi)J#nI<{gkt`*f30Y(qyI*U(eSQXKA&1hl zVB$2=Ois~+G|&cWn%vr{>YM7|7{JbiUxsq1lBg`K6q*P*POnb_Z^I(6I&~=8J)IsP zi3Lo$*U2bgDroQOy}fYd06^yZ_WcI??DWSkhiCp@1m16Bd;hCnS@rVqme&`v7YBIq z`dlHW#F`QBOTpz6k%JQq3#X)aEI1Zq={sFB<&@Bz+6<+^r}o=rgkB_@g|l#cv%Iw1 zg5}_^d}V{`{oGx4AEflDVyBl;`-Z!n9Gi8lQ;2i9DpT4l9M%_EUz7S-sh< |AE% zD4%4e @MaJi= zi+n7$=SCUX*-2v_V#txolxbXz3r;i b!? z!d{7C2@-gr*H90jXRG2?L5SE|@f?|Dd;2eB8r(C*B=5gr+u!T75y03Y%>y@YJ2`%O zGXnAv6gmZFMwFH;nU!b>OUP=)VUcnrR45V@tXi~4r>S?unmyA(FLMSNgLGH>E%vxh zE4o=J!UcgTbaPSYTuGWQ4)17CaV`-j$LNZK++$pp#|3d*6o;8vzP#FOlk+B})yNwR z24>FPZ#=#@aSjK2ZCho)W8_THf4?SFZ1&v -a z7LW|k?b+SobF>|lsM>oY+u+r6_n&Fwr{DOS|Ki%ea6Yy}-~I3AH?!$nJ^OC%!~1-6 zslp%uL)_pwK@*a&ma#1)i)=3L=X6;TWheQp@NP*>gCZ%iZ;gjciuNz)3B$&PYb0kK zbe>k?oXnC0t1I4^&Z*N2>T>KXQBs+|4gb()S##P+V@}&*(o9J~g8*P6E=-=hAu=$o z^b~S%G{sgq1-r O@Wc{o!u2HK*g~X;g%Uu z$R&4@GoivMMYohQ5->>sNTy~YF5&<&6Pc)W&3NL~kT`IWXC7R=&$17i$p|V(6U~Hd z&8vK6edgG2s}H(-g>_bPLvYIU!*os2JsVnIQ)~8@w}d-o+2_TOdY(?}8Ky9l`-K kZ^!qeI0oxb6T1THIUD&Wqvc^IN#nFi;1aGwZ&* zS>b)rejM^*+9*GF8=;n|_p*0fwaHj(8A*V?J&qcVdsgAUE_*M;mm2Iq3^T+{+~6jT zxM`A^IB6FtW?RbMW>m>|N`K{&xqDqRJ0Ge`nPqX5dsJGLK^ZNI6&cAI4sj|G87&=z zfeznX%ITuk>=gHA0v9n62V!Clk|i-QH<-vo9lID$`o}%IHQu=aj{$YVF>(W*Xg1i= zv`y?z^RJmV+oU2!rU3SL<5hiqpyXV8yXob);OokZp|#EG(7GGu;7Mck7I0w_;dIh! zrmJH-Vs{@McKSRW3FQ{zuz!}v4;Go%8IY2yk;D;zgdX;ujp238i|Mk OLatS-cr*wn31pg93e z4JLcI=(ug?QmL*P7p5B}5f^a;;3f_{CzIev0vV|Zk fU|-$GEe}4i6AhAi8)BXM3Wp5#0 hrLb zk(CPSmv+R@FHw$By6!7DpF6%=G+k|!``USLtGdydy7lO`e|mUkf7X0^9NJv?<9=TD z6&KU8)v0tga}U`5_2|ET?VtWSfWRN__#gko`<=Ti!+m()AN=y}e>(%fZrlI(#^T@V z03bsp&2@P;>u}fF#vQn9=s&FNy(TO*AuXi=1nOg7KmTm}CH(yR;PP#6c-Psh;8EFE z^UOHxn0=(Y`n+!AyGPa>clIg(`@X%s?fYLD2LAE9Z~iG@!T+7NJ^8wP_7nixK+_#8 z=O^^6sk;vCOG&rQ8@=9!#bxuAMRK0FAf&Zd9$>PLR}1En>Tc8^?sz$;99iq_7awP? z7xlrI4;ZHG=O ~ZV56un=K56{vf0u{PKKk{0)0+?crJY>H1?dnm#7x8u2sFtJj+mL{G=OOY+94gB zBGZ}PA@9503X@)xRhyb^5-i)=4CUygcbW&Zi^i6+4Cd+@JEbq$6#Lv7%?!FK50b6) z6p Lmn*I*)!m}rs%O-?2v(aGb7m!aZOa%#XnK}SS;$RY5cvFQHxzDGAt?#AQW zOKlthM4e|dfnmw*#arFwvWF>^$_)eBbElvGXp=oR;QE*wA?;5OoxJ(|ZtZ>#fWW&a zPc&s+zSz~WU(+u`dHyOB0|4-FaEUef@2}e3Pl~lR$aBkfpXm9nb#DbA0(VEtk-VMP z4`=Uo55?!hXyWCE$K>$0%f9{k0wVw#2nPZ&ZG7_Prn~0jTX|lWO;`9j_z3{;uMa$b ze&wI|IurnPo|mRC&jD2Z;_1AHcK|T&f3)8=>cF;3_W}^OJyZ!$xbLpokN4`ElCwTH zs;SEhPqa uU6 z_j%KNnYf@ib*IJHughM%bFTo5ikqhn6uLQC|KQGdXEk5pLV^m(7{!dm;})m^lu;#< z>=C6hAmbQ}&h%;3&hKir&7KhW6qb;|qP2N?651#Ls6&OLhGBKcD=e8X!x$+OmR7}g zGtH``76JfyhM}@9Oq3N5bh>Cy>QBXp8m{S(beL+=XO~k)j@W1zrqW-i-3Y`^#LS8X zCv%w6`h(6v{}du6$atVr>6l7<3S d7dY_W-t*O!;)MOY!3}80LZwu zP(&L$ui-6|`2d(&BdIu&^s)|2miwW!+*t6%V+&kbR6@-{ zp7{V(1`MK#U{N?ni{Tp{5;8!3IZB}qC`qe0+@^<3AixFb5iuYDGchwmlLX)hSXW!L za2J|WzaxfJQRk4;tyoG`FQtsYBnH{8+w;U(oQR|j)$fbZry0{1%c)3Ik{R*bGLpU_ z<&>7(tR{;|R%ee*W)F!&YGNGi*~T|K{3k`g{+tE?C`|5xYw%cj*3QTOYuA7Nvk?iv zy#M6=?CYmzE;Z|8Aj;A7(VOq?vj2UK%=O|oZhqQp= Vl(6>0JXJz z>mGN%`|*#x{Ttt5tGi9#`j=1t?LPs~Q`HmPffE2=J-jH|O{FlWzP!2NeCp1zqN_3-Dydyu!s8Njy{MSY1LCh(c`eaUplwfokh`|4F0&LRs_x z&;o_pK0IRG3^G{i*sf>$W-Syqj^6i~F4ZQ4sMGiShRo4=d}!xnIqH|gX)=Zc%b_RZ zsmaNFJX);>Bs<~`v5gc9TO^;=4y#fz^7VLKbM{BK_v&?du y9!JuL z!>((e@|4!YR)S+aK8sUBw2_CUwSNd00P1Rwt+_uD@=Q+~G&yywr(m@n)$Ux3lRlfr zK0XwHkk&Dav)dhFW>cPSINwjg1c-;zQGFaqcTK))joq1oChPlm1sOo1Sepa!O$cr6 z3y$Q_`}xeW9gwa4mY6#oYWK-KSz4HnRT1wRjJ)V>If&D@#pUR=V|tqEd=xAYO0Qea zY&zv2wb~BHS}{yBju(W`-FnDH;IK9KEwycKxtiBLTy*!i#SaI-5j-Me156~x=YwCS z11L^36v4jR5->OT`Rrf@h#{UKZpnZl05d_vM1~9D!|CHp)q+KZq>(a>HFIKe_g=|K zJ-wT@EjYC}A&u3Rs&48Xa6*L}c~m-YFtLn4nmX#_O=ubrF%^Kae?SaD!~}>lNvX*A z(eFIs;BKu3pNG>R06_GNr2vM;!1LoRH_zmYWAP7u?t=p>SGVrQTGjT>e)!EecfFlJ z9)EE6);FJNF_eNFKbzkYN0P{b6cVCg2R<)A5|Ra>=%i@^fcC<7p945j5mV`EBLe_= z>d8;GjC%kr_~p&KKmL_h{`nV6*5y5Rn0fKY=9h4_{plgwerD4Qj(d*Z?0 W9xoR-`<7rhfm=K3V>oFK>|xIFJCG zIQ!c9^|P|i-U2j#*m?Tv865!5-HTQ82e{}w&0pka|JgC~l(+q7 QvRdmPD!)cp*@1>{f-!3~n z0sw!o?Zw~W z_l<|)N-ML9BSMT!8ZCl#lgBTB5e8bC_b&P{HnJ_pjm2H?cx@d fV7Xy1PlOyOe>lNfJ|*kUhN7$HS3B-whigQc7E5RgPsdOP*XI+g6A@O z9m|?j1{yweSK2u5wAtM#$-Dl(%Nkr@Y^vP{M0x2iPXq60bUXJ+1EgJgS|Ccv@x;(o z?55iD3UaVo&Xn7Vu>%Mp>fAC$#co%A+#tG`?Qsk625$4Ac?NZW6mMc5jor{PR)9&g z(JVSf(?|fE+^7lwqYx!x2dO&)nBRU MpiH;$aDx9<4T3BS-?^7uh zg0_Aw8HThVWh65*aqKbMlDHp?qDu-!t_+xnA#N~%14m5Eke;PwjT_!_4Zy*FTBrlM z0g%;9c9WHOtZ?(b{N=A5UjH-vZ_n}`z?{^ntlWI*&a?BMyvod71Ix*qhmo7TRPQdX z(A}D 9hVG>0x8e$c*p>P0gX08;GYmb<#8o{Jy!51cPQy)DuE z1^{0Sj155G*?V5R{NCH|tv*4i0s!nCh7Y`0F8|g3rT@JF;`P~GS5M5%13x;?W$5uK z+d`L@04WbQ@4xhs@4a>`7Qp=R*kt32Cp-V!SCJShboKC)iMv65@Qs?^`J(+l zeFBKZ`<9y?87TerDe&X3VcdWk-hRLId^EM~Yt^#v05s=y|2_BZ^2Y<9qU%5M+<*Rf z`Pt3W)TZiwu6y10ZpckrwC48f<(3D{dF&THI)43Tir!a%;dIB c%T@MTU5y1@wSW95ka{szR(5I0Sl^Y-0j(d5byvT7U{w!L<5*oC23^r& z$dw_g?C08x25%t$V6hsLW9HEqwss3E$_R#UU14Y4T-MbG77D;|7;5}_z8bV{0}##M zZSENW`(da|-!I$GRr3V!+?S0v%wB7`0Emi*tZI^^RLZCK5{Egv)!8<(OuM4^xt7~l zOX-&0Ja`us0H%_Z>1i{vMonTHRnShIWf(&Oz}i*V-47NIATK5rZf{BzCZ@7vb1#q` zWwTvJ<)Q+Bd;{LcThC5&KHAdF43o=-lD0u~@i@i!40BX~B0k)s8Uu~;$P`jEkII=s z3SdC0>UyL(NA5$Q_s_wz_@_!V)IUGJ==|b{Q~^)?3)4OszVaX8PQXR<_kMm?_|cUA z$Gu|)Lp;L`NyIG~W(I&~q=XP9kg1(6idbkuSOfziVJVVZ_DVX67BOSqSC|KL^d`+H zOJJg)R%qv5t(r-Vp_-UkSoQ}k*fv$fbIRFV1Q8RM2r3|m8DapDfeq8R;T&tnfjbv2 zi)lJZ2FYP@bl7x_#8_ CE` z-v0Nw&pNqeL@ei6-g&pX=3$dd74P@gR9LhnqXBf)7xh!mPR`{BShLft*=hgf000Mr z3LvU~*{yz>hv!4{es1kTPAXxVI~;d^;{+ff3>BT03m{jx`C@zg7(mw1UUxW@=UrO> zL{knEX5b#Mbgr)l)}xZYv`#-DfQe|qAx6C`@@(yJhmPtJAf?@$V(+RW<2V>dtyci( zi%U+Q?RHTBMCuJ5_t1AY0nS`JX}R$g-_kJ4uz$y!`PR>nst$1Va~hs}*zv @n0fn0z zgvbl%Ys`!00BF(tPM-Au#x&jDgvyeR0f_p<-mV5yBc3JtLx=B}8bHCF^}Lw|fQI{H zmy%Hy-3M}x&2$!M1l=p$FQuD1-t+(>@3?8pK0PQ)mLvk=Bu5MZNMXpy#7QP1;szrn z0YJ=9C}YN!r2&W}!Pd_05kAtCbct> z3^Ldl71tsmKU=*t&=JJ<91_GZgP&2(H~Q^=?~JRr03vFm|MwRaK!5mIwEn+s@t-=+ zn~5X?01*Trh&h6YnYf8tDq1qWi;+o_Zpt8T5+dD@v7W?TdXHFrVo7!U5GU8fqf}p9 z-o<6eUPc!@TE@CyNE)h)l2A#OLM;m%F$|PF89)#-fTe(O!=bSo2UjcAD=m7}Fi=iM zT(5$L6c|Iw-+cEgKYIH0Pp10NO{Vz|yi-I!d|T2mT9%FfW?k?}VNQS%3i;)=ZIw#_ zfIW0v1R%P-zx&UQ> q`w$+e_D6 *`p4cp9fHY9ryMF>A0HqFc`DE$~sFY%koL(AJj%<|)QuYDJ;wH&9gBYs^ z-q)eHyRK;V;hZ1QZ~b)@o2vp}AsS6`zmCF^`h{-SFWW#dN4uy=yP3 l1i_qa=2hNxx&4U tjC4ds>~$%sZRAw4SQf{U5e#XHOd;rM zPpKFr4Ph`uKuqA45Hnx`fFb70g>j>QLCJyOnS~nMuR2WTUN~ok092sS#p)k?^waU> z@BccHZ`c(Snh{FUDXd#0dNfL8lpQhc6mnz&Sp^{C2B+i@(sn)3C-bky-o6JYQKd9{ zD5jS$(C=b&=^(s^NC+dIYaj!lL=|ZZKy7?n@7}-q^G`vZ%w6C0pv!i=e-PaQD9)eN zHWeaMT2iJlHpT-jMdnb)RZ`{LrH&0~`s?yz{ck^zi?cU}p)o;AIs-_V^5gHm^1fCz z$KAvQg(zZVj;1NhZW|qF0Y48}<2IHZ`2wR#c3Bwig1I;37*3O)g?kGp#mPN-`NMU^ zvH*zYoEacQc>{7y=}JH7P7_k*VrH%-VH$3fXPk8#C8yWmoDkySlLg8jvti26LdzD< zt+&|MzP?r(14iOGc|9cB2~*3`iqH<5B`2H-Ae+l >Q84PBD%;Np0=c@lch0jxM}&FoLq!Rh&Y`Z9aw-A(`Y(X)k!QPr6|6ddx*#N zoL~W|tmgu 9)P?^{#S>`gTl&4_1F>_?^ hXB+#G}_tBC%15ni1D_^cNI?#0ACzuK1^PwIk@NS;mrDc z@gM$+L&GNky8M@~Jj(<~HWkDfKs0CFR?H=Pjf}bILKj-OIq#;Qefa;c%(|v=Jz=dm zmsqy}v|v!ad;jF;?LVEkAZ1l)u{S>Z$*%pzNNrS_TaOhHANuJxj|-2s3&fGn*CFkK zf%NXoQvo%@9#!mYzhHBNoMW$}=7v!eVVPyRI_OD7<*b5sOhb{6mgP3ELl^)uTnqRx z##E9ELi8`k*cJeRwa@q7+k?H#3&sqY7N75oNdS=j4T)~Z2hS<0&TuhY8UJpy9&hKp zqPw%oCgBV)T^sZyqjRbzrSJ*^4 LeYG!BcEgmW)2;3BR-$2^0K%-jrBWf>HpjY%}2%E^%j z7~L2VpM~o^5*6CL7(kFdcJiQJ7@iKKPyoc#0(gdmMn+N+T^`cv^F(w&QaZBUIW=Zt zP-!W Dt|k~=vc7(<`jiNK{NBrt7yb5shKQz2-HecGk$~4wpj %-}ud6b>+05m=JQ|bm7RoUIM8H?|p`L90)(0xCZPu{*9-g6OI8k?Rcn^p+-e0l(o z8uzQqlih8xZUFBN{A_BPzZ(46V*;OD;cn4P0L8`{b_gA&4d8#X+`Buxhb>EU&P3a3 zOa!QVpbHe8tM^6DIM&*`)SQMS&wD>}JpcW@GErdL^YlxD@8*dMz*W1fnKvOH_B1iL z*J!}jv^t%=lG;69Bk$O3$PZY%Xs6aVS`%@zkF?YV@*3&ZEt~Y;9p+vv03d&AC5vNI z7+P*scof2AKlr!dJ2n8uDD0DYdDEs2Sw_uB*}ps^9rU@j!jn(??J^(a^W %o|V6r==5X{=1AGmGMUvpVJi(7@5@0Bh@%IopGQsNALd_;7HMr$+*8 zE#-X3ihEo9X8?4!9n?X&qNZ%t)`R*GT3>iva-}4mIhV_kk?y;6%$0Fl2bc4<2X$3) z7bFb$Q}azZemgEWeLz(Ji7+=;yvlRz0g#Y-x;gE4pKANKSOkh2AOJj4DH^CHHt0v) zjewNtj>^9kpJDz>loVE1@yh*dOsrR+F&s$#%dbZ@!luXI#NA1hU z{>x9V8pe$myVc8k`*HyQ*LUZxU(NIXc?3N7wfV9C4h8_L{`=i!Pi6qAQ!elB3RVhT zRlxRd{n+!br>no-6d#PtD9=Bdztvq8e{p_G|7L9!r3>-~{^@V{Y{l35?N6U?{+B R#IBqLb`5rCLUHFFh!oYOE>OZRHst82#rBilI^US|SKQBGLf*e|~y zrk=QOQ4f~2IU?@5hOw!O0 fu?pH%IU7`GS2bn b yeWhDVW|m_Q6E zh)V)UN@orGQ{;5pS8m6K!59IMzmr-~tbw8c$T@~oD*?GZTwA7b*`^enMa!bTs_o1a z{+m*FETse>r>@>+tnPZZBc=w1+2*oUgUXUiLntNZbNdGYKsP0Iye$BRRI#K02#A{* z*mFe)I0HB#C!F1a0DwR!Nouz+1#mG}e7 W40Lbjv^2(bVm27nY|vIQK0al*Dn z7k|>Nmq@@!M^PV?pwZa6i)rCKfap8l{$D@3do<-ZBhBHN`F!@O<0b%s|Ml)q{yh9; zqt}KfcZCW>Fj_u2`${owYMQ+2+v@e{fk-!US#%0u@7ZwwtK<8B{nC&_OZsr26L_?R zpGAh7H&6RHpS*4U@kheca`Jh_{_3jLT5@`fhr^sw!d{vQ8hD{`9| zI;qVAE5)(^RCd#ROC~aARJa-M?0)E5xP7_)J@p56RM+-;sa^n6hy?{~J{IbktpH$d z@!P;!MazUJAF2&2B>= pV3^Y)6>{v)>cQ3&2DxcLOy3Oa#@$AnHZU%!!&wVJB*(tt zzHUm}MqzEa_~$?kpn`6 3Lk5W?rq&r*sq0lz~k^QirXU*0QObj3zuF%4D*%bSYHf> %9XClk#%&+J00O?j(+44eT##c{W0zMJ{1W@m06 z`=z}WEWbbj5kvL+X?6QrY3oIlWH90u9dEh_Athbpw5=yu!TKdZr%Hk5Rbd`O0GY|I zZY?_aG2V7b8GoyjW(H06v9fX8J^uawTPP_PzA)7a34xGPND6^W6(lX R|8td)$52U8>@ z0D6`w2r$KhG(i9?O|c`$S!kSaKo3NYMg>O&&_j;)-Q^!5--SoR^P_kFpnvPxuLOVi zV}RJ~6@Z9aS#iBnf9v|imm`2e%L{YjHB!8vHrBEP(v!e?^cVmU*k5;3+rM%+ygdVe zMKea;sH%sL-@nSQ-u9h8z5;a5-sgs>UBCFuaZLN yu}IiHuUd*>BcbbCltEeX(|7)+5uRcmYfy;T_6rJQv%cTPWH3 zsCFOC#rttH@!EBk!I3275k<-=0Yrdked !uxY;P%9j^0v~gq-?v7;f1U zGq@$-Vysvrewg}auXFFJQe=Q8Rz)R_17tK^06_v+fV!`SCd1xIlE})s+N%Uy7@y#= zj3QGd6d@2K8AwV|RR)?aT12m>RCRl3t{ku|FuO@v9Oy}irX8zf!Rb4taRwkVKv)`N zM$+lbf>YKQl0Y$AaIsP-VJTWTXD@w1I$>f23;`rWrdWuWq`#HbGfwmg0?3KJkL*pO ze&CJ=Xrte&)L#GEPq*Lr?C?wN@1Fy*)?dE(#Bp4A#%oz6HTv#1>z405`pqwd^(_%O z_qz|jKV9`5zWdons7CbjXnCaEE!)5N^N(MCGu=P^qvtp iH4ca>FsMbRx)vZD5oWG_^V^ zasnWyY1>aP2m+D>@e0}k=#uQ`oy4e89Wx8XR3rp}BT1-Y(3eBsJO)%HmLGM+?iZa3 zu!^UF9b%JuCfAo)eT=1W3WSjsXGFRhW{Z=p4AUt?a )?Ff|zqM5Eqq&VBXsf7rc$uH5zx zk+}PK#{ObsIIln5;C 0d098CGxqQ3xNdV0an^Zf? zIgAT6Qc(bMEJ~J?U7Nf_4WN=XvM(Na-w%!t<^S=xJ3Dzh8}ae#!(pSYC5r;l+dsVD zbTan8y8~1%dWbA}sPpGbW?nL@Rr7l|0K{-%clGW6xV8G*=MTG+>p8MLFN{-Nj=#No zGvnxi7YP9{jB$QFpDvjhK;WwJbT517) z{Qc=$ zdy&~4knfO7x)WZ%23)o%iubUpgO^~y60#;NTm>Lz-CO^+x1PU#e)rJYg=byogx%_4 zd2scw7y$nFMR{fY-ww8=Y4_n!{S5cFMg2BE?N^UW<&oh6FtJg9Wa}2+cJCoN3cCBH z%TE~aW=d_Wq1}8I%$cc64!f&-dm@(pcB$M>n?e>H38L2%h #k%56J4ZVMaRblNU)<%*G!SOffC0MX>MPGNQWlzH(Ex5m88#^I9K!H zzXbpP=`Wvd{u9&Kp7@Oe{vB1%4~22b>xwW9K@ye>Nyv(AR+gmwth{^1t!bADQONV4 zKi!@?FA}6Pm&;UMBupKhg`~e_>WNyf(=bvJhNR&nneEPUutw@2iEJj1;nrq&hcjJq zO<7F}-O!$Gcjvyavxp=*Cc!`milgR;al#_|a1fOQkp-^7f2WNkV2|W`h|zBgg@-4% z-+c`DW%(T 1#ya;2%-ew5#Vo zA7289s=qd6+4^|Lz9*t9KiLrx)ozCmt~bDM^8Y4+h$`2^x88rvNC4gTwKFCZ56?bZ z|2Salhp**k p8 >Gw@p$pGU7tf!u z!}1{1goMT7fz^ZiBXm`Pn1k^yMHGi=det__2+~;-&`m6=8ZR APu{s!H$PsNe9|aWckBQ7vC7$!SH@B(LXqrZ`jXVw#G%AG;e4!^2a=dd@o?2X z_2=|#3!0xTquI{2s@=YX2V`(-ZCGy4Tz1h>reT JcJ<)_l|0c8P9BosE{*3s*T!3eh3WPpP-!HOE7faGm` z=R4H{m>GQg=vz$Un&t4pKh)p;S84rX8C&uF<6D37(T!cYniWbu3So5|q~Y9Uy=;nm z&eb&-w(fT6b=FMwA|)~feN+9d Rq?3X zL-ti$q}Worh3h5bTSgU6sywQyWD(oR6v@Pg u!R(i{_rec|R!tTqunB&bh%_wk;65>qQLJtj`U^j2^8gH?c8v5|?IpDm*03KZ{ zAP6znG?&@hqYIQlx&VXnS=V55n4jwXb0w9uZ<^mARhCr58YyR;PGR#>G>TPTw^_Yj zB=0lLmbD_~se6tbN^PB7u{jmj8XRmSBPnGhVrC3~c1dPtnWmGLC1ptzZUGTUp^zcy zV3L!%&~UnzHaT9HH)Gj9GKdnRh1t>qQG@tp17xlu+=$ -ot~vyeWKt#b1NuI)kwN|ZhtHi#Ba5c? z!Xh(TA*l)~Hpr-$n>|9 W; xaYlmTU<@RPNQA=zHumvH-lrWup98HI z{Q#4#8J5v{$E=|M5JtM}TK3x{zNFBCP7kiuvsLQSQkp4kX)uK$Yn583Tlr=$%~aKt zVwbhGf)i)0tk5<+d1_#W@c2+dePj+9_x3fu;jEpFrDyNjF1IAAb3Bt3R;)f%RY{ri zpPs57JTOIwOn@X)LB-YAJl&?v^Ag=(n8VjlPdi+P22>Wg+>`@6iH~EjCZdUiAW+Cg zzRq{~2KQ5fm*c$1$9x`~nq1@ofQ42@-CtwdAT1~!+U&GXEw-%2UAgag=_`^+rX>}% zVmYPA^U+`2J#iP5SGK7nQB|>Z4CPOwKBlp*FMCcZ7w!mc?+`oh?XI|SQEf`ED}8-z zcpKB>^hC~| 8mno{%NO z4Wb2d0R%e~>^9|(V^hWCRr~V5$-+b?XeN-S`Vt_O)LSil4pp#O)=a8S*t~y}{b7x% zyY8g)WwG`gu$u~V_7|P1Bux#SXZ78-RDYeDAmr3>Bt+)e_ucJ=wmnlr07<4Y_c(8R zwq6qalP9IU -5Np`mlY{AdL?5r;=so!tM07PZB!Lv&te^#}F z;KJTOhSWJMQUtK^+X+>R6W<-%={|-@WwA+~4G`x9({h4MZrz=^Mf#52-Q+9o@ICUj z-2@4efgvOz1G?ngSvrd>vH0hKJ6!idW+2wty+2r-KXp N}M6H8bwb{v<(=lcvak64y$rnkv}WAzREV z++gKzDdoQ1uH#0(|KZ8jmviW_dKUc^tKMQ>@w)3>Z=a5jLuS7(45gw>lR%P?Y7~D* z`2fSa>3RC5_ci+|5bd=mdbw@65oev?iWp8vjb%+>KRW^ZkjoS)JyCk_UXd)Ob2YL0 zNkjljnOj6_%_lC+Y+RemN#r0tZhUyxHRm4TZh%ErMy==QQOz>}WP-0nut{0G=JJ|G z2%)fGFZ8j+#nJYxIVtkFjG7{7WuraQmNuC#eA2>1ovO;m_EA%lZeXw!!=p!ym6}#} z4$+i*yWjXn<83f2t}I%$Xx5p&Pba}B3(S7qyFS1BKmXv(idSFvUJFj2{h6R47zd}B z*ptCB!e2!6H6TW5AbMGVxmJf(xDCJ;EDz9f0W^UEo~t!YP!Vzr%r1Y@d9YqmWBO(9 z&lFS^9Y}_(dTQ5gygfVtu-uJMGi@O?A6tSDsk_yM+`HbKeB^&V+#EN(B)N8>?URor zm%A)-3M7ujbSiddi+aB2sY4crZcb)K9_-C<=F}yni#oiQ?Y_-XH!`?Ku(nN;9Gr?_ z!G-crPd>qqrdj*+s*g4O0G{ GXWZMGY21D@b{b<|4!^u8+U%CeM(m=$w<8h0Iq zWf@i1+s^An&v?a#<|!haF-#_gr71RO`0UE>>m9E=|Ji^%`-7NZyrsjVS=d7({zh6v zqhIZi9%5>TcN09PDGzZB@rOby&HD2cBJBUtpOb17wdP{2&zMl2P2RemUl9kTwUJHn z2A2*2cq5PP#tpd%VA|F+Tk8esV{8#yf(S&vh&t!BI2h+YF9VMmyU<>X^VsewYdF+X zp*hX#@gYMdztfbuv#V88`9y_8u<6X3O^da{_f|o1eqdlA2?-$ i~pYAdHrqi z19&zFk+6^8+tW>9etOAYzTDzS4ofHXIFv%nc*{&VNFTo6GOSr0oSEDwD8Z&DXHzCi ztsp2#VE`I?9G=)lRxy96(A`6=%wUHNB9~oT3}mIox&}2OAk1Mn3LvcF85><)3ejpu zgH5`V=eY-2*vcsRa{stG zzaoM_%z325NRi453hG>|Q)^Csk+>Y=;mf`4dYp+&-wor=x(C#|u&7nyxjf6Iy}8I* zYz$foe8D%l6wlDOOl|F}CmGNE6&ge?sRVg2SDUH4OJ11rCbAr qg8zkd_j?(kgFXq_&$qHu!ip5s`rsWLL WvFrktn%RLX#;llJ z7UKEL*_66zdV$ZkmVGy4EY~>uz$Qiko+Uy=gNNYy?oAq`Y1rv9smt6b|F+Yq_7thS zCfoB&-%b!h)ZFG;^o%-HIFs}QQCF)Ot+gP4Wq6?{Ej2qn?GrH`FupsJaZG_TIWKkf zm=lT2uK}1@6sqk>m2dB~aBGn 0N)In|lk+H%XWnIdYvU0&M-+{;mdc+2dK{Wp9YH-($b*4rSh{aXy7xlNd0 zOq9y;Edm7ErnJc8(^DyRos}#GJ<*x5gF2Pn<_A)p9A#5Mu7dK7u|?3-?ZhI}bHTCs z9&!g~)Bb{->Yi?!2_hoaZv;%2DtphfKXB?b&O0YuM%5Wo7wJf3Y-UTsjY@E7#*P4Q zG!+R$+~bE5EK3Q}(-dT)Yw~N1x`{WS6s|;yP~=Sa1p6qzCzzk9cjvL&>zM+JQ8G(k zlM<%#_uTfa4uo%D9th89l&&0syApFdx$ z@Vzk2uH+ksJ21cpMs7#P69#POvY$T#T `8L%J#HTO1;#nv)bixxmaXOm>q6}%^xTFENvoEU(JvC*=$ z8fx0f`y}7Q08{N1O+Zi3n19+*tY}HF20Jk?1AzVk2AceTmpQjWH3o5hbzryhcWqhd zw;Uq^F_K%;h1|_n0{d@5(a-S^fha`41EA + z%5pVi9DF&aLC~U@P>OsZPy{=eGB+R>cV)ER2SSJhY_I>2ti#@ pDwVf zu4|QFBNnyR@9oit;#!J}T2*c!$g>3xHf=ZnA#U&JG~xi3@uzeuuappoAR8e8kYV|% z;gT%aI4u(>EMx#*;CFWK9}kgWwNnHU;tf{{6nYOv3(8{1ZZlW@xBY zA+HXe;{mEOEF*?~<0i#$Ql?St^p<+R z wO76d2)mig+#9z^Xy3SqI-GJ)75Si7E>+emBg?a`GK3D^ z_gZ`11hTWKvJT+FuACZC5RtkW6*0u*wb)?o(Wl+9xBe|Zg 5&7_fmM6QbFj);5nH=s)%#roSx96sRZms<1{4F) z8!C0nu};^l|3b5yh|YT%JA>|cSNbsb;PL#)`IL_P5x3vZ+`ig esh0we(&CUf9w9%^Lx+l&hMSye}C`(-t%8eKWo2xe((9C z`+K*%-amSRq*;T1u=~9&s#LUOmMzfeZ8jm>t)z`O&6WZPW!Goi0wk$xy5#4K;Qs=y zF7iy#Nb7K&45?sTc6D@u9-lg(uhw)vlVbs_ZbJL;)s> L167vM+gF$GE Ui~f4~i-UCRQAQ7>?1vxk2Yzz-{DCez8thYx6oiuJzo=I2I7GE1Iryz0cL zelA(pD+}|!jLhtAwNpqnkMg6}XOc395k>4zc;{9_w5G15UXOvD&q;0scwtFUcO&$o z*AlUBBFWa>SQ| &q-uTxI6j?|04&P%oSK9#Ly(Wn_E&v8sS$p zflS_CkM%zzenFqz5&l2UoLj8>Ge`o;|5;Cp1KNz2#+;6({TlC-{()@-us)snlu)@$ z)dkm>$t_Dp($y)_HdPd&X)QYsuCAa--BBX8tt6{qDwDU6iMuPe^j&~AkOn{m5K|%- zmO;MQZ35rkOu|t%5A~lhw<5ComAKV(u!?q{%zKVe I;tI66D}Ut`*h$Y}zlZv_LQtZ(N4W`S z6SlrdSr)%s?7)@Y8T}3S695ZX%ToG5iK<0OP{6Z$2^GEo@TQW&G&?N_A`24kfB3(O zsonQe{k`OlzBcn`p135&{LtR*4t>vYeT~{>zo--V9D)4Eyf0%ZPqBw?(x0)DIoQn9 zqVgg{Q0xCf=A7^2{_BYcO7u3i@x-Nu*-2^oo@0Ie67P2XE4L9kDDfqLH @5`e zD)N@%L7O#qAxtV+5}bf0_}vAhI#mG_(b$yNJpEbqA~{U@uK9YylwE*~Uehn|c@%*# zl^61IR-n*Ujd(DvRPQkx^xxReGA@Las5lNZ1;qTN%2F*=ltyLO27!#ZC7%OP_eM}- zqaDMkWgDYj?wVxZ%kKdKA `uAfj~0cOVNvJ=tn=!Fe&BZy2u^qkGiRuS!a4|f?o#DKHdLWpHd*xdssKtr zBdzWH3AYj@y^$~-3Uko{y4W9Cs4xHtANB6_ r@u6*jKzp51B2KPZvpKb__1o zO ^8moEAO)2cO3G>?tMKz@`=c=`n^wrw?xMm=IskGq zF**QJAizOiz`bY*UYvSAz#hCH@`DtWm0nVK%gLkK8>J0Pp|2fzc@c)lGBKt{+QZSl zfK33w3$rO;m{U;39V8PcsTI-PIj0Bf^}$PWZQz>r8E>mAWg0;YgiQduqh>+D@kI_% zkMBj4bJ|NnROHr^rCe=1=o{DwA((OU2JkR86c+#@{s$uSn#c*E?1h1}UgS@BtF1RD z!g6gOpl#LZz6cutf*CSciknIl7ZVei!V3-^~%HA~}JQ76A;PK!7S=URIGxaO2%; zFI6lk$lWC6`hZ{(gvx8A`=YdKCoM;t4wIc7?E9K_aKmjFI7<)e7V;hNU$Wa(IPEx8 zzf6!@mlfJ1Sh3m|zNX#dn!SwNLXd-*n*nyiSui;~PY7&uyuq@2X#BR49_Iu8JX}+o z)usT9_H7seFz9*dhm| {$ zzTBist+M5WFaQA>y?vTZG{KP*mjTp7R=65meU)T+1T2W4IGWW_HUNbc6abysX0L!R z6Mk*>&LC>b1742sioIbNrL 0ETKmWbh$pXluRf#+ zO`mnk?}Dv&9am2O7#^I4^19wZ(i+4v;^?C*Y#y#338#4oSm4Kwf3&4Bikh>EHI%Zf zW{^t)quGnP?-s3#rlOSdl%85ndPod_A?~BWa FA+QwSG)!3u z<0@W#Tv`+a(7}bcm3ATpP*kke)r?xV?$cwsQ&IF<>rfi`$eQsHJ{A`gKfN4h8+&QM zNr2uFNUaC}1KA)4ADy%^ipg?FlZMc99p{ 0n1f~S|P*Nl|lr7~5F z#m{IyPW>2cdT9X=Ia5z_3txm};%f|hDD62!J4ftQJ24)@C+**SU 4$>KR_3+ zrbB)Xu3y;y1i)FdR`O3Qt+G{(11}OL7HA1NLcl}yN6t#51nCW@9IW*YtO=r4uzmWa z6w5n@?YHy4`O`F@V|k@RP-UQRoQr~h6BiO10f_b4hh{~UK$GoZ#1b@<0s(dG9VZm` zqDJwV8`q32SF-}Jcsa?zkyyX7Xiw$rn;TgaLWueWnfCT)4zs(C*;+tz89@{Iq%cBT zSg+|>#6nFeJ%Fk5XPwFxfr1Dqul91)>Z#9J_Sn^lA>GITXqn~fi+N~CoMMFOdW? 2-hWGO>?{ONDIZ6{L0P|T~Q36KkT2ag$Gk`#` za^<9TNkk(;%9uFfF#yQvqMLLIAOM7Hi{lDy%p?SRoYx7@BFYP88W952djSj40R&So zoK z<@?4OVj=W>)~zJiE-Bk2C9u_{0KpT>0M6h8KtFamxtNQDn+b=TXbxgCJ-AV0pQ$$R zbN#peN6)MxIDPz)#K}390VseEJ3wRvlx@@@pd$;m_8w1&`>b0ziIC)c70?>If~Yl! znPg$(5)?m8v)i`X`}2O@vvBxbdpB>-JNCA{W$$ITbwL3TxifF6X$^@Y)hwLID1eVT zE?ERQQo@ISfGI@dW~K4~u#5JVzETPG9_K|hM}6X4GOlfv+3)Z;jWAWOX8=3_%p?4B zo?sBF2Gw$;KEO>pH45J+BqZjn=yi_2*~|71d&_K;t~>w*s^{e=dlslv$7~CWC!PKr zT*IubWrU)~ET=`QX23_?VxI=!;6|0XWC&B70 mX?fG~5&397CLfnih uDqwy>q89JWB%TV+hH1EnjHtKY8N#(xxZ-gxJOlOQ?h+0?B z^{7xGXP%Dmf1C(w$ni# !;ZiEg0%P>$H04q4^k;A?aWS zVGG4vCSWZ~5A*0Ak5+(hx1Tt0D#e4*V%9vDf`lzPmKREnnoMs^<8^XIJlsz0Ux)Df zCmL}M6Z(ysC2X;$& %dX&kt02IR1&(<5=pWEU@xKwFdBtjULSBz^IWQM&;S-8 zq06v$oX<7rHy#Hy0a~bgJ|7wSmIR$Da%iI>v&qpo*oEsi7t`j>hkA7ACYejK#)I|9 zUN~V7Kz-%c96^urp2(t}I&405>0|?#MdPICiE|5)6hmpuLr)JX0G$2yZK~zb=d{>f zM-OtWIGxFFAvnuCIm_wr1y*3B0G%|7;@SuA&*lJxSwHyB(U*>@0iOwGW$iD%V3+K1 zbRr`t0_b-sS_bCcVox3Re@DoG4jT4X`E}tdOH_A*4lDSl!{`71M-F3-=dVpJjeq6m zp0c2O9fb*~UquP&pLW_0JGatvW3XT}Y>}Dy?woS}v&URSdg8?Sm65Z*Y&5^=xqNbD z?z_MI{pT#=ImiPPtE@ysw~G#B1oG$xH3V;octo54Rgi|Ua&rXj`T1cbfT}~k^7(f? zmnM$kMB}U1|Ly9?&5-;14VjG;VK5_QtIX5B0%cL7+xNolP`08~<6nW7B8`F@nabg> z_X{=Kp6Pu*beE bojs~OtsXH3E zkv)||wJN*>nM%&4XaFI^)mp5`a8(EEv9qTa!|@y CvT$Tfn7dOC} zz89X??;7fV!lUdgU&&0i{&rm7O>Ey?0fpacRY)tt$!4807D}TiURKi{U!g>Ed@Vxg zH>W^Y@Oc=e9IMjW@TISe<1K9#f@jtz*T!#bbnF@|k5@6yDqh}BD^j#kWt0|*tGzy# z%uhJE)$4D&2|*A(F&?dNmZAXCf$OV?%Tz@~D^&Nv7~b{5 J5!1J~o|JHySa) z@FfYx@`TD_*h)4CxkNCW;#4}b%BP`q *AedY5m~Q{Wb!? UmS(?9+P-}cjhnfaG@ z#7k)aAwBoY@BG$>IWF;EKl2w?))zmyK7n^X{frw0vx3F${`DAukw1lfzw#t^zhp5! zJ$L!acv#tb?0B0N1CR~eyl`W=(A;-ya0GvbK(uO2qg;ouXc)}UBj23+=NDiHk-qq) zd+D|(+A%&eck >a*|p z5I*q1-~1l_?GJK19Q)J{i%x-})i3^EdULsN4gQMlFGns!(l`J1M6_B*%CEoo#U+G? zS3dQ|FP9ERFqFVKh=`Ct%kK4c;Xm#dP%L}v9|nHxX*~iWpL@@PLVWRC(x)DzN_bij zNg^l?_xB@)DD>}bcYJ< iad<8DP~+$k3Eh9OB7QDkya6rh7fA?^6h z&wmmXYUq6VIST^T#+GR9(I4$ofGUZmD7RBmsU_Iyv9#;OXOv*&dmn9_J^i9)OW%dY zS9 3#QNB 8X$J9m!6FZO^=A25Il4eJ&wN zt!){*ScPgT>9o@*P-XwmjozH{w zf4v 6gE9a^uoQBY+T H-pmMa^We9*!d^w $VLEtGlX@Ax)p$Iv64(t;JY=wN6i2_TpGXa*)|!Xayj^P zk*g9}_ahA`P`HhN&DP>_6El9$)vN>%;vJ33$V|*=C4*N!)7|Jcn^5t=C_oC}|4a|B z>}JCwT@rVqLW%&apw`K%4ARKwU_4k}2H9QX?z%FPNhHg=X`Trbf!-mAgOyez>x E^f~8u`$M+F&_Xr zbw>6IFnt)mJJr8uAeML}D0Ua4WFNgI4A&aYAU3lUAgm}N6|WeHQlQ5!;K?<}DpHz= z03V$+T6g+!lDg*}XM%@YgAAHY)&Lm2j4qB?rvV5Jx@Bz{=9%&Y6*gnRGo8~QB|aC* z3AVritYrMzVJM%a;g$jdD{+#9peru~f)Y>>E7O7+*%E}-P^>Hx0*MH$4K|+!@KjlU z&LG1-ar)MJ;v8!__R>OPQICyl1Vc9>-RiMp7PuYBp>c@=T^;KX#}csRJc7aix;R?{ zF2Fq-B95urHI#KPx4ex)& ?L{TtzAT@RokKFk13P25_G&^mI-E_t5h(cIE&gFoaG-$yx zG_2@rQC#S!Az$QB5vu~S&V}YL_?v|@r$0^|Xe87)C En9ks#)+R1_SnCyDnns&a*qJ)%HH>hrb1J9 zYD}fLImoHzmBPoSMO8j^aY=rth=_(g6`8rmD5B7xMRsir?Bc~sQ;`ZtY=h7AY7qco z;=|dxhZ?GInn?Yi({t**A9Qai;>N#oqv`EeTomw5W)z!5=2kG5c^eOj6v}T>oO;kz z=(xrL;444cT1JNqKuFZRTu7e%)ckr2PK=CW5z&C)=$2F~U4)n&R9CxX 3uZmrUBouL~%I9Q!09?kb zjuRO~`4G}~3zXvt;n@tL`7}n&M!$Y`IhkcDnKAXgX87e{C4f`!j+0H#zNV@CL^u58 zmvira_W3S3pZMt8x8rFU*&$wBJ^k@hBnX^2mzC|eY!A3h3E*Ua#$%Vik$M0W=V6W^ zN>ifC7@qban~U+I=cs`WB=ZeZpG~4P54xrF7=FeR9I+-aKH+n5cix>3wGb7mY$w5F z%hj>M)`VMfGX4r+S}XP>IDiLjXIxb`CMA0>x_xeqPZHx&t7dO{QDICAdu*8sMWnR- z`c`8K$>G*fYMK)@DP!I(t!cYZ8F6qHHWOfo2E5_Bub*7XSMlq(5CLbt{OTi0Kw_Ef z=$Bu5%Zyh(VfJSqKj}MBXCU~3XC>`8){i+K`@;DB{~pkDE8|Pjo+owa_N1oT0pPX& zXeKu9hYjJ-%u-hk3ULu6KJ7yKpKz9x%=SF;{|jGzxL04C`tZKt#aHOb?_@jroAiZC z%XxJYI#lDw24Db#i<>1bDfc(X@=_hM6u)CWBrjQgF${48Cg&AbMde6<%lW-8IZsn| z?B%NLZW}G?@#~}=EIX Hc=Bq>`NM(%tndCw}+{?t16O-RYTcoPElSR-C!#2fsMtzbeo` zv_JWr6OkQz=EUsnZz|bDM%MGzzU?}>3QcFzQsA5lrPZ&jT@0`IK=oio6H&Ma;N#ws zh)h!d#;0zIUv;Ty&%DG@uL2VJwGSM26+O42?kz=wYU}`d1OP&Cq4azoK#6JV7AG?x zP79q8rkD4$T?IgN>8uTeQ7WjiokC7~p_uG93L|0PZmf+ur)0J?xdU#wk5;OGen~Fd z(Rh&M-v&it5OIE-HiE1KI+U&3Z7yE?ckEG%HvpnUv?3L;VqH`;0O+H(9R^@9DQ8cK zrbrKw9~+mr&^llZj@#YlNfA* PRH64@pc``$R|O(o3@ zhhMt+f8#l^22l5*zWJEKWS8 FG(R%#q3U`E z1r4$lO^1{Y96%@<4}mrn0wAPXhg1$6q1uMDb__r$+WI2x(ybLKTMq#<0SMO*pSj`J zcJJ>~^gnXPp+|`3{iLvi%}r%S8w$j>Ll!Fnp!KPry0~QN+}|eA^m?0gC_v wKXzSo`odhthn3T>|!&Nj}0kaef0q}4JXJ$ s{ff49rWy|xs?1tIfVoO{M2bY&(kU?wM1d-B@pA3CP&<3vuw%jMYTc-Wa;2^o zG8op4cg3Y~1OPE^mCHdD$NI1~HLF`nALp9gV$E<7k{zO#Ci)8qki^ DNmHC?EY^Nq)lihk_qq|I-phvR6urvD^PZC;+$qXsPVqEg~eM`R!6O zI)s|LN;IR+H%bKc|4(UF#PWQFoQeI}GATbUT JYP-bjmoHHtMVbDaF##wB@Se-Dz9;b!q; z?6Wh?Paq}c?pAmtLTlClWhwZLVst~&-BE3)%#JQ+#tYQ|LPbZ<_(rt23(uAj+Z8Rc zte}CNykZvOF+gRrMt))6Q#rAj#;F;yA8$YD${CmMKks{}lQlz353+R~X|(|Yq-(Ks z0E$fA3QYb$B+A{*wIdxPTB}nkhrJKeJ !(ZfsK8(&3-FYu_fRLG6Y>@Md3>r9mA&)5JSd~z6k qX4n z$`C;Vxf+HTG=d@}Wu6EMHx=wvSV0?CS-mzbQwRd(^`NG7=l1!zR!U+j50T6n&e|$X zSYyb4j4pm=m-wz$Afub_`q1_LDqwOUmJNH2@4AO3EqBqwu|ZJTE>}b<2rG4rB<%$J zVos)VOC7!VVTjlziEqB7Dfbw#i1~mR1$jtl190#%48U-q{l1UNl(}`!RE2V!Nqow? z-5Bnn9``bAJ;LaWnYoDwfJjJZ=H}Do@}fl`N3-=It>cSslw9pk?`*XXQ%?#@*f>*5 zJD-wc9izc&`L}>Ep0p3_m+mnDbWuxPCfVyA$7w|`qvWKoInpwID Wg zBOBphkb*g;XaofC#hP*abo!6;P*?An??O)cnZX$+AtI;%6lu4CBZMvnL9&F=EXK7` zv;dxs0-%5vz>jk8{D=1Ev`sy*b#HHO57>S4Y!}O?0~4#%LAvBNM6ynx7$#SU@>i)u zu|#Nzq6CZ|0lkQ0>&i6atIKOpK!U9CUfh|+pK-Eq&q@b`wA>J=H2{j |U(u9ykQ7yyvD4M}Uv!%UJ0$8Tijw=BX04=mY>{}8>DWmz= ze! 3qcub9W(R|(1EA3I?*0wFTp~(4~;yo$EwxTd1P)_fdU9I!()91U6MVE zIRWk6eyCg#03TJ>SjPNyi2z;>ShJaHx+D~6pZ{hkcj~(ng8=3G+PxXyRR|zZF7j{N zi)d@tgH-?lIJ!NMdHhb7?9Zv2`T6e3pnLmUc3QN)trZZudDzFz@12=H+b+xGYi=nH z-pPymShbnW(&FZ)_6m>iZRr4-SYz?q&ucApJZDAxP8WIJKC*JYsznlMoo8C3{lR7O zpid{j4}BtdcK1xWc*uvYKUFyZcJX)H%2-==_gJPP0-%$(c+FaDHXF4@1|}`Ms+nfV z^YrS~5 hzbyaw=SS+2=yDf3ZD;8;~MuU0Bq9tyR6m=|cg}acJnJ;5= z??PrSbX!0l0Y8`4->#ut9o_ebrFjbV8}IK~d-_nC0hY7mbn%^b=dK9KG22ldJxm@R zE^)x;Jv@4p+^|g>vJQSf2f1oF+)FeBfS}bEIs$-pUbbJ^7zPdL-z`-?=0<7oGHTQH zhkahGLtB@ yJK7xT&@jUe;{+v0>AWytK~ $cm{FfdB^k=+lXW0JzJmK<-Kh8 f^gTcap^Bn+853_3-l8c{J~G3$00r;wW~D@|fAF#M2i8`w$UC%7MA<@X*%AEOva z *4-FbfN(~z&Mo6)n6Kj5>!)}r;E zeTnJ(h-BKRWESfsFiFv~9oXyz$f4@YX*{T)VK0Y_aOvHv*Re0u{$fZaEw(AgQEl=r zE-qb+6L!BbQh)5p=wUV$9 z*7H3jKxk*a_Srl3GXY4rhbLs@@%3oB zEPZ~UECy|swp;sg1K=3t^M6XFo4K ZT`HA2C(x>pTBYA?l;-8{kTnEzpi2g#vr2$Fgf9%I)lYDJr}Ns z#a@o#LMY0#rPj?t0|$4jaiakO7)Uii>PRF}3|{KmV0ch cwJ^oGJurW%9`B|?72tW$+&~a`X4S*@EkP$*^MWAJMr9+6AB6Row5M#A|5&)vf z?gZvB71WR^J<9K5ZwecT2GElez-zy7$_GD2!+80DHUOYc+vk7!=+} q?NYwGbfQ}_ l1v@%;}s%?FSHJF#r-Xj-D`cM zSJH|XMo3UdOnrMdhJDsMNE{~gY)K!Xi;On@zJ*9i^D*pDLHjNqgVU ~6Qj&_G_w3KZdb^E)bRnfn=T_BsM^thvS z(fMEpcxA2_04^goDy9dU0*GDyE@~LOs^`O5SlJTAc%ZhOMD}(%639f5dPL>RtRa|b zGY{HYmnJzL9kx@=B|yaJqAA$Tc3MJB^7sJw=X{kZh-gKaYNxcHLBbXz{KjWg1etqD zP1zP|COQBdWxu6sHX3+{%vXA~^R9hE5dZ{_y=D7z?<`QP4%m60Z#X@GlUDOu-WZvv zc}08x*lpvsO;2>gTi0F1{?;}wRwRI%PHSPSy^;Cz!Y($SSv>6a(M7jQf=CI2N*sf= z_WFzj2vDIS3DQyFQai?kj?|b(%7)u@x}NtgnsQ4tzxp`qT1sAm5Gn1SPJDW`)92z0 zS*z`_w|wjXFliKf*v#EW`}0 &q2lW5Ok-eNIfUWGL z$^b+J0f;0pf-SA@u6Te${M1O@xP7PNP49?>d_~{0SF>Ths5mV7%l5B0w^8Dlhn|<% z&sqd_v)jC^swgG`4T%F>$Ui4XE&LJHT<-I;oek#nrts|b3(MtoWeBkH8}r*Hm(5$I z(d~!;HM6P3&s#~>XV(>1N{uO*>n;Uwa%4IMTtiUdTHpi$7(Ep$axqor^Q+aAFq=bO z0b`sk1yi&voV3OM>o6_ZSn{j2BfCM&x0AR(8*;Oj}+4hZ^LJ3P%XIuH{_Kiv%o>RXt zPt41CJ^*ZpW**kP(sPRzsnVYI$q=#D66e;rRRR;zYO*9zoZfCo;%y*#EYdN%XSq;D zA`yYVOq@@N{((UNqJ~>o#>W(CwV8F0Q?`KL?hN@+pDi;j!wilBbFD?~9*SZDm-x&!QEYuVM*PisWi0?PiZw1{sXIhT zCA&pCt;UxGMy+sr>>|DZi0IE%9ccU`EZb|jObP)R @8Q3IS=b0TC~6-5}(| zkN57Um+@iXo9ln1UDvk8zWTLJ&A*=$*=7$bkN>J~>rWiCC-tBVAs`I9A03 *k({Vq%VKhQ3}eZLN4;cd@~p#mH# qPdGEVr!v%qKPzK5GqD|HTwmH~hzf!M{xi)Hx*AW@3exvWK`0zu_#i5vI3=ZI#N z+i#6VqoTAhOAGfz3J4Log&9W!=3kBpF&iHN)nF(7_~()ci4))7vuOr%DQ&{yv|6B9 zD{Axlj?YYf?xtXxReC}WjxlP<#m#1JnqMqCZgl+C8Ib@8KptP#>&^}#GN#c1;M}T~ zMu`BJ%sZ-5yhH#!PwSYA#6S{n%By$;06pKN+L Jidk)BO>O}a|`>W zlYtUGst;T;*LbGR$Sfd}H=NrN1mLXoJSUul*^Kh@p#u^@fjm5n;D8cA6gmJzHx?ZD z%s`a%OhOL_mFX?2K<1sR>5}!yo3+9*gQY1=RU5DPd3NsZCVzK$jWnOQYx8$2CZ+)> zvvj62h=&g=eq-hUz0J+s6ColcDMItsL=4`F)fe1xJKY@kQD_X0(7e0ZrBMjXX~t7i zBGO|Ay0}v+;G|^F IC4l4?nAjm90)Dn-( z#Rjq!FhF7oOraqL08t`MjHPif<{8O^sj{cQSePe79qdWQF Odhp9kU(}6-gJDYp`JMFoc!9CDeG^A2CWu}8?QW0x+$s $Fkz z2apuEi&dJE6(cjDGoKF{RG&PI2vdkzsCLcQ5uPMC`cIYc+}{179!zhtJY8KMK61_Z zJiL|bhkM3_pknuB_rpDih+o@NE^a<<(yhB6> z{YV!pWG*=tk z*W3^He9!ZwyUQ(dc`jbs;3JmX0Vjp9{E2uvOyfbtq6hv2e;m3j7b z$!=gX!SNf93MZhy0rqOF)Ica$h`eAVpn&j>Yyct*ffQj}cLG}x|9_ZU=**RuNTx`S z2zr~cf#5juXMf6V-NeItHb?N0JuywG0A*xDI+XPS5KY`qFBuRJW`eVJLI`>$56%iA znnMiqnz8{!kPY8I-v$G}eq=8n_XURou{7DpLb+BhOeTOJOXcNq!Qyb=FJdku?E`BW zQyf!sL6O;3m+og5p{bfLr^v$qq5wqUQu`3I2of iVZ^?3Eoutb*gsPJGCIKRI*L_`AXg&|S*h8~pH*xYPS z%-UAnu!$-miBp)$0S=C(0k^JWH$z0et)GrOZ3_xSFZB#-vVDYYge0EF5D(x55PF4( z5f4JzUCj~sFQ5d0FZjyJbvpuxN3T0HZC=F@G>eEJJ}kzU89zeb1qd4qx+NIFE>d(Y zcOHi&IyjRuTk!yl6+(zXct+*FB!h+@x(b3Ns|a=H@fOO2B6^v~K91ltk~Z-5g@luA zlG4pdLnBMHZsx6BaE&{UQK#55>;WDi6!9WXa4)F b(?uB zHqr?@zVlcBq_;aHZN7vP72`I0zQCA>w8CbDNeBPe`D5%R@$Yzccf;b&y4<}-8+7Uop zJrVcAAtI6bY=Cv=F}M)IjOtr?yVpI&O@tuU@;LV}4FnK{U9wn$XyTCw{7uNiM?V;= z+Aw`p7qFi2LylQgcsx0Xww{t4CfqW5Q|2-v-`4Li!mFXDSIr1207cGox9ROXPUztr zj @}0@k6vBB5GF8>jr*G=;31aaSz=9B8ZDg zTO*`Ql`cB3h4$o~$Ghb>t}aHX4?G_rt9HtI6d{Mn VTV?AXr2z}SF)xlg^LX`ithmjYfdI2`J zV6}3BmCmrUiJZv*4?xC7oMK1sTlY~fD}DB`y-EZ`iyQ+hUBLfPB-Ah$k6{La_>GN3 z?(aGV+Z#AG9!P)o5_1+;1Ta7B<#Vk0<_Z2txcQqme~gEjf{SF^ZVeEDapy4*U+FjF z8M)|@1wdAI13w|mkYX`o{4W!*w)cpi*BmC7QTl$sR2hM|QKBq}`GG&aWT(epI82y% z$-@GNDM2^jh=?AKnsm#zY`-)t>VD@jWjMjeQbquoP*3YF^D9COYj~V{nHhWiA%LIl zD83fjgU?=qfE;^TcV4|S%*=h+!3-+wAp JkS{r25@uQ45a+CKNC0B!nQC-8N` z3Leur#tvr3XuSzR#IkKuw+=*(O)0By0k|>uCE@%c?-ajhD )<*8(YzJ zRyDPZ%zJ=+gYpUv;^2I_H}DNYO0~}75IeH~ }me+CEXiWq`pFGE7U3W>Mq5%2p-1&(bdTX@#?t%vv+OXdGyoAg6JOP zLY|^ehvpc!bK~+vg;?jDj@;jM?9SlC*wc#oCm&a|Pd=_f|Ma)jN^)SwKlhR3vjhzn zzbB?SkoAq-8`7eC6suUm2=72afFcV=CY}cCoHN3D6>@-cb`dX%av(l0c8GqM?T+yU z7^)~llo;)pLjU-;{nD4>EzBWciox-;(j?0UQ)3$q)E>o80A7y`jzmE}!yMpm`G*}r zENgkukWMs(0G8P3&(YJ7Xy$1KM#dq^tK`=O%sq{~UeqtYW?WwZ3hkqREI_>1vBj&6 zPZH3{W)Hb6Es;yHVt4~I9Jcwd+}ns0`9dbk5;8e~>?tf{EjHc^PeKCrGqClt-~M2S zj4(!O837WAu6DN4XI6kA_S*_AjIapfihbQc VKEA3V{KBu`l3V z%p{oMb_dflVOw{LwwMLbqLXPY0HzBW@4e}yzO% (P9#_s8HAJ;*z kxw{811U(`6k)dGKFTj@wj4`HEQN#dD z{Fvh|uXa90AZ^we{>2i<&!6b%#r*(MI3%P1F3x18d>n{gYdF+N>> u#<3ZmQt461;T=?4 o5@r>huB<9ZJG9eMN-ro$|j&L^iRt!M2O;_{#$m1I)d#J>Uv)>SzS&agn zqf3bbRP1=flfrd%4a(3*Q~3nDgKn9Lki^wU>|VZuz(?r;;H^hAa S{Iin$f9||A #gGS>EL#%tQ}gm6b{Bur9E 4XCNFkFcXpp;^G6WDw1{wepE3j|+A^ S;tzw32}@Z0@935Jf@zYlD@%>b1d4S&WDNc)^fOQ3qI z6F&rFs%c7mO`S*$%=zb7Zc`yZ>RPa>IBP)sT1|Oz5<83*PHNtkQWAi%5V3Ez=fajg z3mKhS-eqmgAdRUs;b9I5(i6i})tH;oiBA-q5p*r_jZkA#V~4k!OHVf+S}Q;tL)&{> zx|{=`hvT+ul2aiMmux>9lMWEteTRZwvZw~x(+~9$x|xp|_jv(t#=px&2Jzp1p}Kyy z*uc#YVX{^=g-_3%50u2?RQG`g_pO|v3XP1~y;E)=iBXOWg}YueDVrCG!focnhk}}! zPMeXnZt^9>w+_yc)Xl9Wp<`L~gXiZ0r*pT=$esjpNTrKY_K!qRUb7|z0l?2OYuu*m zR`mEeoeyqDwoR4C9KF3cvQ&u(Buxb`nUz_TmWVejHtI5urQ@ybc8=~ih~c!g5;6Bw zj(K!&s|*D|%XSW$^(ug3p=S~ZvF?E;%61~&=ui_;QP|C*&_4k6cX$<+IjqI+lXTF_ zDC?_h?UHI>mZFTS+frSyK7DbeOmVpVIQzhoQ}-H=z+FoecL8jRkHC6aIFMcQiy~?! zu_FLr0_)02(vz};5Hv~0$jIY``LaM;=H(1ygOfTjJXE`<4I6`0Za@(?D2*W+F---L z0EAhSn~T%VEQE~&5D6oO5ykM@CCa!#dVsP)7cR4L5yJ9U83f>ldY!X|ND%Q;$2?+* zp){e~kwJ3;kf#rWpb2|_@#J6>0*EpDG$3W!un&0^ImSEN^f2ArU}K!HGI?cYEh}@h zyKn?R$g?~!n5$cQ{n~ZTbi_gN#n8-b-_Qf>^I}(bX8iyH4P1tTyt~NUS*<2}!>(Y% z4+YcbE=kyz69CbU2kjCd0O-cfWvrNy00{DB?7CY6v|Hy~O&3jkY`18T0nF5K4Zw;o z-KP4lRD}irO@)Y71~HR81OT 7?DYH}wghto5&z_0~ ^Q3^fcoSgyB#TB%{a$G_i~aC0f-C*5VEnmQ?V?A%e0-nA_gErp HfM6#&T>~^j!y3;&h*6(`4X_izN8(J+pVn-=~hXM9ugDWFqB2VZZ z2^!q0`JL@C7m?gIv(|Py$8SRlhLES}Aq%k1)?67)iBry!(gVn!dpT L<=hvVx86R zfg=IRR@hcBfGC8BGGN^81v~;l^`nP
-Kb1QekQoBx4jQYZNjYsk%qy`B zavZ*l2oQ33n&)bRmR1!n*#H8?6tJ#N&H!$Vm3bDI34qX*_DNucGKq!v!$9KZH2W=) z5|SjDi&_9PQIkM1H95p`qBc)8=h!w~i_k#;`8koqNw#be(8oFQrQZr)ikPZo+s6?* zN|t%2v1$O2a+Q6SKiL(Dduf-1761`Ly*KPEwz2`Si>d%ZM7i5@P*PZjT1Gj+KiSC; zW|AqOu}20VA6r@@8i(Do?DELW+EUzxpo+dRPr8_js~+vqR1oaDezO2<4K}S(t`JmF z(}B@dqOrq@1jbgE?;UNn9J@Of(i}EnYSBG3c>y^4jS@v!Qj5I8s!aH!IbXN|B }}%g*T0DxO;bw#AQv91x6?&BD2>x_HO>03^cY>kbW> zry^Dok%0xEC?pj_90Zj67zqiJNIwSw5HVurC;=@?*g@U)nwjy?GiKs84Foe0=I6i$ zES%fRNCJ&i17z_)DSwd6sS@h=aEpx()1-3|0R0Tl`-z{(=AxJMm8(#0#Rb(1zTi(^ z3KaI0Hn=pSRQZPw;4aLl+ fhM`e;%N zPfajA54q6tpBg#hy*!DixmaDhtOg>frkLj(E(qU353K+ zrMC`ahXRlg;zEFhK$w6)%4BhcQ+B&FaEej{4YT;NF6aEY#8BcXt$7oV2#{JE>%5(+ zwlQaE=1oiyfRwsPJ8XdbnO*{BZq`TJWl~s#ZdCk9C%#iBsM?%0YgTXoKnNj&N9#N% ztqmg!){?{kgo5A2qKYAq_o9Cez0D|3I$C-OJb*ep)bb&9WbibPv5wgQxJ6bZ%m(2= zS+Oi O^8bRxkVq<}Oi7*~~g$`v -?k zIB@_WCbuF2@fL@F?S#SA 6;?76=0|QWXMA_%vc`R8$@X&v zMtV~n3V_No5=z-5JHNmE+fJ#4ivS`sbOQ$5R9Z6>U 7!*O^940=(uPJLZ5Bz@aZYpqp{$ T{;ebNKDT;`GG#o$=7kc4TVo((swWN|lEIPb*p10vZUf+8oF(w>p4ZRI= z0J+GRkJl??rU6T(8^1miZ#F7P6ycIL&u1Mtsn>?c)*cmruo$Lg3Q7Q*7aWUMki(!k zz@b$`D5b^F;(#0lbbLdQer!6WC#`@Eo|{O;a-hMi0ysz~vg)=>;5kVkYgVyF`ACV5 zfi!AUxuP?GmMLf=u3Q4TsM6#Au@V4=mam3fwm!->KMTkfwdnD}!#&*|T#Bk3OV1SM zvVamI@vOuB0HTJ0zR7fv#UzTZ0Rsvk>kky{U5#21uN<$BUs+SP)oV$F4vu)(HWj6- zzZY5XIwc4bxRG?XI|Yf7Tk_GATDm16;uTTM#8(StG2q!d^A3uSO;2zDLOwG+)o+vG zK$Icdf1Vy^(LssrgGk}ILbiIeo$_pDoi30mxb<5|`}Vb|^j*t{?a>9nW4M)WSCV zmU%v!axLicUUn(!a2lAiaB-Q>K>#6cdV1mhN?PIG*C^;XnM*+6?l)H>Hgx%RmM`bF z51R;0{|6gWXWAUt#@IUFTtomuU?B1#fCrD*Q3=9(-UI61Cu{gykec;D@3)&w1z&*X z1-n4spZ-Qeqmf;kptVND_A-kF0QaL%&`|DtM+9KSu1z{a|D-dmOaO!ltymL6?eE}K zyal*{KHhfvKu{ -en88#w7|Z5z9My%wk^(&aPGUC2-T3_=Z0aNii~`y;0O) z03n*5UlIc`PU~uP=?MU#?ZDVVLgnnxA%yMGo1UV|)h^3cpMctd7p7JcGH0{hD{#7s zo;O!l0tuk9b~fnHZJy~6{U}H~KQ_wDfG{4uCaHcV@WMm;%K@O}*}HrJpa8T#g&6Lm zTH}tW@SyANQK#eMG;ebPL$3|1N-(PFz2*yvw4~aBrV4XKj*uyYXT5_+?Y)U~o~P6r znZO3J{-IcbRBGf1kTyS-WJ#5pQXWg<1_B|6Vu)V0g?K1}n+X6hb=&boo>XbJ7L!sa zqN-0N(gh$<8l)K5PR^u*659YA?8p_lWh|A?+(!s~2ES7_P#!?-cW^^jIVC87Y*&{( z4r!Q=nmrs~H@(=} gr$eRRf z!rf)o-5}hJ%Ad5@(Jgy@exA@N5CHL=(NFU%76LplbVkZII*dOkjHLWb829=R{U|`O z$z{TtnNT^XQD#-Ww<;YM2RMNfO3LTf#4w|Bx)m6JY J3c8j3PeHP|GlZIcxByHxDq~!(B>*&&{0+GXOIUy8OPJL5A&o*k~kh+2}N(QLmp> z^}47X!%E~R4|OUGH+4Iby (A }+75d#vuwDT%k=to3H*he>8`4jKaNj|r+jL*O&>+^Fr78ni!6ymA_ zgKA`_kb)ksYWwu;7dO5Q1t7YP>MyyMk&GMVXM1EX4wTnO`)yAR?n)Bx@6Ih*6Byv& zj 8?pRU05Z_1 z08GPL fd>cRC$LZ)7# zSOAd$LlR8Fe#LYgGq{Dvc#^xAK?EJ_fly32(OhL0Z$nwjI?~Y+MLsKdm `2t#e4X>killv~OLIbiG}bR9f>er`PAO9` z;-!;HJVc?Pfwy^?Dx$cbCBy<~2 zH%)4gA^nl_oHo6gh Lh}GtO5`gL5yUYSoWvOFU6}Z8OJARNv}a- zDGGaEK+$S|l}TEpv4=&9MJCd;4&R0aC>8 `>legQ0qLk+ 6zzGU8p9<;)AVm8R0CpjaWLmTO!^KQi zMPcfUEpkw bL5J{~EFr`8O}n zqhAt e?i5Wi+S22q$SOxETV_n8|ov`vh&Q{gI&%GXtj BS1`b9+y%|6bu)+e8X~weOUH$`*_XaD8cnYl^ z6{eQVK+zKM2_p>o@rjWR9!ez0+d!E^GzqNO01TVn6nYJWrD<9$`_tt=RT?lZoh7Yw ztq6cMNHc?p?$J#|25tiv )DfVh1M{3CGwlLg{ PX`Jcvs6I@}kKHGQ`g8;exOYu)l z%EAhZXiRGse?EaQJ|7OUL4T;9)A+OXvwS8uPYHka)&UU&+JJlavC*D_EP~xd|Gn7} z^8JnX0WLE+YdytX04ZJGG#D{hDj)_D&_rt%zdQX$8DIG+OGyS05vk1G$M0qgmzqP| z$J(tC30^K`LLBS=m|~NBa`q4HRN`P#R-3GgO+;OLf?xz;B-6qKBi{#f25p?fG_t%V zUtZ$)^UDhg5`f%dkf4Z9;_l;<-RFpXoNBN#e>DS~q=QLUZ3tjNYldwcJy1k|AR?J| zv-JDwesO`ZT>_>6rg81kzHGUvCKJh$A&GIlmnB6f`#w%G6=^9Dt;{es&l|Tx*P5?P z>lBkJd#Sngy0dCMen7(MFA$N?nZ<7zuC>vVS24_wrvUv8NIb+NjN-&FJ92=+ IN~pgaC$LXykem=_VV;6nBg$Uoo}05Q=g zufKqU-SjYNQs!?w4lu=DY$CS*k$NE#cu4aJSNETq(Q_oP$}rbY0R>T%G*kJVenW59 zG7ep&BAe%*Q=~$QEK|#6vzP=ybjzA}(YDwQ+s(W4H``}U6nR4b#&)9J867CROBd QfCxj zE?E`r_yN#LjU8jqN^E5hz(H %Z$u0oX+X=z;`+kf8i1qy>oW-&em`4uIN1f^n^0`|Kp! zSjWtzfq#gj01{>+0D6kK87TmsA`sli?zz;gh$JzSRvNfp)9K(Xn?s2XS^si015;-` zrV21d%{ELXYm+zxAhuR&mmQcBJR~WnIL->)fCgZY?F{n(xjA5$09tv=inR$Nq2X2V zEqV}{t*=dZ*M>-SA~vt!XiZ;?ik#-UxGRC;*Zh_$;~9@o>y|8Yuk315R4C^4)-hlM zu&CfwLC`C>ODYkU(g@*4b)U?v%SW7?opVd3F999`CV)ZSV-3a90cavK#K!hH*8~!X zO3$@ZY$tRZZ<~uW`mxiHt5pQy8df^ur%VYGFhIl9iKB(9Th@zbynfxJ6LY+kt)(%b z1Hh1VaV L1NdQ{>>v qI*97!5 z>pKYoh!Adpt}y}h19cTK{fu~ROhax7Wtgo7B=QAvSHLm6FK}7}T18WkyE!x;Hmi*e z1wa%qLKww^0nVkI3H*|liR2+uZ==Kzu(e?uNE(>|5WP?U^cy9Vy#V0en+%S*9owo_ z5HXTOMYKrstjqSEU;_{Fd45irab%9^&+`kaB=iE;IqrHat(RgRH_+Xv{c<%J66AmY zc$G*=5L?4d0EXMHsV5;fsA%yWM`_`p%~TH2i1^VoAS{ItAaNqN%tcBO@zRN^w<@A% z8fMx!V2hLhVCTFYi-tKwjT;SwUb7Q}lg2@oF}x4}k&yA#U>k`*k=!N2Lxopzt)v89 zS0X^YA-$yQI`1hq(8m{9$0%)#3*5%%_zgfxFLzzpyUW&Np(19QfaqFk|HmsN_^}0= zwo`=)wBEwjX&{!{$wyoO5;! X1H1St6v3zAFG=25ko(}{C ztEH$m5JA;iRMa$=cD~&2Obgh}SNRZc<{5v-tm5x{j=uu5<@wI5drz}bsaSxRf9o?^ znn4rmHMpUmV5gEcOR%-KtbrJANzqa|Vk67h+FI#>f&`3PtHpk`KH^!&OE$>IMu=p# z&R{h)6RK!g%6)80FMa?rVivKcA_hf@NSOZAK`?R?U3F+{#|@C7IEJ`HBz>U}fDmtS za`*9g*&@5hI6WyMNkCBb_B6@Lu2=Y-V*xUS_wx?&Jd>&N2R_FZfSkT~zgKonvH^iY z#Db7bb~#ERVm}@f8$rd5Xa?K9x9DwaFo~>9ApjzQ@9gwErCw`YUD%qLOp0U#z;vdO zC;+qhYEG|SVp{ofA{d|*5Y04F&;X!7Hf2f>8JU$c>p5N6E<=+%rIk#;^h6%3Qw(p3 zl#^IjZ05vA0?6V{ogbP!3L%85Z!qkwC$5DQf-8|E4r1hin&5)&SNgrl=c67#p7#(> z=9x-`oA?Iz0(90Zy ((sBuoR7DR5s zLIH>l&RND<0e~KkjFWg00kU{l%vr@N7yny3yP$YRB(NR;5wo Hx-*heV6_`YV1K7e*vGk~k! z+(T-D=AZx+KuuBRp}jWsx@WJF09mf&HLNAUGk{(El=bWZkVWRIu8Uk $7iyM?A zHMT{%8ymx7pn3cl(c_t-E&!s$5M)U1=(YKN?(hI)Ca>f*^z!uPDF4HH?go%4_9b1b zTs;<|pAI)Yj6G%k(sxXXYY=Fj)dD4DLvO&VSOOsJti-4|)$;WcH!yJMKnSCa8E6fy zkq080gQzF~C88-}Kyk>}?6qm12Mj<2u%I22a=Md)dJ6_#-8Nj9%bc)wRs@0L--O z9*E{4=01TU^s)Oc#%h4%H0M}FtU-{*wei;%h$EEvo!u=6Dx%;JML+<-)o3XpQrn;e zAeJh-JT`jWzK>x6B+n(RAzp^Z(~N^`VgvFxfFP%JuX3H^&M1Hi2o${uCz^CY=;H*4 zaV5FXyPfLm%T8{{0tj?nGCf;BfCkCeT~x_YCrl!Gl8Dx9LebCdnhvnk1b|kI$^9M= zcy0AKxC0QG%1YJ{F9La*aEvW%Kz0C#WOaFSg?WK%lC8xT#L#GWG8rCPCgw~Zdhz5% z)it(d7U+QZ2-l;CTOeScMT?q%dOVDw`L>=X0vOFM;h=y8unF}795%LkZ1vo_=P?5i z>1GXaJex){$Zc$70}rAAq)ksTdz-!Hd@HH?(?$S8()JDAf*bqHES`{eJ5_IA2yAjs zRPiZaKO-Wh(m0;14|rq5a1ez63c#k&qDz$njz@ZI-D~Tfg93;w;0%_sggEY^5tMkG zo%9iJ=YGlnl4Ob5+r7eEWTvP;e+P{|{x>{g J((FSA&%pv%q2-cFXeEUoy0ZY$Elz_{Y7SP zv)5c|wkZOb&lLe^NiPVlRCy3GHYy-CZBXm$b9cmmR^84w2QbpU-b9Q|U8-#p5i$?c zL2%XoPw! z1J7`brcf6UQ_$OYRkSZ6x@j`9ftC7kXBB0?(eK#jI4K1wPN7i{iQ}T!c1fFNG(%S7 zOpUW^E;Fs}R?l|cuD8pCuhvGJHtk9;S|dVxkg-IQENZ}B${HDLmCzzG)&@sVQse6a z(X1dM`Ya#_aRHdwyuuKIk&USk1@S{hQvgO(x+|g>qhJ&yE~K~=C8e2UHM^Z9s~Pp6 zcM~c=?Fj@B{fW|-S(E-ygqC7+$Ke2uQgP$;;#aDwe8|_2h!6{BcC%0|MDZvAM-b7X z0ZIr3eE^&=k*-Em5s}!>p0M;mOkd(?w;m{s_O5n>k`O?b%$?;`P+r0U5X@_ gB^0&RTYp;rOWu_rfJ o1vl}b0+K+1BoF{F zPz3I_Qh*d^>OI`w-Hk|`o3kl^H3BvWmdMuN-PWl7g6a?w6a;!Hb_AledO!k}A1Z}~ zHCL)Tn-C=fQ1Px#Sk05Y>^s^{CB`HWERkhAuHWS8h+Im7IA%%H+_UxaqJjVjU=QQ{ z<@Hf(VM7N1NC;p8y(9q@r|NrGHM7i|j8UU&zahF6nq5xe@>P~g)K(-C#FP{OBIS04 zr0CC=md1OzK;)VYjXaL2AZcr9TLlDAk9pX;gjLT%lUbVU#{l{UXKs&H#;d`-Ce&44 zAT7bQj9}_fNA0qmaRfHf{)LtS8v&3Av|uQK9f8~$Py*d_f69YH;LUV%T>qppQVs=# z-I_{w`C7DuM1(KVZ75hpn;LF630bNfv1%a#4V(4k+zS-5?bhKW-~tBVgxUk%SmgcX z@cB^XvOQaN9|b`Xmsn6;bdeMS2vVWHHxZh~V{aWz){aIe@6TW@u#q6Qz!PZk-63@M zxF|Qr*ghHQEfLvLS~5-aNxn^OONn~5wN *u!X!imT9$1IG{Rj?a9Ep&HyaslqS!RK zMlwKoOt&S{#5R#&h$saD5CK3%P!gI{uX^m<|32xQ?wK{3hFoHhK65y2c0yxB03>?N zFx0gyn+Z_B&p +hzvtHcOV0YD@{LQ 1qdMtD8XPcRp&~tP5c;( zP+wwpO cFn-5CMKB)8HASkX*Ca{xDk2iW zW*YPo7l<>^oS=$U6(z^gc64dLHYm!rj|eUKJj7Ek$t6|OWTsRqYlSM+q5#Hw5F9Uw zHIdY`X(}mAs)rUL*aBpSJ!n0!xk+FUSW$ZZ|8*7i2LN!2NjZQ}9i9dV0D^cVYH~?a zSu(biOBDsI3IO6_8&C1T!6Zm%N4ilnI`)kUEKC{V|95CB&Mi-&lcAfck^qSe9@xRyx}RDw#QJMajC zwf7^6mv0X#8VRa{MlS>?pr}g9R!gO!Py-cEjPJ4_01gySW0Y7BR60b&vuy$vFbS*~ zD*FBc1v=jzP(0)ojFZ&~tqPD*rTTBmavTTIodv|hQ%#Cq3m|Y!f-PP(H`5s6Kz54l zU1?AgcNFLFE(IL$L}h0Mb<|{&AYit;AOr*~LFEwes4U4QSxvIb?qU+WQ1Dh#q*W`5 zR;*aXQOC+ugBP`4C{mqTEec*#Z5<+3@W4v{NtB~%`>mgxbKR@#?cY(j#9l*4@1~!)tV_=F7MM zpP!Ob>SV!>Ki|FIQkr*n!ouuLvvhZG@1ndGw5D*w`slKrqt9~Fe2B`fSNcJ}Z@jru zpLe;qVdm2{`zE@Iwt4$i1zo;7FFee@#^^B)8-3~f*5yT?__;byyy4m8`)q4o7ti98 z!(7GQkC?qrJ~q22ZZY>A?3|LEX6Z8OY#zU_P!na?+Y~pnIbi*2!L3t_XKagQ$(`kv zZW)`wJ2g?8o{zY&L6Ed==eg_ohMsO->q>8$qRYE)e~=Y%xL{DP*z60ENP|^M4LBlQ z@;JBlc$p%(B1w<4J$f&adX7#t*TjbypEvhEJInOlpcSspW@f_X18cdc0cl%%xjdd> z>i@^F$=m#Ulq|~{b8+dx#9iuwd1=qW_`r*@nf{HM=T*v#f`COols+x(f32)CA$h8Y z-{OL4xogLC-I2!ZkcMMtqz41>XaDw7YdY_)nS*`$wDzb)CO7kp9uf#qZQ?Zr8%; zw+AGZr|$MWd