From 12fccd034d8c251d7a69b3468de2a513991cc688 Mon Sep 17 00:00:00 2001 From: Richard Herman <1429781+GeekyEggo@users.noreply.github.com> Date: Fri, 29 Sep 2023 18:40:50 +0100 Subject: [PATCH] Initial beta release (#4) --- .editorconfig | 11 + .eslintrc | 144 + .gitignore | 131 +- .npmrc | 1 + .prettierrc | 17 + .vscode/launch.json | 25 + .vscode/settings.json | 14 + .vscode/tasks.json | 13 + CHANGELOG.md | 23 + LICENSE | 21 + README.md | 219 +- assets/banner.png | Bin 0 -> 151590 bytes package-lock.json | 4016 +++++++++++++++++ package.json | 79 + rollup.config.ts | 46 + src/commands/config.ts | 147 + src/commands/create.ts | 294 ++ src/commands/dev.ts | 36 + src/commands/index.ts | 6 + src/commands/link.ts | 68 + src/commands/restart.ts | 39 + src/commands/stop.ts | 36 + src/common/command.ts | 68 + src/common/file-copier.ts | 113 + src/common/path.ts | 24 + src/common/runner.ts | 86 + src/common/stdout.ts | 374 ++ src/config.ts | 193 + src/index.ts | 62 + src/stream-deck.ts | 169 + src/types/rage-edit.d.ts | 11 + src/utils.ts | 4 + template/.gitignore | 6 + template/.vscode/launch.json | 20 + template/.vscode/settings.json | 14 + .../imgs/actions/counter/icon.png | Bin 0 -> 265 bytes .../imgs/actions/counter/icon@2x.png | Bin 0 -> 387 bytes .../imgs/actions/counter/key.png | Bin 0 -> 827 bytes .../imgs/actions/counter/key@2x.png | Bin 0 -> 1709 bytes .../imgs/plugin/category-icon.png | Bin 0 -> 1064 bytes .../imgs/plugin/category-icon@2x.png | Bin 0 -> 2350 bytes .../imgs/plugin/marketplace.png | Bin 0 -> 53075 bytes .../imgs/plugin/marketplace@2x.png | Bin 0 -> 123111 bytes .../manifest.json.ejs | 46 + template/package.json.ejs | 20 + template/rollup.config.mjs | 71 + template/src/actions/increment-counter.ts.ejs | 39 + template/src/plugin.ts | 12 + template/tsconfig.json.ejs | 14 + tsconfig.json | 16 + vs.code-workspace | 17 + 51 files changed, 6635 insertions(+), 130 deletions(-) create mode 100644 .editorconfig create mode 100644 .eslintrc create mode 100644 .npmrc create mode 100644 .prettierrc create mode 100644 .vscode/launch.json create mode 100644 .vscode/settings.json create mode 100644 .vscode/tasks.json create mode 100644 CHANGELOG.md create mode 100644 LICENSE create mode 100644 assets/banner.png create mode 100644 package-lock.json create mode 100644 package.json create mode 100644 rollup.config.ts create mode 100644 src/commands/config.ts create mode 100644 src/commands/create.ts create mode 100644 src/commands/dev.ts create mode 100644 src/commands/index.ts create mode 100644 src/commands/link.ts create mode 100644 src/commands/restart.ts create mode 100644 src/commands/stop.ts create mode 100644 src/common/command.ts create mode 100644 src/common/file-copier.ts create mode 100644 src/common/path.ts create mode 100644 src/common/runner.ts create mode 100644 src/common/stdout.ts create mode 100644 src/config.ts create mode 100644 src/index.ts create mode 100644 src/stream-deck.ts create mode 100644 src/types/rage-edit.d.ts create mode 100644 src/utils.ts create mode 100644 template/.gitignore create mode 100644 template/.vscode/launch.json create mode 100644 template/.vscode/settings.json create mode 100644 template/com.elgato.template.sdPlugin/imgs/actions/counter/icon.png create mode 100644 template/com.elgato.template.sdPlugin/imgs/actions/counter/icon@2x.png create mode 100644 template/com.elgato.template.sdPlugin/imgs/actions/counter/key.png create mode 100644 template/com.elgato.template.sdPlugin/imgs/actions/counter/key@2x.png create mode 100644 template/com.elgato.template.sdPlugin/imgs/plugin/category-icon.png create mode 100644 template/com.elgato.template.sdPlugin/imgs/plugin/category-icon@2x.png create mode 100644 template/com.elgato.template.sdPlugin/imgs/plugin/marketplace.png create mode 100644 template/com.elgato.template.sdPlugin/imgs/plugin/marketplace@2x.png create mode 100644 template/com.elgato.template.sdPlugin/manifest.json.ejs create mode 100644 template/package.json.ejs create mode 100644 template/rollup.config.mjs create mode 100644 template/src/actions/increment-counter.ts.ejs create mode 100644 template/src/plugin.ts create mode 100644 template/tsconfig.json.ejs create mode 100644 tsconfig.json create mode 100644 vs.code-workspace diff --git a/.editorconfig b/.editorconfig new file mode 100644 index 0000000..20725c5 --- /dev/null +++ b/.editorconfig @@ -0,0 +1,11 @@ +root = true + +[*] +charset = utf-8 +end_of_line = lf +insert_final_newline = true +indent_style = tab + +[*.yml] +indent_size = 2 +indent_style = space \ No newline at end of file diff --git a/.eslintrc b/.eslintrc new file mode 100644 index 0000000..adee876 --- /dev/null +++ b/.eslintrc @@ -0,0 +1,144 @@ +{ + "env": { + "node": true + }, + "extends": [ + "eslint:recommended", + "plugin:@typescript-eslint/recommended", + "plugin:jsdoc/recommended-typescript", + "prettier" + ], + "ignorePatterns": [ + ".github/", + "bin/", + "dist/", + "node_modules/", + "template/" + ], + "parser": "@typescript-eslint/parser", + "plugins": [ + "jsdoc", + "prettier", + "@typescript-eslint" + ], + "root": true, + "rules": { + "indent": [ + "warn", + "tab", + { + "SwitchCase": 1 + } + ], + "jsdoc/require-jsdoc": [ + "warn", + { + "contexts": [ + "ClassDeclaration", + "PropertyDefinition", + "MethodDefinition", + "TSEnumDeclaration", + "TSEnumMember", + "TSPropertySignature", + "TSTypeAliasDeclaration" + ] + } + ], + "@typescript-eslint/explicit-member-accessibility": [ + "error", + { + "accessibility": "explicit", + "overrides": { + "constructors": "no-public" + } + } + ], + "@typescript-eslint/explicit-function-return-type": "warn", + "@typescript-eslint/member-ordering": [ + "warn", + { + "default": { + "memberTypes": [ + // Fields. + "public-static-field", + "public-abstract-field", + "public-field", + "protected-static-field", + "protected-abstract-field", + "protected-field", + "private-static-field", + "private-field", + // Constructors + "public-constructor", + "protected-constructor", + "private-constructor", + // Signature + "signature", + "call-signature", + // Properties + "public-static-get", + "public-static-set", + "public-abstract-get", + "public-abstract-set", + "public-get", + "public-set", + "protected-static-get", + "protected-static-set", + "protected-abstract-get", + "protected-abstract-set", + "protected-get", + "protected-set", + "private-static-get", + "private-static-set", + "private-get", + "private-set", + // Methods + "public-static-method", + "public-abstract-method", + "public-method", + "protected-static-method", + "protected-abstract-method", + "protected-method", + "private-static-method", + "private-method" + ], + "order": "alphabetically" + } + } + ], + "@typescript-eslint/sort-type-constituents": "warn" + }, + "overrides": [ + { + "files": "*.mjs", + "rules": { + "jsdoc/check-tag-names": [ + "warn", + { + "typed": false + } + ], + "jsdoc/no-types": "off", + "@typescript-eslint/explicit-function-return-type": "off" + } + }, + { + "files": [ + "{src,tests}/**/__mocks__/*.ts", + "{src,tests}/**/__tests__/*test.ts" + ], + "rules": { + "jsdoc/require-jsdoc": [ + "warn", + { + "contexts": [ + "MethodDefinition" + ] + } + ], + "@typescript-eslint/explicit-function-return-type": "off", + "@typescript-eslint/no-explicit-any": "off" + } + } + ] +} \ No newline at end of file diff --git a/.gitignore b/.gitignore index c6bba59..bdb3642 100644 --- a/.gitignore +++ b/.gitignore @@ -1,130 +1,5 @@ -# Logs -logs -*.log -npm-debug.log* -yarn-debug.log* -yarn-error.log* -lerna-debug.log* -.pnpm-debug.log* - -# Diagnostic reports (https://nodejs.org/api/report.html) -report.[0-9]*.[0-9]*.[0-9]*.[0-9]*.json - -# Runtime data -pids -*.pid -*.seed -*.pid.lock - -# Directory for instrumented libs generated by jscoverage/JSCover -lib-cov - -# Coverage directory used by tools like istanbul -coverage -*.lcov - -# nyc test coverage -.nyc_output - -# Grunt intermediate storage (https://gruntjs.com/creating-plugins#storing-task-files) -.grunt - -# Bower dependency directory (https://bower.io/) -bower_components - -# node-waf configuration -.lock-wscript - -# Compiled binary addons (https://nodejs.org/api/addons.html) -build/Release - -# Dependency directories +# Node.js node_modules/ -jspm_packages/ - -# Snowpack dependency directory (https://snowpack.dev/) -web_modules/ - -# TypeScript cache -*.tsbuildinfo - -# Optional npm cache directory -.npm - -# Optional eslint cache -.eslintcache - -# Optional stylelint cache -.stylelintcache - -# Microbundle cache -.rpt2_cache/ -.rts2_cache_cjs/ -.rts2_cache_es/ -.rts2_cache_umd/ - -# Optional REPL history -.node_repl_history - -# Output of 'npm pack' -*.tgz - -# Yarn Integrity file -.yarn-integrity - -# dotenv environment variable files -.env -.env.development.local -.env.test.local -.env.production.local -.env.local - -# parcel-bundler cache (https://parceljs.org/) -.cache -.parcel-cache - -# Next.js build output -.next -out - -# Nuxt.js build / generate output -.nuxt -dist - -# Gatsby files -.cache/ -# Comment in the public line in if your project uses Gatsby and not Next.js -# https://nextjs.org/blog/next-9-1#public-directory-support -# public - -# vuepress build output -.vuepress/dist - -# vuepress v2.x temp and cache directory -.temp -.cache - -# Docusaurus cache and generated files -.docusaurus - -# Serverless directories -.serverless/ - -# FuseBox cache -.fusebox/ - -# DynamoDB Local files -.dynamodb/ - -# TernJS port file -.tern-port - -# Stores VSCode versions used for testing VSCode extensions -.vscode-test -# yarn v2 -.yarn/cache -.yarn/unplugged -.yarn/build-state.yml -.yarn/install-state.gz -.pnp.* +# Build output +bin/ diff --git a/.npmrc b/.npmrc new file mode 100644 index 0000000..511db85 --- /dev/null +++ b/.npmrc @@ -0,0 +1 @@ +sign-git-tag=true \ No newline at end of file diff --git a/.prettierrc b/.prettierrc new file mode 100644 index 0000000..e39d893 --- /dev/null +++ b/.prettierrc @@ -0,0 +1,17 @@ +{ + "printWidth": 200, + "semi": true, + "trailingComma": "none", + "useTabs": true, + "importOrder": [ + "", + "^[./]" + ], + "importOrderParserPlugins": [ + "typescript", + "[\"decorators\", { \"decoratorsBeforeExport\": true }]" + ], + "importOrderSeparation": true, + "importOrderSortSpecifiers": true, + "importOrderCaseInsensitive": true +} \ No newline at end of file diff --git a/.vscode/launch.json b/.vscode/launch.json new file mode 100644 index 0000000..657838e --- /dev/null +++ b/.vscode/launch.json @@ -0,0 +1,25 @@ +{ + // Use IntelliSense to learn about possible attributes. + // Hover to view descriptions of existing attributes. + // For more information, visit: https://go.microsoft.com/fwlink/?linkid=830387 + "version": "0.2.0", + "configurations": [ + { + "type": "node", + "request": "launch", + "name": "Launch Program", + "skipFiles": [ + "/**" + ], + "args": [ + "link" + ], + "cwd": "${workspaceFolder}\\template", + "program": "${workspaceFolder}\\bin\\index.mjs", + "preLaunchTask": "npm: build", + "outFiles": [ + "${workspaceFolder}/dist/**/*.js" + ] + } + ] +} \ No newline at end of file diff --git a/.vscode/settings.json b/.vscode/settings.json new file mode 100644 index 0000000..ec1b8ad --- /dev/null +++ b/.vscode/settings.json @@ -0,0 +1,14 @@ +{ + /** Prefer tabs over spaces for accessibility */ + "editor.insertSpaces": false, + "editor.detectIndentation": false, + /* Explorer */ + "explorer.fileNesting.enabled": true, + "explorer.fileNesting.patterns": { + "*.js": "${capture}.js.map, ${capture}.min.js, ${capture}.d.ts", + "*.ts": "${capture}.test.ts", + ".editorconfig": ".eslintrc, .prettierrc", + "package.json": "package-lock.json, yarn.lock, pnpm-lock.yaml, .npmrc", + "README.md": "LICENSE" + } +} \ No newline at end of file diff --git a/.vscode/tasks.json b/.vscode/tasks.json new file mode 100644 index 0000000..3a294f1 --- /dev/null +++ b/.vscode/tasks.json @@ -0,0 +1,13 @@ +{ + "version": "2.0.0", + "tasks": [ + { + "type": "npm", + "script": "build", + "group": "build", + "problemMatcher": [], + "label": "npm: build", + "detail": "tsc" + } + ] +} \ No newline at end of file diff --git a/CHANGELOG.md b/CHANGELOG.md new file mode 100644 index 0000000..34f2a73 --- /dev/null +++ b/CHANGELOG.md @@ -0,0 +1,23 @@ + + +# Change Log + +## 0.1.0-beta.0 + +### New + +- ✨ Add `create` wizard for quickly scaffolding Stream Deck plugins. +- ✨ Add `link` command for linking plugins in-development to Stream Deck. +- ✨ Add `restart` plugin; unloads the plugins and re-starts the plugin within Stream Deck. +- ✨ Add `stop` plugin; unloads the plugin from Stream Deck. +- ✨ Add `dev` mode toggle for managing developer mode. +- ✨ Add `config` for managing local configuration. diff --git a/LICENSE b/LICENSE new file mode 100644 index 0000000..729d182 --- /dev/null +++ b/LICENSE @@ -0,0 +1,21 @@ +MIT License + +Copyright (c) 2023 Corsair Memory Inc. + +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files (the "Software"), to deal +in the Software without restriction, including without limitation the rights +to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom the Software is +furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in all +copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE +SOFTWARE. diff --git a/README.md b/README.md index 07e2b27..53d62fd 100644 --- a/README.md +++ b/README.md @@ -1,2 +1,217 @@ -# nodejs-streamdeck-cli -The official CLI for building Node.js Stream Deck plugins. +

+ + + +

+
+ +# Maker CLI + +![Maker CLI npm package](https://img.shields.io/badge/npm-v0.1.0--beta.0-blue?labelColor=grey&logo=npm&logoColor=white) +[![SDK documentation](https://img.shields.io/badge/Documentation-2ea043?labelColor=grey&logo=gitbook&logoColor=white)](https://docs.elgato.com/sdk) +[![Join the Marketplace Makers Discord](https://img.shields.io/badge/Marketplace%20Makers-5662f6?labelColor=grey&logo=discord&logoColor=white)](https://discord.gg/GehBUcu627) +[![Elgato homepage](https://img.shields.io/badge/Elgato-3431cf?labelColor=grey&logo=data:image/svg+xml;base64,PHN2ZyByb2xlPSJpbWciIHZpZXdCb3g9IjAgMCAyNCAyNCIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIj48dGl0bGU+RWxnYXRvPC90aXRsZT48cGF0aCBmaWxsPSIjZmZmZmZmIiBkPSJtMTMuODgxOCA4LjM5NjQuMDI2MS4wMTk2IDkuOTQ5NCA1LjcxNzJjLS40ODg0IDIuNzI5LTEuOTE5NiA1LjIyMjMtNC4wMzg0IDcuMDI1M0ExMS45MjYyIDExLjkyNjIgMCAwIDEgMTIuMDk3IDI0Yy0zLjE5MjUgMC02LjE5MzktMS4yNDc3LTguNDUyNy0zLjUxNDRDMS4zODY4IDE4LjIxODguMTQyNyAxNS4yMDQ0LjE0MjcgMTJjMC0zLjIwNDIgMS4yNDQtNi4yMTg3IDMuNTAxNS04LjQ4NTRDNS45MDE5IDEuMjQ4IDguOTAzMiAwIDEyLjA5NyAwYzIuNDM5NCAwIDQuNzg0Ny43MzMzIDYuNzgzIDIuMTE4NyAxLjk1MjYgMS4zNTQgMy40NDY2IDMuMjM1NyA0LjMyMjcgNS40NDIyLjExMTIuMjgyOS4yMTQ5LjU3MzYuMzA1MS44NjU3bC0yLjEyNTUgMS4yMzU5YTkuNDkyNCA5LjQ5MjQgMCAwIDAtLjI2MTktLjg2OTRjLTEuMzU0LTMuODMwMy00Ljk4MTMtNi40MDQ4LTkuMDIzNy02LjQwNDhDNi44MTcxIDIuMzg4MyAyLjUyMiA2LjcwMDUgMi41MjIgMTJjMCA1LjI5OTUgNC4yOTUgOS42MTE1IDkuNTc0OCA5LjYxMTUgMi4wNTIgMCA0LjAwODQtLjY0NDIgNS42NTk2LTEuODY0NyAxLjYxNzItMS4xOTU1IDIuODAzNi0yLjgzMzcgMy40MzA5LTQuNzM2NGwuMDA2NS0uMDQxOUw5LjU5MDYgOC4zMDQ4djcuMjI1Nmw0LjAwMDQtMi4zMTM4IDIuMDYgMS4xODExLTUuOTk2MiAzLjQ2ODgtMi4xMi0xLjIxMjZWNy4xOTQzbDIuMTE3NC0xLjIyNDUgNC4yMzA5IDIuNDI3OS0uMDAxMy0uMDAxMyIvPjwvc3ZnPg==)](https://elgato.com) + +
+ +## Installation + +``` +npm install -g @elgato/cli +``` + +## Usage + +``` +Usage: streamdeck [options] [command] + +Options: + -h, --help display help for command + +Commands: + create Creation wizard. + link [path] Links the plugin to Stream Deck. + restart|r Starts the plugin in Stream Deck; if the plugin is already running, it is stopped first. + stop|s Stops the plugin in Stream Deck. + dev [options] Enables developer mode. + config Manage the local configuration. + help [command] display help for command + +Alias: + streamdeck + sd +``` + +## Commands + +- [create](#%EF%B8%8F-create)
Creation wizard. +- [link](#-link)
Links the plugin to Stream Deck. +- [restart](#%EF%B8%8F-restart)
Starts the plugin in Stream Deck; if the plugin is already running, it is stopped first. +- [stop](#-stop)
Stops the plugin in Stream Deck. +- [dev](#%EF%B8%8F-dev)
Enables developer mode. +- [config](#%EF%B8%8F-config)
Manage the local configuration. + +## ✏️ create + +Creation wizard. + +### Synopsis + +``` +streamdeck create +``` + +### Description + +The creation wizard will guide you through creating Stream Deck plugins with our official Node.js SDK, and provides all scaffolding required to get started quickly. As part of the wizard, developer mode is enabled, and the plugin built and linked to Stream Deck making it ready for use. + +#### See Also + +- [dev](#%EF%B8%8F-dev) +- [link](#-link) + +## 🔗 link + +Links the plugin to Stream Deck. + +### Synopsis + +``` +streamdeck link [path] +``` + +### Description + +Links the specified path (folder) to Stream Deck, effectively installing the plugin, allowing it to be accessed from within Stream Deck. When the path is unspecified, the current working directory is used. + +Note: The folder name should reflect the UUID of the plugin, and must be suffixed with `.sdPlugin`, eg. `com.elgato.wave-link.sdPlugin`. + +## ♻️ restart + +Starts the plugin in Stream Deck; if the plugin is already running, it is stopped first. + +### Synopsis + +``` +streamdeck restart + +alias: r +``` + +### Description + +Instructs Stream Deck to start the plugin, as determined by the UUID. If the plugin is already running within Stream Deck, it is first stopped and then started. As part of restarting the plugin all resources associated with the plugin, including manifest definitions, are reloaded. + +#### See Also + +- [stop](#-stop) + +## 🛑 stop + +Stops the plugin in Stream Deck. + +### Synopsis + +``` +streamdeck stop + +alias: s +``` + +### Description + +Instructs Stream Deck to stop the plugin, as determined by the UUID. When stopped, the plugin and all of its resources are unloaded from Stream Deck allowing the plugin to be changed. + +#### See Also + +- [restart](#%EF%B8%8F-restart) + +## 🏗️ dev + +Enables developer mode. + +### Synopsis + +``` +streamdeck dev [-d|--disable] +``` + +### Description + +Developer mode enables the local development of Stream Deck plugins, and provides the Maker with additional capabilities for building and debugging with Stream Deck. Whilst enabled, Node.js plugins can be executed, and it is also possible to debug the property inspector locally at `http://localhost:23654/`. + +## ⚙️ config + +Manage the local configuration. + +### Synopsis + +``` +streamdeck config set = [=...] +streamdeck config unset [...] +streamdeck config list +streamdeck config reset +``` + +### Description + +The CLI gets its configuration settings from the user's local environment. These configuration settings define the output of commands and how they're executed, and enable customization of interaction. The `streamdeck config` command can be used to update and manage these settings. + +#### Sub-commands + +#### set + +``` +streamdeck config set = [=...] +``` + +Sets each of the configuration keys to the value provided. + +#### unset + +``` +streamdeck config [...] +``` + +Sets each of the configuration keys to their default values. + +#### reset + +``` +streamdeck config reset +``` + +Resets all configuration keys to their default values. + +#### list + +``` +streamdeck config list +``` + +Lists the defined configuration, eg. values defined using [config set](#set). + +### Configuration + +#### create.mode + +- Default: `prod` +- Type: `prod` or `dev` + - `prod`, the latest supported published version. + - `dev`, the version defined within `npm.streamDeck`. + +Specifies the npm version of `@elgato/streamdeck` to use when creating a Stream Deck plugin via [create](#%EF%B8%8F-create). + +#### npm.streamDeck + +- Default: `undefined` +- Type: String + +The development npm version of `@elgato/streamdeck` to use when creating a Stream Deck plugin via [create](#%EF%B8%8F-create). The value can be a version or local path. + +#### reduceMotion + +- Default: `false` +- Type: Boolean + +Determines whether feedback provided should prefer reduced motion; when `true`, the busy indicator will be rendered as a static indicator. diff --git a/assets/banner.png b/assets/banner.png new file mode 100644 index 0000000000000000000000000000000000000000..1d873f93a413e34ca981fc9e2f1731a9015657c1 GIT binary patch literal 151590 zcmV(;K-<5GP)uB7O_s^Zs?4mc^qJS+Hzv$BPrTA$Nuvq5S0Iye?;n+_Nm`fxr+9TU}xOL`pq?LZEfeD15!$8uM5i8_L#PlS{vni z`C9&o_Vs%CJ=%-W?~s3txxqn1;b^z(`@_)QAy{i$DQSO$Un@YR_NKqzF6Xv~8PW*v zR}7|9KrMX_biKh1U`sX@eE4?pwyf!lJg34DF6{L9_|wkJ@Jc+Bm^(zeNG2Yo@m#c+muEjt1%XTk+AL*NY-=0!r~13_wRR{z~wD@ zpMKBBVJt?Bh{hLV8M{&jG{OdNa{bp!Oc7^-RTW_(T3)+$6}!7*e~$z_ksypj+tfO& zcr^((zD_=_;3FqTftBolSi53!6u&|E^g-!3T@xx@n_iICexNS!3Xsy`wyFIo@>0k} zG?%ctvYK_zK42nyX`(X&@yzo=dN}l9$LNz!^b)iz|6aa)Im^$kUva!RNXcpHEz{VA zX#>;L+8gnJbsB6*dRWlCA29acfq7lE*Yi`D{QWB8smZ^M%|R6$J$6)aAADtx1QtWj z?}gnS3q1_L`;ka+g1}EAb4vUZy<@-7(oZlW|60NWDHtlOfOX zBIdDy2`uwi>Bn;D&><`?F7~oE`MCW<_;quF*E1Y2H+th4ey3gC-PysFt5=AZ#2=a3 zX46U25wflgT5><=_|I%5`-L4plWs77$7tH#1=)WZs}C!o6FK5<=7XtYVSbyvWOm9? zLMSdWRQ+d}Ln)?A={AJq*6jj<|L64y@vrjTf;s{<)fYjI#_`mGIeAqN2m4<5qJ zwKZ(4Z)k@@RSu3i#)BIG)MuI(fMCKV4gQ=U6vZ%bV4@79PNaI#gvl1j41;t|t~s4G z_zLNBB#A{F(lbc;Uvu6gP_nUArywiDVoQhFtSLvRlkD#^35IISJUkM-PhcS7iPONxpP^aT-L8Q@t zaJ&x0*cNa$SOpBhAbSV7tU@eM30e+~Uz9I6z$^k++spSh*RxZo*&Gwcn zFrl#;&Wpk~+)LnuWw5svfxr688df|G4apS`q6#LYvMC+IzD%5o!R2=d{;F`Y0&NVr zva*tu_HK1V2ct<~$rXh;qsCvOIdLM&3&!86L6I=0516-Y;Ekt;aK^OFq;w7kmV#+T zn52-Q_S&rSk~^f@R)uMR1^|ZonU5z74>XV%+E^6y=6pB((FL5@Z=dCccPnp1&>M6$ zJcwh)2szWSjf$rcfj<}>m1noNGJTdu%ob*WGYf1G6ELP*42=Vcd`hH;iM}CU?E#zL zF<#)nh9xfS25h8QU0ucX8#fyLoKpvty|GOy3=()B6X`j0xJx`!kWB9u8tNF0yn}SX zk7)ZmmM|WPoKSUWN4R|WM1T%B90P9%?l>?n4?3|?0!6nIDR@)D5lJ-G@@#Ql_wCdXHzk zO?@();^3ozDRq#CPNV<~aKDl#&$`K&5XJT;HQIa+@#lIcIdG8()__JK71JewOCE=t zZO2S<{lj(zDR{1PsyjMy;6nVG$bFW1K5_j-LrZ(XpBxbYCV{IOJj0RUB3XxnbmJ24 zYz~^>h4SufHselc{6Tk~fKO~#K=O=`@$MtU)7n5h*Y0iaY$H6NXoLC1;g^0&yW>=z z)baQD+4ir)%&*#u&R*`cws(wh$}fY-j|}K0H--8Y!e-|qM!T>!V6=_*$4zKxPbk6R;kP`6$7@D z9ilqO{M;~@u$j=3@iQeOrob2xgU1ZxZf53%p)+vi^;Tl(tehKN3Vg=V93c`!1$^+V zM)YMF7U>*Va}q?O%rr4<`T9(MxR3^Xdr+*|@sSA=j8(qPJT4JuG7Cb4oB(mctCL-u z8$vP9b!`GYbWy*}P%$&R0Z#_Y;4Ql1OU5rwI2}=B=!`}(lc1rnanyF4R}`ljL={JM zL_yl3`{dA?k*EQ&!HodJ^jw8F$wWU;7@)jS*-SG?t_Kmk zJCl|ia81*-9&35n%S6nZor~aQ9V3*uo;~W}*Bolsk}k`A(5ZoTjE0~j?If5F1|;lahZmEn)M1I< zW!n>W#V3wp0Q45OKe5w@?;YfBXBbC`U<~tHtTg1! zX3>s7nKq*AqO6%|%rO&AO_etmX71d#0meIaJ!YMU>I@i+O$f|5sUfYwS{VGnhFSWW z*{tWFL?4=AGJzr@T6_9t_pCFt8&|ytf}@N-|5u#G8jL9p#BiknM1^8dn02i1@w7J5 zTp#8Z#To9u*7=bOfwSR1uBFBSX+j3`f%8hx;v3yuP+sgQfC)7+4 znl#7GAzjoacwX7MO3pAINNBsGIZISMVa|*5KG{dXFc}}=i^i)r>h~1l-$tmin|!mOXClbxrTUc#i|mm|P>h5D1|MO(*vH(N!e+5q9k>4cVtNvPAU?T%S^x zE=@6vAvy!;#695OD|^FI*?2m+oR=@P)Xbkrjx!(;?<+6c|4a=~VAc9d6WU4l$HvGw zwDz`lcDna$lDU(Az-ctq3m{&Wu6^|55XDaiKRVhwugN4h62hhrP24UqFN*fXu!`bv zIvF`9zxq<>GSizjX*OVKX^8?+ftr2qN*(V^#2JGrCyhbsTx5%` z2~ir1#6(XBW%=yex4+IFRtKQoYR*qJdi9YZMnZPIa>oca?Sq4{f2K2=;FU*v##zaiw7VBahw0ooPUEWg=1l34tml% z63$V@)0p56wuItrPINf#(O&fFV@=@*HCzt;SP4gibNYbZaYDc+;fVSD+{Z=^YSM1< zK4jwfaT^S`{q<|g1mRRe@9VQFBOU}I@FPUK#-kGYLm_K{)evJ%?vD8TAVb-n>930# zpHfP?yu7UUf?rJjJtL5eHuhhP3EoTm&v~9Su+g>!ZUqJoG);C@XK)Z%|06lWlwTVT z%`(j_m^Qvtxp#+G@$6-gFdkPtoAZppgUEqpArwNmEqD#yZev&YOuvB)g4>Z4fwO~c#-`^e`_z&^1b>+2SzKJI znHrx-Hyu5)!yC@KO&U0lID8Fv!$A5)`{Mf!AAJuf310mjj$PdI2L#{%nfs`ZNE`Q@ z6OqDcgW0r(q_7zTlhb!--*>jRF;@=dLmX&S4QXTNForz|Aq)6@wo`=B5tB>G(#B7HM$G8jm!V1Dm%;!+$A^|lGn*+L;1aro?sf8N&r9Hd{~8VbS_;Qn z5MvC?^xwEY4^GmAvU6~28!58irgq#~86QXhTh_B0E~Vq;2_HF(B#$uK#C@hwfF^T) zh1%N5!Hi5e(8_Q_M~L0Pv{ehPq=S#`YCPXfP}q&cq9jDGUfP}BA(R0x_L9EjS>z_u zky%YV6zZFGc8@o4Jy6;yCG0)IKzQkC;yM@eaLYu8boLaJHVAhMQvvWYE>oIdoh8wT zLgKTtz!v&>j8if%h*h3FVJc$O&AOfTn9UwEx^lw zhM2K0Pqk7O8M}w_ahB&$+II^sP_2%=SByi?mbR{VE3~A^3#^5z(oq{a?TB^{P z&2X$~7Sy!4!Yf`|*~Z@<5jRXJuuOfyIb`aH+S&}SO-JyDDJ55a2&ZJMWkSXu_FRmQ z8P{=cvwEqgb)>KZZ&Ts7k{_{m6mC{}wzi}76F6`MZhe}vNCCq}o(@C zPGgFoH>C)~6PLLe@37+U1=ik)H3DP|Owp*UMO`eqa_s zl$JtK*k;aBH$&7m{?O7sw9?LT44PQ!WjN)%5lGrW(2rz+@u;$67Jl$GVA_|=tGF8^G%)W)H5#kJTY8)lQeV2_YP z9f`@cl`1GN6z;Ff$yMjCEG^^a&aTs8&~j#l!1Y7ai-!eu$6ed+91*n}?GKI72}QKf zHq2pi{%7SU(m4&j?nlC^v@20^SZ?hWxQM4LVBorSYa2*Jb?XN@8Ppt$;y57%{*1p_ z_Sm5Y$zZb=BdnY%`Y_!~{U-QilHg7Jm)mc#zKve)O!3Sqj~{X0e2qPt zpVLQtiAbBeF-iBlLnXbQZ7)jC&o1u0jpOD_-z4HI(+8N0e*#Fu6_4BA*VjFGka)Iy z#xZq4Xt$=qMLH0|{#CPojOXM5M?%P}5N`{?i^*>*&Gs%+>c$4e56Ct#F5GcX`VVzz z`YT=vSuT&3HC-T>xx3c(Fn7;e5q?g(_u_ldq&+Y6exps%wGJjiPOLOgIvRv*fMBrv zkv$is%;G+pJui&g6#VB8Ac2ErADeA(VSH)!a4+2Om>mryFZx_^c;mY1n@$7N3+=fw znN|MlJ|?`zh@H#_T-_^%Cz+RLmmPzZ{hR!K!J{ujmj4Cg(S@X3AIO*(b5vMoQZqFh z8yh*WS%)*I8HkR7`=F&=8v2onw+u@gMvx_)VsJux{iVz?was=}9lX!H7~ZwtW@_Nf zC6L}xO>GG;tAONKP^6`(o1PLR4dUa9btDbg5H>TQ^XWS)J8Q&5x4jT>_D*y|iwOg_@1<%`CI|O|q(8)m1 z7-A7_DAV?Q1Xoe(8^$0_Xzt_H28}kpNq~sMHF`VkA^Yvh+N^?5aGqlP^*Ns_AayVC zTLb}{1(ft`Qst41u8xnM7KRTu2l~9}TyJw?qzB84>)19ow(@NHQZ4Tt30Ee=6~5i% zx-0Z}YJ4I_vGzOp*xPjuV%w$}zEB4?2b1Wz(r%l8X|0y$7jr-}+uUd~-HGf9+?WIr z^iM6NoRt#51(Yh_#l<|=rt2tocXz9!SN^8D8OvD5SoH9y&V}!k=i_0#xAFC}oWKwX zHt_n7Xa@nev6-ljAzkA1k&e*83ranZV`H*Yba@SG^4Jz-!Q}&N(?B*ekt}kH61Kzm z-(Z`d+u=1EkQ7H{R(xxFi&~}ud82gChX`l_6n5m9@*$g|Nb1-0#C!2# ziZ%&Qd&l&A)i;R-?mAnqDdW^Xoz7835f~z91+3=hWZZNQLLb?6VfjxaViV#@$AEzo zgJ3$vGL`nuZtU@$uko;3g@@@|>DqU_wujvIkc3X-=bUdOWI1)zYyU2w10WPWE4$K? zn>Dco*tGdmvQy_b)Ru4A2-ex7-`T^{+sD+Uef=nBV|U}nM(YBpn%F} zjjNDNgSg^@x)dly>sJMPG*huIs%aLF~QmlpWcJVS%yU&cri*hT+1wkLS&+UZTz$=l9eu*0hv~q`&vcf72eFk6l|f# z#`-4qt**c({Yy+`J5(8t69(!VMrH~?hJabjwTZwiC3Zrh|Hl794mQAny!Q#7Ej9!t zFRentoIwi*Aq;@gz9^=$^O-s8k|stx#TZ-#iRuD(43pd2=KQr;WTbHIT2RuQ-aZS7 z-~|oZ5_JQ&CBb{;(-zj#!*~!QPrm{_I+2p2V&&pq0v_Fn5h#JS8w!>wXRZD^BFr z7P=h|oWxyu0lExQp@|T7 z6K9zjU#th|eI69|PkNt~uwCAYC^9(!&hTUPtyR0CsXWqmvpdyy7J)A zGC_m+508V%!ej0&U_Vy=%w|KI4E3krx`1)xzI=*_u1XT#LLD&)Bn&_CyZf@rSM4+8 z42?UHdUXgTQR}?5mR)FAgDy%RD7|h@m!+-C4C2uvhq0C&!jif(B|lK$VjS)>ujKqC zo`!F_*w+@cp$x<{%ut~SI?_m#i&f?AB~^nzYs#`Lsqr&a>f_D189*jn9dWOBG6iTXbB8__bU#z3>RiVc*iZT|5q8P#?5x(6k6wC3x0)5r4)7& zpqXuJ%6P27oHCiu($2s{5YlRf_nB>EfMBykLK^NLd$6pO0L$#SldDlSZr=2ZUGdGhwE-jnz6}$H`ceXx^JcOgKcgnO3FgBkrW1(=~-W0b}<<(9Yur- z#u<$x_47QbGX`)i-0gG)abpPzNKF3wGZ>7=tif4b++B7)3r7I1{05bs$ljf*X^YQ1PM6BY;#q zNt95!bC^Pj8cwH5U0{Z*5wzbS%z}86=f=1Z(4uAJ^nK3&j5=Z}B`R%JW1AiE;((go zWkaGvt?={qnpWl-*%E_~FsnMC>Tp5tRHR-`pp!6zA)g*zSzd`v4D#)LIRHCy;s_pi z{2m;={b-(~7;y9EbzFPz0?wRz0jHkZ$PUC-4Jb;$QM2Gi;+buxp!Q-mXhx?wKBB)D zasX5}UCG~POG}vL0AW_2o7ED(#eEA{s?V+F`-^q+nextT7T*m|rK?5T!X0LR2EXsK z>SilP4SLEJ=yj8~-5LRb#mq2T${qL(xv+pQU!;!u_AyB1g# z+SNd6x8kRwXl&)4<+=sw5m@PNcWDN5#+uG-Jn5>V5f%%x8R-S(A#%`~I3-uWE<4ir z1!=mglDp{2bCJbp@|)aAG5H5DakLS7Zeod;F-?~V2|#NnA^ex%(+UUAXqjRWbdE6h z$RNdqlh9};2Eu}8bi@wQt*i8j4%0lUd`rYtA`e5o|6K=yN zG#aHC2KCc9>Rnlx00@^fW{63kQtJIF?Q?Nqfrk|M?fi<~@$bjO_JsLF@m}xA9z3P@ z1yxpg($K~fBoHS`7v!V_elqM#;3V<5Qaoe$5ki%V%G@V8tXA?R=*OD6rxVGc5IO?E z{EWXt@*nh~ph|6M+YAN~q*&XSjK$y*2}<$s^+ysO1Id&0Z5jU6fR{Bi6XYX^ZLW@XjIjjOo!KkYtEMV~|0efx#D*+Y^I7=2-|b_DO>&GxD~mwS9(gSU?PD z!YVW>#h(Q>aVAeN0mEhRgq-P^ixW-^sV~O6Ni$oe0XuM$aZI?0h~J(Gqv$wRxa#6< zqH`!04TN;o)$R>`SZc#@I9(Q$)XKBgj?T7=qBbdR1;OMbRt~-CZmVB6XAmSzTxMq> zXo0n4YF1a5edb6=eGGF-wd>f+i=eZ#=mJ)I4~_2>N2AfgY1b=5MIAW@5{BP+-LPPE z@aqnm_Z>4Q?X9}=SL&zjaGzb)svKX1r|w60IXB zK;6E3B&W}9g7L4m(X!AJYLJscOq8sZqr;miJ>Uuz_JM-l} z%b~l{);^W8INw=NgQXTswePcq#TIPlHfs4@+4!LbPC1~;f!?q3^R}3O zFIGNX$bnf|$5z|T@0S3hZn99?20VZ>zE);vS)e3(FeYkH)nXdUTc1yOa1fRP}%K=Bt=<3;Q zjoB)tk{;G6UX9V~Bcny4-%}Mje*x$`d~+JzAf!FsmAPxd`G3|J2&#kY$9P|El>E7vZHqlelte?G`H1P2WMhBF2)1)7QW!fGYzwkY@ zy~IIpr%JO^y0oZGN(X*q)u>+tY6aXkIvEF2=QN8u$VvH<`bll)K{sqf6aI9WG~-=< zz|lpxgv^sBnXM1}PS-nio;<|+jFLdgqYLv^ywkx-VdnX}bkAtDQ0reHQ^(1Y>+h+tGepC=)c3 zmO6)5$jBNr7QBe!$7#bQP?Jv>g{XH=#*8WOL`Md|7LXUGYnyK2J8^#`nGG)IUBpb6SvVUGt*)}sLAQw+TWoEml%v1X z_;utFMKDks8K}QlsGkt?St^nZ(%wpgl#J^Sb4Z=ry0XbIY;L?<%B4D!MVA%_*kJJW zaF%_R!PlKx!=@W5pX+3BJMSlHAPJQzrA3)V@Y&`Re5dq@1?-_yOX=9XkKK(EcOT2V zvxc*;zk%1D{XvF#+xe$v7*tu9Q4@qyWlYmhk|NWbV)o86#7XD>b#0?<>ynZ;;K5oA zjK`6TYSM-9LHW@!&9pJz?+tR$7A~WPyN>LF(1*!nT{_ulf-pGmG+n1#o%@cGZNgy4 zvRMMF@~OLvYM@nkyvXgsV#`o1%vxYoGg!K%>XP28>y`5F#e98nU$)Ul_v7%%gY}uR zQ(XYApZ1#P9RS(CJ~#$oW|1H{V$Q!U*aYY8+e<53kPPfhnl&o)rg9B=R&gLZ2{e}RCQ7On4mO;XU>UzO4|S6{sUNF*vO9IhNh(lMKmc8LauM8OpNR_ z9)e*FadmyeFdxK36llh2=p0&e5%bnIk z$7!(1vmQ2%7%wOg3!13s;DQ~qWkCnyBMux}8IYO^Qg{{qA-PdCnnYP4np3Z*ySu>= zbH?Djs1L(f*aM1MezsZ5&$>{Q`NW+)5FaHcDD#yz?hctbw?>=hpe7P6f$dV|PP~!F z=UKitKAe%wA0EJw>g4g zOgu=T-OT(TNZ8mB%F|gibvs1y7VaY}V|bWb8*FRus_=qFw0s)&uU<5|rBw2Ws%&=`2A-I}f@`J8wQ7Es#y z8{42jNVmI@X#;ZljM`Sw6D#|cas1BXxaHnsxbogPy!?|>xOx40b~3l1o@8%G0e9*H z8B^XNn2mR;AvHImzwaOQFk&V!c*HZsnCdCY;!zv*xe>8cszv1iw~+6EwC8wy9Bk~R zp9E>=4(+yv)W(h_2qc~D9fIHGextpnX4qY50GXXNoh9~@$_U3@UrV)H0<6)3wb9pCjk|GeM}w>uR7H?w<$-pO59UrR44qyV zgz6Wq08IUZQzu-yM!I`lAX9ly7wY;WJwqFBbvlJ@Cx0f+ae_@t}qu;Yn`mq4)#7v)Ke@d&_YQ=4~B6NPjtI zq^A?xAHtJ3izk0)!8BUi`i)Dlq>~48%IBxldTg{aX;xNNYkKPX z^&3@Lv@V5+7D%)A#uW9-4cVBi-=WzCXA+jjP}CCLVS2WXFXRRbxpV>$j2?JGJn8-U zc`ej`5J3DuKYo{af9gmW>)KY*?U~j_-7;CMOwVRXV)m?uS&gAGM+8c-PQlkJs9|k! z+~AN7)9pnK_Z^+I?-D?$_h||{)&?aXm6v%*%o3|z?QxU5`3`r!OI@-nfyY>9B<=`H z;6~m6pzU*t~=T$T;XKcT!lD%F~bvXuE|pX9LlN6 zKEHbdfhu$-0Lo5Li8XSmCu%K<7~Rwb#dUr#tj%g2k*;yCE4s4 z@iHNV`xS|j;L6t7s2#cGFz$Hhw(Jyc;k9RehMQL|*Rk{ZCiuu=j7B?vp9z|}W0nFd zZqP{g_&ZCqkWYXx=u&lb8K&s7Kb%4o>57U^4bSpW( zHnApN)>nUkgS$4)S*wyLfea+p?hY+5Dw!jjK&?U4tnL0++AC|PYT4hcwNbNHrEIVU zM*3aQvQs(O8gulsu&`9ion{N|aPO7ba^>wBXytxNR;$1iC7ObWz*oM58cKX z-Y($*;hVD0oX7@{Yu!D!U}XuWB;4OnCTupvoM>?+Hju$oErZU9GQiLbpgAt>-5Cxa zK3sR}+0ZjD{BTW)nZkj}Jes%A{(5@Y0u^%jgS=6i;xjf0w18Y;B6wr5bCjd8FpnO= z!ljEHG;|8QU9&(jqRq)i+we@%#CaIBjvl`2lDGk}9z(`j8#RljN~RB_;6X81%<_E(+WU?hY9snYWURHH13vs4^Nn2__O*qV7F7<7NC;Dn93 zb=vDQzvcll32B_|gK7ZEg6DdOl<10|gy;w4KbUdr_>Zy?Ffc6$f@fwDVq(B#uJWg4 zJW}v~v=uWOkwIirqcbrGcxt)G5Jn_QGJ?lTsa?seifWqB3CWNK`X*y77peZ=>)TrJ8S)ud4eGGk+Afgdwl%s_0~hQ> zjv9=2k_J2CXI@n&w3KfR$&G(Qli{w7d2}a|bg#<9$TmY7MYpoEQv#YO!HjY`4mwh@ zq5<@VNu8TCFwe`}m|evoj9j7R^6D}k`0#z$+_`}>r(VSRwJUY@x~d8~@28EacLch! zVGAHwkcqv}LxR-FH;J=^dLC_;MbnqQhRBRy`;ufYgRSUH4QkUVoo`~aA_K24`4bi- zn%zp>bCYpac*f45l;{lo>}Vo;(P5z1&o)L9(=MJMYc^_UJAdENvOz5iteLG=QdqNCW6N}<-J~ifx$Gu#oEH}s ziO*x|!_~ByE=ipnf>=bRywZEdz~ueuBvHwxb=jwcD5p!Q}6e&Kld^#A9rRLq3*av?XL$QG{CX|aeaLq zBYKn7?cQbYTVEXl1wydQWmppP)hsTgAb1xT(E(fn8%OKYPit4J*mgsLZ6KokH%HLc zg@~|1B>X|Z!H_W+bnMPNJR?ryjv1g<0>cb6bn6?$joHAZZRqh6nFC|m29UMw{re6- z(zAUEj!{6!eh|Z{akC6t1ennA^lK!{*!D^+U~e#q*+qh7qG%=y$)__;m zRO(kJvy`8K0$sx!HzmEMa=zf178h!EsLIcAqPlFXwcGb7+c=C^Lwxj7Ug52=hKi#zXR*UHPF_zD5cUNsTWVH4-~h$lVxCjJoUXxzsU6 zdpydfQd}fbk6j=LczKxdC_>@#Hql&?Btysy2QAZ?EGwHz3V5P+n_Y}-R6^x3;Z|*OOik=Ouxmt3jDM5qsln>}c3M#k8gO8hvAyF^s$MnZE16PPuFKX2wq` zGDmeh0Hia?-gTFOA^0X2;w=rZT&86@dl|CKAJ#CYU&$omk)ah0Nd z={xP5!70*wGDc|u3$$cLAPgRSwG7f?o1g}C$G)LvrUoq;w2duV3Exn&RkrrZ%KzFr zs-?Ofu0CInPmq?yT5M&6HCQX9f{Tl~R;$4{)6&A(F!)57m8Tat>n?_MhrTAib+f2( ztl1|!w6|`NP9=O+{x|CGfn^8Io7dKArO(al>veLxoY7_Lv-s0(s@bguucOUv8@o zwg(t6VFS8)77?8#Z3CH$`1EgK+ENc*(yNBBw#yh?Lwhe2Xdu*n2)=%&JFE@;oq9Q; z3yl1ITi`6Q#c~KhC>K8yhT5^6*ur6r?UKVH0m3CX;VJoV-?YGq-rDp7CJhdqrEeLj zHr6r=A`$_WFnz+u2snL5E$L(yi5B`Jc(ero?Q)l?1NtBo8qktpaG)79K1jALO{`Vs5rGf#`!ypD~Jx(q3L!Mt3MDFj1C01elH~F}*Ms zFqjy$$}tjlalPOMO5;HjC`2InM^)+>Y8HO}*g!|t#K6Z+o&WV{Sf}oDZiZ`N3IL7d;Y&({7 z$37OP+n7g0P}$b9G=l09ch`HP@=UVp`P%BfRX@jMwApYS1J7XcS|Ynx`9DSWB6x0e zzHHB?$|L&@tm2mYP9QC8;?mi-v3c`m4N{Ur+Hye#rx51`xbTVL*hk?7eCFq*k z>q9}ov{#UgNptj&_iNC!1$sXr-XqYbUplxtSURBQn~my^y_%c`IlxrE3Zqr*LIkUh zXYX+6ZJB0drxU}N{zmv-_5Z`*{)}h_s{I$w@kSQ*-Lg&P)p~7c>#kaG6kD;j`c^_%vRVsubBl$#Y@wWWSkAOsTF{MAN}1l)4lZ4|f-`TP#ksdH;Np8%t6ync zX&wb*lsT!C^IgAjJ%rkLa*l^c7^VvKZ)M`Cd`%R9>6h+VYLWGVQK!>Kq-V%~;qQBb zgTRl&<(C$Ar3eL z&@wlvF8tvw8*DbeHX`9r&va+929Z!i)h@Mz?;2nOrAzI(&FmS@yDQL#PXdLh~BPg^pQ)|;UGJxKfIb}y zU|ZX%uq7{dumc}0__m;^WklOs9u#o9L=?Wp0m?YX2%*T?(VGT2*5*hVFS}+6Jd6sx zo8SzW<^sSfcwlFmmAaj7A84J1Wz=qkdF*V<=zOWmI;8F1w@+uwtPkdeJ~NYI42rLQ zoWYws@}f!(9X*({GRLrX^&+mkd#>(8RTi=*Til!?F!482Y_r_@X$#+L;Dw-1yhrdz z(9j+GWEdNr@BQ7>f*>A`W7TMuCeLd>?cEr!XJq$~6J>D9V!Tg(`rT}0SbEYu{Eg-fSmQho(fl|huKOAe??wnrnF1N_kzdjULF})9C!eiPs|eD+5*s=Ueoy?_dXF}t zm@Up~DPGAMl@h$=oTWZ;lZDDcv*J`?=ItU?5HVAp9ooi=Nv{NG4LhCu99>ANIvM7@~G6 z9!<3(;K2R^lYYf@sQZQl1|R-zvel^`eK>+4c;F&)c)=V@_4bE8`_EH*ZZeo8ef{XL z*SeBmXb(K7o$BM%RAXPp)tH*fqDb(|tmO6UH{E#fxi76(@d281$3fHJZCTc0n9xe% z;6$sZw+<%391C(HrOCo=>qY{_f;eA_S=@pTXwcLME{j6}*R&8Ny+#$?cq2E>g;WQmAb4gWk!eaHH7XIM3vKg&iaQ2?dzDl>SUu-k5u z5SbG+qr4iT5qi>i(o9n7f`b?vSa;9CA@r}e(OLUcYoKdgb9F{Rq!A=Dpq3Gc=M2Agu8w85>|CrMJ!7Qdu$=i-W-o2AGJLCU7kYH1U#WMx zA&j%OO*fydaqRXZICk$5TzK;}tX;pBTn_$Y3@?N%H;ehm9pSIgoUy!eY(@zbYYtXZ60UEI&y zd-?KZKah5UXvK5d;~ubwXzbBMKcUwB);3Hs=L1M|w)=fL2tJs;T%Bsp2?L-Dfb3o`$Nh(g;*&5>eCD4gA*DD>0+%+H z#xQ2#jDdP3(40?~D`M1!JOtA#@{{)&SsHUz$}DiHi)3as{5L@vFx5CNOp`M(szRon zGb((#9>#XvYHLHR%&T?OomJy~g;QP~qTNJ+2Pw3cVhX`j#URu|<1tZ#p^sG9Gzd&l zX43Om6aK-SzF{sXXioJofjRmFnvvSIpi0EEA6(W}n;auh@cd2C^uO(oY@)-8=8LNIx369JYa6Q(of?cwPGnT{i^eeKo{$;6qoYwFbYsIt$+u5;-kZ*`WVjF22)(u_jR_iZT6BnzGj$?pFE0V_Z-6c*I&cd+6@izbc7U~_#4S+ zQ^qpZg-I4-v;e3rK5YC=rCttc>hYq7Zz`e@!Hm7hbWhkTi)YW6#W=4rb!Dj(H;7`9Kd<|UH9R>2Oq}mcix2q2M=O-X|X=DwY`Ol7cSt9Q?KCF z7oNk-8&`;xgfIrz83vMbdZ(h3-<@~;4Nf6?V%|BX)&gh4+!NiT4MQaaT`0Zj+vvuz z=cCen?JZ9)i!yn3`hKs^Wuly=Yr`gJ>-W^-xNFmGlU)}~O^@(9vKOqxOZ>8sE%j>& z@bis^4n5wo0DbV)_w85w8F4TizvSP=Zw}Tdpt4|v?^BRs?Q{VSy%*QxJ6GWd;lYmr z(R;JHfx;>dA3cVqZGzuUp*XpY9XTb)at3eCY6@4hMUQ za0dZDkW%lnbz=)3!*say@46SgeE0-adG^Df`#;e{lz3K#vkpN}aVCoyk0F$*AH1kZ z@nI@_eEtU`iXuIMuWc!{kL57V7BQ0mrC{WMuLUH{5E`f~G=YL%=yWZM3hJQeoS2^N z*1srR&S(f^yTQe(NO=;JjQtEnzU8}Y; zU|`7+pf~pVd>o!hxNqJS19!j&8}fOdnj1M4>O%yESPWI&t0 zWK110#M@5(Zpe+bNn@w+v%|R~=q$ za-@tD_&te0E!qV!3Fe&PIM}oG+XtgW7sr{xLn_9u*V2oXWtVpf4}5%WebPw%CsNg^ zE8i>6p1A864&1Vgi|@RJ%^NqgtubT)5!6^V%V3IoAlcynCNVHkumHLUAmwKBnqZjnmYA&{2D?}PuuO^k?!4<)dRTi;m7d!lON8r$+y)7 z-J2Whwe+Pdo-QRdB}lECKIGRfoIj86fBTy__40GdHxxuDoID}Pc@?v}J|Pl-wficx zY0_ZtklT==)ljAr8{sA?b?>?kL^RPJ6jI>5?TJsXGy6cx8v+L#=x9UlPaO9Co3*6Z zMD~Cr`hy61r!FR>_J)-kk`A+TPzd+czt{U1LUvH>#rNq_=K4=v8{#_2mIt_B)!|a# zpWw2e(2i$%pJV9y^6v`6T-JvDIfH|DkQLtbje{T5=a!aMa%SN;?!5ah+;h*JSj-bZ zuf22{Pk;YeoPPan++177+Rd8?++v<2DeR2wK_`GsXqvys>}xu~`%9AsFn_Q6On60c zGV(5lf7i#`W}v2h^q;araoIouiFHQW^KJZHEhi9vC(tDYZ$27Pf9+4l zHohvHHdV+B-m_#^l0YE?0fUYSP0&5^hAAE`FG|Eqwe)GMgK0Fhy|0HKTqeki#uL zV{R&;Wjg}44*wb;Ii2kZhsXL>8m3sQ6U&VBxrsyz_0!}aQSYGy#kcs3*Cq7~Xk*~$ zT~fRt1iy{t{W2?_xlz1V(8m6tvVf!Ea-aE0q1Qq3LVpin6wa|byMfGmH_0y{{6ajdpwVByy(U} zvLTI8*1xyjdjf~F)H>yPaE{HL|f6Q*%T;*o}E;&ti9 zkS2N+tO=(Gp$FYzPyH*M(pOm0oWk6 z>9ENUsIw%hN({SVxYr5xBi^OG0xwLktA-n(!qaKWlFum(C0p{H9!eDO(BIwVY# zcM!-sOOEsYlYDHgySWD@Z83ZI*LgUdEc|Vs{7lJs9X@=dhe4P#Q};sHMM4wi`MbBU z@Av%t$K_FV#q74bKl6X)gX4gndCEh6M#Urou1um^1;&twfd&M#Im6mt0V}XB+U~X? z9Q5Sa*t!_7EtJI>UnCayTh>SrjGT0Qmd&s+%{;=FcyEYz+dD(xCW#+F3f+=gKxKJ) zy|u#!L=7%vt@d!{j8;c!3c)uw2sp)qjltn<>108i(-O+U-mj1ltsuIEqi46;^8@42 zVeJ(`g@wxeM1PC^H!!}9HYt?Kl=g$dF2oCAY%J&`SYVqXn36@bp??S3c3KeYw*cZb z?_al*^uSLrHB>^p?(jK|`muOGE8=B5Gu!RO<%7mbWAQ+YWTJ`8;5|AWQqV2YSVZEv zVd&-96`GCB@WeP#9Js-;vd!`wWo==ezgjz!;O6$~}!l3S2thiNQ%F zD+)JgtmbH1UmoD{8Ak@Ue>WpY`pIGGT8@4VONlZ+>YRu^<2*sQpSnAu|Cml<8q_Au zxs;GINCcz95S+*cQ50W>tFk*#z$}D|0dtf39XxOv96fmyC+<6hv#-8}?YdBwgElyS zIP`41$(=U5bq^3s@lF6$c}7AGK{O#X7h{~X<@cw-Ezo=XCUYrD7JC*o+;Y1Dd(wCz z5g&Fz`5bg@TiyE}ejLC2TfdDv?z#i7zxpb^^%sANU;OyHSYNw|n>jnPv3{fCyktPH zUAc@iZ@yOR`)|MN9vnY@46FMO;mucH!Or%Uw`{{Iv_Ev@7;d@!PTYFO-8gdmcwIzY z7CRUE?>}@HON&djbfj*%oBtbTi*4K9dWK2Tt$&BQIgX#nA>r`0ZF|XPB8XLKm-;MY z6U{zr8bq4N8$i6+;~hx&+g+S!*7R!MZ`$)sn;e}3#uNv)-F=ZszcN1vddqdxSN@_z7=X7S(CXWbtc>FzuI?Uxu_q~Rps>fp9(A{|T-xbU;R zUX+P&iuACv?y&E>^#IeGRi3WjSjYZ@2k_Vv59R>pIL^FrHfKlICW;1(g~>Qu%UnJ+ z@#%XYy7$41s{hgTuHX59!JT>jFZGfW%}L*<_l^IgkF~mQ-+nA+JrNn{c}#arI$x>e zb@n@2CaR*def9{Afn!3D{i(|up8V{8UA0YfsN?WPFtVsYbD|8luD~UBrf5!&9a1+a z^EW^i^7UPXXfUQ!Bye%V^4g6Xwqbw{Y#5w;&8Zybm_HGmmVI$YpBUEzyU~I; zaTXGX3z&08(f8NC$E5SZGl#2uX1etqh^)2kF;sl>5v427a{f*IxjhzK_yL!&GjkF; z2#r?g6^{Z-BZ+Ih)34(kQ>SP+9qW#En&@%0kBz5NIJMLU_hI-=Bh|DfhA>TjM>{S6 zDJUW~Mngl|!=NQH!l_Bd^xT}lA^lXk+3sgx-IO{%)ES}Ify5(|^l_C=<=MayD05;1 z3*A;YxtoR8>%2xKoDT${5~4NZHzc|pnWVDjt!)yZuoRZw<#u$8m4y%ucdinxP=$7PP$!9xdWHju}yxYOY|tq7Op`|6<;-2KFDx@Klgx1b&s z@BR5Nw!L)Hbuo3jZA*Pp79~pRM#owEYb9wT5(!GOeaIQlOcUk>L#&%x%?Ke89YJki zjz?S!$=IAARZz_|V5b zh64xo`)-gWD@9csVe!oGxF^{kV4h8s2#2Mcnt$2P#jN zfN5uUC%?aecTT^Fch0<7ZQ}zUc%s^^BJ;arJLP`d-p2aII<8!LS7kp{cxJPuO3Si| zL^&rU*f{i+n9P#ylg=RR^&th(TQAoGK_6~cI@*N;)wk3+PSGg!EPDdkJtgyZWv}+; z+Sz09GI@WGYYDv{!bZxR@9y>PS-NKJnvxds8EhP3m@)O?x&TVTQH?gl`-%W&=wR~6 z#9@8|shISl--wBwzU>HnhOVu4_Ris>$MN6?9>PNp+=I1iH}L=eSAUM5{`mQ}X+R2{ z%Z7h1eszpb?5DqP6k=sCXJ{wa&1WIq)NFCsLVuUP$AkKn8&5HwDSU|=>$O?U&Kx=7 zcnH%z`3>?9FvA?0>QUXZoBW!=$hBDQ6NbF!OeEO2l+F*p5E=f1@1$CRXAU zvs0q8>*U(%5j7zQb<5}CKnQ%s)CLg2k+|bio;h^rP~F~nV|`N(iZXgh+Y{TM=HS8w zq+JJ{TA(h|2@D|rnq9tzjkgk7H;>Hq3jJ!t^6&8Zg!q)_}T4(wYrNzeQs@S zJe2@F+N=fax z6iyI13&FE(Jz+}o*_|ys_sq|8cIOJ7`rI#J zb#)bwKJi4(2IXv94pK^4Y}o~>@Wj@Z?w*!)&GnbA3VUaTlOnEU_q=YOTnke8F{OE&7o=YE0HufJ4zV{vf>_doP#4)&Jo_TXhr(fM=l z;M(PjPN%9PbKfOnRo0J{akOBqopfKuig5?bGOmD)|BYu%znO}g8W)#YbWT>sW1X!` z;4^?s+Rf3kKAPM)SCf9EcD?`b(wN;?wXhtt;V?|}5Z1+ z@rUqV{8#@7-}%PV_@n>f&vEnSIvddmq6J;REP$RZWSt>JJvsggQTLx>!skY!72Sl*pJDM>; zXglUQd~<#bry{x?W*g&7L=V)XLo)qXpJ1Ubc+iu8gPBu|y)D}zrf)%}0U)HHgGqvB zu8{P5?8qdcr_h&e&BU^Jh(4)(^E-xtgiLWJ8juNl2ub-#cZBM+o#GHlGir1)z00nR z&&CY6@*KRBD#qQMRGP)%zXIYVlYzjKDQVX!`OD7MZdJUC*@3Y&J*Jen(vy9^sj>3* zl~D#GtmB8(fsRi%5eOP4r;-0mAic~AQlS_uBWCdStvOHX6#sH|U^d1Lq|V7S8YrTD zT;j0%Ob!JUZK$EJ#73jnY^_&+z-J%C*<^_GDs>+egFDofFK2^h7<302sH3Ah8aBsm zZ-dM-(TuzV+EYJUWq2&_*$!wH#MNEbv~17M@TpEfThMO2XWPHm9rZj*)$W$r_u|wQ zeb%l!;+-#&Esj_HSJnp2W`dKC+=i|7YgoH_4V*z0muvVY63u=L?VK42J{f(NM&lkk zNHwx^AejqEOA}fXzZva_y#kkmZvtQg?xmu8*lkKmL9@h!NeTlU*lB#1Qkn#71Sbte zB&gj=v}X9kXTOM}M-SnrKl(9V_}Pyt9`@}&m@^^|;6@G^e2Oq^RefgL3WXlXc{^9p<`n6XozZYKo?SJ&Y zs%@Npcz@D!VSD=bcoYk>|5MO-m+3Y0l)bZZ? zz$1A4gOBIQj-?iS@3!rzlWqxq$DQ}&;O((&&zE2_a_#EH49g4ESGf1VNAQ(j`wiU? zVa%DL5r6u}{~lK_T?E^dvQ_WrzWi0(dFP#VH@s5vTeC(v2)dG=ec{<(@%6&%=q7)OqusI$?f^sWS2S91_`;ru)Go#lP| zu|Ky}CSo_%*E20{R5Q*~#`h9h~g28{dqH^r-2&&MPP0B?Xpbs@r=j&I-@l zRQa<>=+LbsT`BHGldA2=Mkx3Wfyqdlr0!*njdIh8lg%s;;93QOLnI-mGF1eEupI<$ zR8=q>pkWo)RrtyNA zKtIWz1Fj^P&*!3pKXn0zQqCGsB)YBQ9YW0xPhfFS!=NJumtYf0)xVmx9bEbK_iHcl z@5%K!T~0TqYQ4j8O4InNYvpFvodwnfbEtiP?`qYh6BY|T+9k$9)#BQS%n+7uv&OI%2$g4N8kXd12lLEM$<*v@$9WhwW7=?JWo?KB`rR1H zXHb|Tu866-L%mfp+*=6{mVGB$m@S-sQ9=Hm@XZ;6!#QC17X@s^%TQFpGIw|l7<>Lt| zwzu01VQ~m5<-}ycoUY`7VB@dkxN>5evtQRqjNo#ON-{{NAT$JpWf7uG4NA8vc35Tm+;gVzK91t@Gx$@{dWB1hd;oJ&;Ar^*RSH6U;Fo2r)+j`luy}V zao@guRd1DTRiF6CQ+W30KgOT^@xQBw3>L?H{pJm<pp=Tem>vEr@1CuV zefX0(o3pZ7o$*sIzkpX?dKM?|xv#=m0=9wia#fz+ox>~x&Lc9 zs5lLCZW7 zyOBbU67|h?r#&VVDjo-{!-cl_mQZi8kUb$Z=FkyPGaqiyXcktAyxDgK?tmGyQ)`s{=q~+fJthCChmg!O<#g;q03;=-ll zCipE?8IGz@00Vajzze69Aj)blKz(QIsPhh1~W&u~m*iph?l zQ!v8++89#s=~O)W5MDDaL#KgU0R_D%fMMlgGT_(6%g@TX8n}~WK~l^>rPQy7Vxf=Z z+u&funLq7%JRf*)M=`ln`$*@4k+UTLHL0Ae>qlP%7I&PrbUGyc2Ods zQCa28P0e5pgCD3lCd-zEVQzkFWKY_qM6^|7uQcZMU1(i`%P8#l#>S7MJD=_Zxbf8B z3{cn@gWhoGm>7L_#}RyHR0P7okLAj!;2R$pFSgA*+F_T2?ZBqoV>7N6WVh^2!%bNv zS?ExlyZZc)dOgGCF!}n@$|7#L|2QtbbJ{cC>_o9lCE{OmM_nfDzHj6bb|h)wA}#@{ zVN>v8;xlKYO|ngmbnqdfCCgG_lBuI##P!Yx5t(-{L1_FQFxhqcO^SqdhxO*cd7k0C z=l+LlHsZBcPSu^vnhl%b1CM{WW(Hq={^yE=8QyyRWt@BaG(P>sU&iAfeiC2!%2#mT zgAd|w{^~FA?mKVN`A90SxyQAfDR||D7x0l!e4;M;|I8OYpM!>n@by3aV_Z0QMj;d& z%fZHd58PYF@%Gziapk>p6~@KPCnXb8MzOZOQQQ9LQ=i8NKlEhf-`8I|RRfL_x8GXZ zxt@c7Lq~7L>VYHq`UWnZKU-(G%UGWJ{Fieec54m<#(y4Tk&)+~eJ;267KYqc+1O+)2YQ8` zU;OH?AvoX)ZdFqAAUcD zFEZCYqK}k1*|7--2+2dJd3$yGWzup#mcR4kL5;$$x_COy0J3WRNz+m@HSe4`tyMq| z;`jgQuj9&`|ZuYg`lqcrq~g`Z$9x{J0i3U zft6eTOyDHiX5Ce6x*IFb;F&EW(1LX*ed;(;uVf)p#cPjKfZq!T+`jMbrg~nbIYbMI zcXzT-$zZ5Plp{RV=`wcPmo3#L8sa6nfwo>Ub8%sN5(U1%Ti;`8WM+nIU^uH0x!7 zq^+y#{6^v-nV3D-bV#1D;!@2qg?7(NDg4b^|!NG+u)#z-_!tZfcj!YP`yLDNmg?mm{s zmS?!H-Do;a$JDwpU6WjHcyj?`sD#i7u0ViEhTMW03q3}slb5MEeKecna^6#4CEsmL zvXya>Ui2qZufSNi5eR-@{lo(8zSS z<&L{?&wcmd%Ec?$c^~olU;QmS{Mh5wk^hr_`#<2X{`7y!S(4}RnJ<0?ciw#u{@{P} z&$4s%J^bizzL6d3E%hfFK6f&$|K>0L1UGXQ=c7-3DrZFw;Et0g@ms(DkMXbnyMIx4 zPb)Nk_|Xqy|GopYvf=rh!Le<)kKS^74p#1{137eXe|FM;v(ll+@%O&-UHt6F-@zw7 z^ZB}qTH%ie?zt)SLDTn*mCqGd$Sl6!Kz=;#bs(pO%#pi0~h&RzOdkK0-1k~7w_9CZt^rKpiu)gWxZ1Mfp#JRXAK~mys{6! z_B(%oVJO6H;)nCUy z_{V>Ud+u(**SEg)E&TA?->B<_yxct{R$HN_oCSNC?={=>!}4d(6O&TrrnaFn8H$bj z>bN-Wvr0^f(y+HOdJEYDZ;<$d%$KB88j~Ti6nqXgeSL2 zfS1U%_VXmr+8W+`?X@~F^!Q^B;-CC)|9;k^J9y@2FKaonwj-TV@KJfGw9$$5gYcg{sjA7`A5Em^_6&+Tv`c?&N)n;ag4n9~*RlM9v(WSo6L<}5x@_Cq8^8-fK}y(mGwefeu-Y9Tu$87%wvupntZb#GRn+&XTcyszAh&PR zZCK%p?QKA*layAQ9fB8Ww%M?NLx&DvePgRGhy>!D;0L{?JPly-S&eFwmfppd z%3hY|+cq1Xgh7sH$ssUKsR53aJ|SiaXXrJ7;U^h{9#DyMTvA+y65yagociGpOSB&R z!hg zvO$qiHn~jBwLUH5{AvEYmq=-*inHCL^HgMbq7;FQHqo->Wk50m$Gh=+;H#DK6r*HW zE$E@TT$Z)}@G1`9egGHGoUZtHN5SM+9e!mOpAm#R1FW|~-r6IE#}WMvrydzKVRO@X zljO)%j`MoE8M zlq}C9AN(+moVXQh*RSEHKlmG*JNq_%{da!9mR;@NUk>KnU)Q?iltk|H;hIG$hj+ex z`pwqHY#|3yAF3IRBC{{P_+s5S;NJW0&#*1lH8}foR^`6?AF6zRIR^!=y!=wlrj%`; zFJ$Mww14uR`|+7y`a*^K^;4(n1^^E~@|eqlZDRA_!;jYYu3x{2i@B`_%kHN+kSLjy z$Da654Z=&drJQ+D8oPe&X2!!yP7lNKp~J^;>#eue`LhDkyJt^VN}agn&brH6`CPqv zHIHi_jvP7cJoG@u`>l7J%=$QImM*+o$N#{C4^-K{P}bc%^RqgJE0-?e8(;rM9rL?6 z16AHDYlX@hnTr=L;dlPvALEXki7I}_H@^OL{Om{Ht!th9U}+(p$sf}Z&L?aTP4DVG z6$sM{Y=7b%;%m|&egRXyPtMm6ak;jJ`}IB{)ze8N4mj)@@IGS(l_>+=+__*nnB;oj zWR!gyE+b~)?P3AJ9&m(?cKP)2w%bJpOJIKb%{OuI;6Xh2z@7NR|NM9GfBV1u%X$E( zLm@+t=WZQL^u~CHOtVLbNeL03RG#{ky+#Qi$CRb{1eoHa8~(&@O5n{WsOV99a3$-S zK%GpqAm{2?pGwCU)(4@3+6>rSr}kux$5ZrJ*2%4}uLr>S{|ojbDPxD?mT+(-h=FR5 zVHORRVNj2uJ(prOuUn(i)oO|l(wMu|%!3e&2p$ySHcMVhFPyvv;DCLrtJuxPVNG}E zX|E3CU*kGMNGs_9i z1472YoS8D)Q|=UJAaqL{4(t63TnCxR@uv?t&?!~}uq*pXiU-nb9-|t~ne0x7kX2X4 z9V=-|j48+&H17wpxoM};BbX}EtXCa`cYsp;$4-!Q> zPblT4)tp< zy@Z#a{~0d5cfQ^;UA4S=AO|cT&DoYaaP`_XeE(Zt$9fJPM4g}#1bpDTEuSiIy!qPexPIlm3TQdE=Dz#yuVcTM zo%nD6<^P-=nSD6%kNyxVCyv&P&Yd}sI(qDA9ozHIJ&W&u<3DP_V;k(g{Ri;b&wm9+ zj~=PKcksv&{OaHTJ=}4}olf6!eP!Q4+;z|06^8e6@OI_myA7wA7aw}$QQURc$r_xz zedaBkEM;jK@OR#RyKabJI5rD;=iT?^ep}#j=FQV}jZl$=2XheBjzdUza!Q$eW(6cWi`|6SAP9By<*{^habeg zeJeTGx{km2v#;eK=%@AM*ljvqUO+iyFDU;nMo;s5d9{9CO8VmQLKv+jF8ObOt6&1pU1 z4+AqMjf5%Of*)yE_xH@VP4Q%?Aq(ED1@7PAkqM-zC9-i2W zaFDz)AzCpXi~Ewb)U0byG@ucZCTAQ8Csi95v=j&!I>u}>*%CvNFd(&DMg*~I3&Aa5Vdn5s zLSr?ekSNoNOn6H|aV125h8IJX2^vUO4q@0l)vh?SAd;lm12j;U0+b2y!zv+EE=U-% z445#Uv=m2i!_K&sjUjQI9ztdgTPLcWd=f6jj5EvK5IB?+-vOl5&sepfX1DTb&<$Zg zRI1%^1%J{Ut;|sa_o{$#t*^^9_ApceaykPZpJb3d)RO=eV_Dq7c6v_@#wVnQ4e@JADY*#>rt{VgB+!?kO)N5!znxp6#K(Y2@*>>oK+n;w*k`@U#-2t(>(k zGi^SbCZp@LmHjI?aLX#rzk0UA3xAR-fR?FgG;fLiF=*;RiUcV!h76_P57tA5tJIAQ zZX29twT+O6MEql|wwsCAA>cwaA%5y)%*|*=SRzXiqC@WDez@zgJU1s}@qt*za}H~;)= zIjizoCpQbT#d=6)!G0;@`tq;;4vwBUQ4ioOvzR~q(GRktf4$1`!;d^(w~^o8-o@*$ zyyz1Vx1B5-6CA58mU5f*wd*)`;0hlASG?lbPJ+<;UgGvKar)yC1+o3qsDk>Dwxo^(uGgK&Qa`^bfyZvoot%f0R

PJWQibbA9#1JSbk-IdFibAW#(^Wp(~{L>%8AOE{=<{;++ z+PYT;ivN<0cG?T+jQHO9!ANAMX~JcXQN!8-+ZQ;`#j~lyCGdVY1h5AW?pxjG|m5nSp?*V%ZXQ` zw=xV`8)3VX3G-nJ$36%Z8Jp@L&_XHyxAZrg`C`YmqYt`)g+NO0NUB3+10-BHbF5@@Str;i0zfCm`yA%RTr#mar5 z@TkXa&(D;(VkCk&;j*B{gq1kjXRuR@w*?fj=E-(3W9LAm$CYJ>8vFq(9B)I{ryq=| z>D1W43W$=e_IFV4pi*2N>-tWVb9zwgrSp(pr6gysw$1p^Ui2NPC@WK)wA4GyiM%oC z@EXD@B#Ts!Mzng>os1UF?(FO*Fwb{1kAXUmwCcW=G#IM%LS%}(A%EWHXF z(VkDnH)eo9wj?CZX`^79G;-Kt!)Bwy^2P>EOlP_tO94|GNZ-D~*)loF*GR=Ixjk=I8c+Sx8(jas79q@xkc^cLZK}{ulVr$3KBvZ@&d!{hfb+@8rzN%Q>LA zk+URrSZRTytOq@qGbZ;w_yK(4GoQnu>`a|`;|+Z4>wl4hqSr$?ptXA?2OB^B!T0d- zPkkn5Yxd&?GbU;L%#ov z(7*h`GnJoD=IloaD9ZOzQgz>h55Y2Qzxo@0zpl?J!N&ERH9Gau^Z4u+zKn(3-s`Wu zfp7fTpX2~#xds~BALU&Ya&8I+e_d>POG{D=61 zfBL_x>nX2XzLEommypoS7}kaVCr{p1e_Xk86>q%qLdD+$kA4uh-f?Sf^W52UHJCq9 z%F^eb9dgTr;HKgbz&rLjv^V)^MEbhsoj zx1z&YD=+4I$@xgV#)(8CWGB@AqzAr{fJw%~9+CHnnmWi$KT}%_r|ChHRgit~sttrJ zx1XuUv9!sTZt|Spq4lRXN|xr_yP3{8t9bHO{PN%X4F1i3|EF~;XZCMf|L9BdgR-xMa!z!te!bH$pt8rLYg1I1Qt$yA7kh6)Ay=wBo?^_E2eiGS7|S^g zCa4v|sc+xc^$awl0pmF(Y%;P692LA#l{;w-fa=FEp2+}B6_yup#03LZJjNN6*p0B| z9&FsUD7|e5to)VW2uq0UQ;<2$kJWXB8P8DmH*GGuX~>m9;tBo8?@WD>buRb{Cx; zI#}i9TyFc5pZh|V^8uIgjP~Dr^Urbd{M!|_#pRU@%U7EI&AeU4cjvwLR=S=)dlr}9 zyMTKh_<#;eaOu(|eE&OtjT5)sg`+v3DExcw+&j3D129*f%4T=obAMeQRIXjk@7;cP z&N3Z4hEL@na4C=J=Gq#5^!@MRu6yspik@|I_WW6O)=Kb(x{Y*cV>#=m0#hkfFLn7P z82kKJ{vIBC{E?jH*}*rz{&hU?VB1t+JIm1v&;Bfr_oFzJaZuK$J@nWUc>Aq4NNp$L zAA>n`l7A7nO^caphW01LNial_uge3 z$+UjzvrpnX-+UUcpL)CNQmEOuHgxwy7)=oj@qM1?B2@c$r+vgI%?F}jvc2U$%#WJ} zGF>1>_%2&D2VcfSmOpFyc#ik@w}e^;&<9y$Rfc|IyL(RPnxOg-qm_oB@47p}Jc5;> zLx_ECF-z>vWllObY=K5Atq_}lH1{BeQ5{#CEu^vOQH4U=Ah&ZI`m(de0G z>Zs5i=osHt>(5Hg=urQ*bQMg<>U~pcsaGcSHq_6EEQ(4jD*or*4_6OU}a>Dh?8965G+qH>&WmnQ-tF7^ip712Ilk6iw+! z&_#*lGMj>ijpdT^PuumQDWC!9cAW9f>MlD{VB9 z41m^tpUE{4N~zoE3#lq(L*RiqPDkhyI~Jgq|JB3(@_%)gy`hc%_+3Y_aqT*`*VcW^ z&MS$zpyi>dyTB2Vu#Pdo@fEtP%U$RfD-n&LV$OJq>4GrCt=+Z`%7Y>^hR&Zbf;in7 zPp!|yWY#`Y??@Q1RSqq<1bU-oLfXrktvL!_K+d$B!q@)j-{6Ulej;Z@9?sd9!*yMX zIiAIVFAnq7D_3%M<>xuO@^sD)Tx)~^Ete^kryLkSmKdP6@7T~8|daedDg}2Jza_D5C&1P5Y@A6q013~ZVUD)LW|N)-)MvB_r}EE;wy~9t ziSX=t#^IxhDfcDXTAH#s$9wO+hudyBfjjOvmb0c$;;qx?>n?#F;OU_E4zg6Qx{XWV z_2l*HWcSFxOu}9t=L15vy_U$Pv}eWrAXaECgT;LWJ&V2OYOENCvRh(*Y!ZNAIu80c zsv<~@K1^4E^s9J(s@>a000|QvtbT@h2)tEtCv5u4%z}rpG5#?0jt2Yp0g18C+--|My>L0;-+4my4A2PpkWz;_H9(WjJAMZj4rM5 zwuqksGv)Khrl`DGCfDFep?uBI`){RBZ<}n;!Dq&egJ-MkT^;DeP}R$}zk$gxY|S4V zSu;#yoq;bi(xv=zX=MQ??mdcgue_$XQa(Z$+@$Yy{fd=lxrDYMjCD2zH2Nmz<|OI5 z9nZ@!K18#9`MI({{y^D6_@0wFQ*oeX*vk+$*0-vYyR%gm*stMwo|Rv}b|nY9+eka9 zF1#-pi8SsgukJd$Ha0iwlFxSoTUt&&}Vkh_F1?sj&;Kx9$juplpF zSb5yajU=u^ScXx{9nD6K+gsS!*=#N6XSTQ290o3>Deqm&@R}ZG!tQKu;wRtxEAYdo zp8qL`x$x5;eh1I}?CE-KYond`T{0kVzW!R(370OMCzdzoZLHf_pFQ(t&aSM~(zfM1 zqg(=tcXP0D>ZKQR_UAkf9X)|r#_f$8YjqQrg9rELAo5@>Wh;HZ^xShe|IQh__R6bx z?1{&7KywgZ`RcErO{5NZ_uRYq=3jgb$8Wv8marGJpU>H>lHGdqwNu#n;+JZ>CvtFe z{MOrW_N_O`jwBb^$ZSY32GBdz9hPXkgjZAHL9$9T*cS3;b41&AVo&;DQ!xKA-N%!z zaWAp`6dfhmI({x*k8Di&3_LcncYfIK#HZ*W6V9w~m)0R=RFT-T0#Axghui-M_)Flj zp7qVm>^GLRXCM8>*QE>QoITsC?I2B;<;WfeUWEDz1V*1}LUS97P9%!>!_r}02#>KQ)E-#N zS=TN*Loim`(Sn(NCo#()4Bc5V_Q;HgfHtFU;2L6_;bd-C1!G8a@T}Ct&vcMLx*cBE z`VpA-&`RAB`DU?GRsBudA~&X&X7qTpEX+>cN0WL#_)?ewC}>gO*pL|! z=#9uGS!28l5mHym76Y+=g!)GG%|tZ8te1xFc_y_)3zHz01{?*L|kxPGT|dkiSVWZ+yUYkgGsU*>GEzV zMI>jNg9NiuPInbbkTGd%MQCR&K|F_;1**T4U$-{4Tc$>XH$f;nSAH}E3FzZ{Vjc)( z;fUxyy>e;_fAldikJy)%_#H;+>GHE zS^yqSBszU%G^!$5GQVS-J}x>gBSWK+20u!>XoM(YR+dU?Q9E9lAgBI`m@P}~np$DGd+ zY~p5i>~~6e!A{9wCM*vtSXj!m-8bU)+n2EVk$qTPU8zp*{yeijTUyM{>#Vk4VBN{V zPsuElAYuLHHEi9yj+@u6)m^DhJ^M1Qy!%%0A%f-EjS?NV;T1ftPM(qrqOjE2ZgD>M11UrBdAXGN_!l`43a3vLcW{TW=-?YyFX4au zfB)a>*jsj~Y%{%-d1a}V!d|&}Ax|c4;LrZ}kMR7nzrd}x-GEo1^9_I>T8K)7M~0Z!`CZF{XgOHc@MyBCr54 zW^<+kHk0T&>!f{~!#|iIkeKywg;8ZyI`sBq5=?70W2PZWe;htVM04n9ECj!;`!E=c z7F`LE;n$UqQ%%Q^yqvLaGBGBiCt}P9VW{*#@EK@_VX=)d5@PK_g6l`nLU#w91A@3} z6!i2sKt>_8pk_Hcn}e3wSrd+PB@**~WJ|~pO28RjKzt&*wuf1p$eq8gLty=_(=jyG ze%45Vhq8YSn#*omWlb9!L%80y@eSTq>pzk5eE(qHXXQLyo|NB;o*RRQb*xFZKDNlF z{?Y-?>Nd$Ejfaek>K`jpAn)IIWkcDn+JB21B^#%$sY}G`UV2e@ZX_lo0#;7f9Vcy; zbT`3EQ+>z46nzQl;IcO2z|wvkzT*I{Wv8tKU5WLJkrb^2WSr7+Vidu=0n^~d+j@Hp zLu-1V++0{Wfcrl36z>1vlel_u6{miF6&Kz(oxi_>w0${0UJm&z&hAEY>VzgL7Ke(% zVL@v7(`=@jcFv^g`&rJ$59RveVh)Iwa42c2iFS7k%pvKi=VebTh!6gr$H zDttD74$#owLb|HQLT8E)BMO_z^9*shR#s^?>GWH%fC~d zpd84vjWWkf?ayY;T%LO2S)9rNjIHym89r_M)QivHjaOc(@>~x8ET8iCkN@qztQo~w zX1L<)b{OpfleoqRaygqDGv_l9c9$Hvz*u{7(i7d;1DnE+#cX)zZz1fGJr^(o;=he| z&@(!>MEb$)3+sG;jVEq|c7HQPB2j`(?fIZWxdUWa+}`Q)Uf#y9xuO^J=LfX|UrRu< zl_$Yh4=&-vEk`>H8*hf@vyK8hAqq&${DNZ0um!@}2AB^K@&FyE(7xulx+Xkvy6^oLI(`c*`ft=u&r~WKrMSv zWG!iz#S0vP+?Id^CGCPnbyxYV03oB>Rs_kQzw+RHz;yO9bkJVN-Uz} z%f?c*d3H>MvOVIgy|lbocP&|4+w3Avb6$Fe3We=iC9^ta0F+?9{-^vmutK0FgSy_f&rE5**v?wXHKRmH|LQwf`dsv zjojd4x{gGf@<(aNO4}8i$wP9k@#hSlvin)tC?FIp`nJ#;8_UFi6tcCI7}qHjh#8Mg zK1mh318y`*x`HA_1Fn-v@%e;?r> zMvG;96pBH&Se7(&V|3D_fV2I!Hb+>%Yt%}J%^6IYhn}!;D%`#SM(XGVnK~bc_p}W^ zzeefQU{vF&=gat3$s!cKO!M%_`Z;CegDmFdHA z+^Rd56Qsm--S;Us;rive`nlq`(61f-zlfcZyI#|Jk2^gok8Qm zWPIk3f@Iuo(K8eb#e}I{asvX!pX)@zZKbQ1Nt*Ph_d)%XKG80{+3|w~A+D1J#CO)h zgli=DBWx12L-a)2Bk=MyF!a3RiDWoBbfCm#wI5^H2WeTv_4T?9_?T94$6dGT0juL2 z?gWt$i*Z_e(%Y&IwKl;RyqUn+wLTNWI1s|2^#k_-2%k{yVgi#QGD2LJs9HI0_8;WtX#qhxXUq zrZzXWS|DMETn>S-akRerAj<-YhAL_6q8(p0``>1aO@Q03a3s$4cVw^ZJ&@wJvMY2- zO#4gHF^toc7}cC(+x~dw&NqBab~vcfrDJNy921JS+a9tJ@yxS0ToS>IkTJ3LMWV(# zal0YR)|!*s;K#&>x?+(U*x5~Mg)8w`FnzEI-P)=!DG~!}gpKk>o(9dhf_6w10xR zgvUVbb;gw5t(=~XL0LCYHVNnq&!9VbdEi8R2*cgrYn~7cJ$ zZU`LL=2FEU^QU!LCpWaW2D3Ry$??$hPSW#jCVI+Yj*L&dpIinSJh9N<-s65o#Ljc9 z{cWtn!hmCU9>R@_m$AFG?QB>3Olr0Z+`*@ zk9`pvH;&-Ui|=6Vy`SY7?zgk!eI-9x0^RM5+oFt0_GqW^=V zF9`L?4?g)ReB`O8aLb){V|!Qd#)~iG>g9KJhyP0*#25y#x&6(b>zj6w1zws*8 zuf11GY20p_ju6vMDR8QE6D@-sN&lCRsn}!_7RGSh7eiJey_(b}fd!nNAq3j{-SxnK z*QGgNu2N+R5MpfbV1rB!LeK?dP|(>kx@Nl018!j6`RXGOf`=zB^tU^a@d}%s&{KPT z+5;RkqZ_b3VRUd+EB@}hXfTS^pinSA8T#7~!!cue30I zFZ6Q4l-m7ovDP)1>DFr)uRA(YJsWAW?gF@3*YVwQ+wppy(^#^{)R}8xAFA~f*v0hT zTySD~t-l^nPXasyt=hzID8xi~vx#_tkj}KkKI^InF3om0ra67BoPyg4 z$GFWXNnNn#v%2VaS}^6~J2G{P%n{t2COZf;f-?{n5l*p$QWb~Oa0!PU6C9g|ZW}K6_Q%r0)XMrm!A0QD zbcNx?obdJx317{k3|;A(jh!vM1doAd*DHLWjToSY4WU3fJeb4a)i)ArzXK^Y5gXr) zSyHbMITK@wHSoz$^4PkrR4M3sqp?#}9dCIXTC(PcjFPZ3kGr6ul^bqlr)F8V8#MtJ z3Rp~$__;X=*lYFzHAqjL;M0)2Yg^FoU<<*Cy_C{k*Al@Cn6c>B^R)MhK}dOqYkOzc zS=mmoce?0T0lI~rjSj>oqwg}n~rKE3g^_vT47Dy zk@CTYtF_sn+TW3?>wHfA`7_i z#?`)mXYe*Q*SRhmh;yVWh{lV->#@U7>c_7?N*UO(J3f|Y0Y8hY=WpW5h3{f(?Zpi1 z)jZBkj3q0B?b_y;Yzys~{vC-vw%vr`w%D1H`O%F4%KdQxZDmi=tQ}f;Xe!%>=j=@m zAYOmrdHj$6?IwQjzx;=|eEAAq{NeX%Uy)UWu8*qIQihy~nh35=&VMv3oC0^{$I5|2 z_}J&Zf_p#o6fSQFo_^*O-udG{!rJAt*j>Mt``W5wNwwr@r)^*}Cg<J5zt%2_YVEBmpu|3I~+WlQ3+BiHfcNARg%`aB-|FaAqheD6Jc?;C%KpZv{V!pK^VRO*oNc%xKLv znB>LUE)y&zGn^)(NT3G3{F^-+zJg5J?}n9BHWWsF-)s&CNaa&9=Pf(Kww>FLXBP~i zo~D!LaE`>7DS_5J=(d$fx&aE{&YE{(XW1Z(WizrKYPiE4&Id8G#3FUuR?ifGkH|rY z>sEE-81E^se+TfaxRsq8IJmFQcx`XBlY*^pLptJZ&^)^n(PrvJ9q-6^3?%GuC*5bY zhkz{t0L5dsPDMibsA3Spg*nu|$pYdpQm<1(`S*Q0qnPehBW1BwRf6<+_Qp~kOwd%S^P=-ks0b0ba_yATRDB7Y zK1mNS5o*AkJ#pDeG^T+8uVo@NsHx>=K@(R9siUsL8QIcsI&5~e{fhD`@KCMmx%4|@ za*tBW6hU1w{^lme=)^@RwP(xDZsWMAXTX@k;$WPDhm<_1Y5dy|=Q1OTUgw zTLLx z+6#5gI1ZE<&D4&~;S*|KtVNwjr>s9a+ddg+zKYtj>&(O*q$r z#KIuVm=eJH^}#H++F~M&4MtjxcrA~rc7Je2fIA!kd$??*JUa(lydn< zUkDOJFM`e~nhIUL?*?DT1ZGlterni^bj}wFy*+R1uVL-;bMSx(h}ndmKNueIeghQo z@7-HdB`)Icb+lvuP)n2s!>b0prno}z8Xb5XP&y|9P8<$&%GP-U!H*S&p~17Y-hvv_ zLD7{H94K|e;)Yla_j$DwT+;5YPn%YM~MZs?MijS_?E zD-yghv>C(^T(^e+ zI6R-xA=&rl5d~_uTGg1;LwNhXw|J}*KeVJm~)l9{%?qF6chZd$aQQJ@rodYLR?bcN=x6c3Fa3S|^z|z^|MD|ff9vOv z_465qa<0O5-EO)pM6cmtUB9LMSgD@BB)yvSs?kIA5tea#M<-FJWR@NFK2w9K8{y9c zEfa*-%1Xe=&)KuFaZ=+!@R}6Go!fNwa)+MDI(v$FAm_@Lh=)LYJEzC|mvU)JAs-;S zocc_*SQkTkuU0G#8tCNz7MB(Xcz`{4w|!>E(qvq{Cr+H8Sk*Psg20RWjtXxaML~WB zl-_)Q4}wnvtg@*^IfOoNMfS*pqzE87Jd0wNMSP;CoE0S6o@y26tB7#0p+~H^-f;8< zT-?-xuXjM39RaM2W$+orq@DN~2SP-!9)@r(^@8e97AisSP#B}=j$V%B*r8}f&PoiF z`ZfnsCQiKdhY+?7ZXE|lk__Ks*#b1D^2-c)F`PapU|A5o^sALU;wthNfI?=4P{=Q?uA9sxH-UqoIL$d!#()yA^dzD1%Yo z9l&w2c)%jc`>lM6*i{vIXgurR6_x(>U78i}qD+?-TTnA~7X5U1uK6SUx?3--jWlWYmdRvWa@NzhOnAGV1=YjQvs0KGPZV&?6f>mi$Ur?loM z`j*=0RX}}Kn)7cu(Ad=VMS&yhv)doK6*n$k$v$**^b*NnZ(eLPmS(1))Ph{YgY^ZQ zW$#$77JVH&a!2OhdvN}>v)PF}m37S}l(jJ;i`akkGq~%6U&6}q6|Dpl^U*z6E8|;` zCPx*Tp(H3;kW;Uf04TNV<^E2KYGJEH$_`iM+IDF#KUfYQF2PZr=Ep*Ies5;k`qAYX z#`}+Ac;%On&i@H4*kqlMIt(%CQ^yCiFd;kA`|y!3{5{N0K8|mG`(<1|{Q}bE*C5;1 zP}d8UEK}L^px||En-bK04oZJx@|j}e@5qoM`l(qk)j&n|#?c+j3VJ!KN5o6YOIqi> zw_nGf{Hy;CzwuB0GkoQD{|Wx&|NAd+~Ee=>&T*Au!19@U{6|yK;oGsPG+snI4SU9kpvpz?0;PyN5{S&pAn3Dkr7V^&|Cx_d_=z2F&?Hz-{i(!&@CM8!D*2t% zDgwHUmX43x?1Nr6PSjSPt#aFk$O@G$%z0-}SWpCXeaRHplY3D%W_<&`W86fCBxkYt z>{5ZTOlEA&jNzlUUQNfoI?Pw&bvD$^OEFRaOfmm@rV>_OH$123xt9e1iT1( zSby#iDia4yL(s$#h>q5NAH?(yqTSa3&bA+}UNFEj?V(?Wo*rF)1ZP4puR9up)3|$& zzl@ydW0>msr6K6C@VGg?T9zm}SO4p{{w8;^x%MY2cS-_?M zi?Jv(MBCdtPD~-^-phOx#zf;VNXIb+4up`Mrf5#CA9#YtX{?TG*}i#H+?TZot%jQM zZfy`j2~N`$L74=`T!Ll9N5^58&8mDqp(W4J0#hgWgr! z$)PZ&^b%RduE`Kr%#Fs^vD2E%aCBcEnq`Ob?#G|R>7QS~_C`5H{#w4bmB+S-qqlwm z4}ADbSUj*$i^aB0{uHFT;G7oN>v3W&P$_ML*nNm4Oog>}h~~r4vUb_O#h53E%KKv- zbDp%qa((Z7j-n1N4Oo8o3%L2-4|4eA(Zo*l}uK~LEyf1qOd-EY%lg_r$v(8fzlY3iR zo4!r6kkiMgi`cHcS94~gyvQ`%>vm>lMU49)Lt6`DTv^xIU1zUMaV^HR|iZSR%tn_vQTPqAz^J}bB^HL z#^5DnpuoZhOpIqF&}Yc$F$W=H$|0Urn#OjdT@R5#5&P={X?P-LNMpd=W&vZH=s1Wq zw5T_wMy_Q;dhzjvw<&lj`SbB^jZJn#dDY2OGoUGyCBtr<>sc8E%CcZi7jkrM%;q6E zUcfYLN`PtC+C?{Z=ZkSN(^MNA9A?q+n?uJ6smV-=`+-oREi_2g*)899z4fuZu~QG< zG|@=i^q&R+tVl_HM?b-fjVF@JPU;->Xxg02p)Az)1=+2^Y33ltW%vkQH#`JP?SV3m z63~?XOUXzCwp?U;BLQ=I352bw_m)~Igi2#2+_PPZ^6b6fs7e&;>7diEMNZ)T@cva^ou`qawm zBRF~Q$MfG=^o^>&OCSuJvgLb@p{x$`D+{Wp#>|+WMAK%`TMG4%I-yIfsakC zl``UV+X)OuKZx<&bB;$yhgM?%bV|d{InsOO@}b)w#D&Y7IRDO%v32Qm&IVn{-q1$Q zLS+Z(@B>(V=qaq;^$->hAFGS`hn>_M`BD|IwSzI!3VA}U{7u{2kg|rPY|~tf{q|;U ztCZSdcOARiWerZgUP|vuMy9SS%Fph$plCOh-Q#x9HeD!4ZR?9lxz+c+_8)Nj{U61_ zLm$S~t3M_=Nxj_!*>J*#5dV?3QTyxyQQx`c&inAyKm5;d^=`pmU3ePjUVgp?GUJ&m zNTo!qjKAPPx8)8)X4%@HDQp6C5DorCAZ*JkLT*J@LpTRS~ z_y+E}^#l0OlV8T_k)wF-`+tqKtCvG3STJI=cN>>TjZ4QfbD0UlrZ856!TgHpO$ocS zFq`4{$$N10*ioD~dJAs7>s}lo>EkXS$aO+0FHv znLjcQjBUcGu06^DTiNz|d%LVj+i982ooy}U+{t=kvz2gWV_ix(liNDeGYRZJDKa`= z((vOBsf2EY+Nqe_>Y9ldgl!4o(UgMge?*XCwrd!M?v>t=2_50VoG|@t0xs*@+03&T zRrh8*4--GR2bwY!6F(`eko}bYee+2~Xz~idcTm3Y!NYY>w__*w*ds6C$d4{BFH>@1 z!k2TCqf;1qTiXXp=*BC|<04_N5W98`1)6Apm&?F^yqnB(Em$wV2}_N=$0|D=fn zV?xVfXZRi&ZG$W35Ogv+btW=!Z2vATwO!rH8VOrJ(>V^HJcq#Bbg+%50kRJXq37DW zLJB%Laf~*jW|chzx@E15X&v7QP>+A63-MO`_R;VWBnA3J#$ z-u%gH*(thS7rj@faM*`qCq9y$v%}eG67x+wD_^o!uG0{uk5?w@6J+oTyFma#`E8V2PsY`(C^?z=Pk31`Rmf^!R!bfz`Jk0 zf}LycK(=q9Y)73Ima+8U=WyuLU&X##Z*9R;S=e73`0{sOem^_(^>>N5w#WKc)X6VF zPt8>96h}6HulINBL9XR~DiZ?bdRY`-7Ru)UM@m4G|L$go6}y|YtZLj@$L98XSlfCd z2NEmTIC~T)Z~ri^Uwj?tdSzBNpxD71Yd^!g=ikDK6ZhccV^84Bv%kQ`&FknFDks-Hn2fmNOyjp{P~$kE zpDa~e~m(Jqasjp)_bI&G*8c7T*(7j+PKv`PS}jmzo#HmGlsD#JrfgtSwo5Oc>H~7DlqhqNlIzUw2onn;UH%N)tSDbF83Mpv7FmonHx^{iHOM%m9Bnz@v zfHS3F@C@8WYLi}S7H+OqP9zcz!5rKRT;kO^`G)i%wj3@WuR5^P==~MxoR4;pT{z2p z?t;%`+pkXHL~u~oc;CCv~{kZtjQ1#UORHs*s1V=XUCvxfY7xI)nuS;ohm z4?Tj9{^qaayElJb@M%Gbc zoi>{A?w7{7%A|=LN-IaJc0o5`D7J5H`x4%|ei3)v^#mUK)R*x5_rG2bH1)%lI~}7? z1ZmoB(@8G>VQcIu(~F(0MT}u-WfhM<`4m3&@sHrhYy;O%{TOfk&C|G<1Bx3t_*&aS z%fOVZ`N(>!mDb6uO~yhqSHnWvzQ3F`SWBp8k_3E)`}Sk;mbNi8S-~qLnr_gJ+@KHRsU}hBHA#0BzZXM2?auLAA|b zRBKOS@Nw9qI6|Y3c5T>8y6dHZ7-Rxl{S1BJ;L{tXj7@xcMyt#!250Ps7Bix1M`pIh zqxD@%V@mqB?6R`Ev(t}TXWqrjiX^(V@5u;b<7v3(^)m6ir9%}iw{6lfIhWV8S0ezi z+1EZ0G|UG+BG{2?Fox+FKO;I^a(TZ+{2lbQ*@2i+h>U{iMhRxKlM7Jo!|D^ZG9bp^El=Air73|FaN zu-{EsD8H4{imOrsd<{;QshErj&L?aO7=M8~!$)AvMyLH`1>bg7X#u3IpYg72c0K`o z;&!>nTQMghYV4*aDr)V8Ha<3PExQ3hXAZi|6H+%};|g7ZA6Xr)tS;gBoriJl-Sc6W z7*UC6@896EIl6uTeMobdY$}9I8rn{VWz(W^3|UFe z@61Zh=1_iT6CCu}-&o5vPUO4cZFT?AESoFXx^gyWOm5bl)XHae@`E_~)!)R@;e#!Z zQ8u%|drU1c98-thy=IBibjLfyb16-ACABN6mQ&k(Zgu5wy}VFn^j8;gX#e9_-^`hl z-J66`)h|60s4mf`CgsBJ#OJ@a-uD4~`tSc9zW?s`aPIUA*m^AoGdI>+nR0OyKXxDX zKk*=z?zscA1FMyIV-A9M*EVXYT`9lYE!#1dO?qP4U7M!9?c>c^YxclA@;m)T%gg2gk8oSrG7|X^% z-EZ-06Z}sHig{F1(5N)<#_28gOHKtR7nS`jk*cZP`5a5Yp==%Knn}vd^lU$k9|k( z!UK;k+{8s|h+fE$vt~TT57H8~L|=dMLD2 zncP#oR)XrkTCEVLPE;yqGo*m;WY%akh1UlwwGy|(1gvBU0 z&>&|`KYeKyz!@ofV^Dmj$!0PgYP$6vCcsADki&W7AkmKT6#9>JiZyU!d{&&=wvL5o z=8S{P2Wh{D6iS&FUnaw;@s-$b>Gq7$WlqayaR?b3ig*LGhro1#w`d$yunW>CB~tBn9tvlYp%)AG@j*_!%OM z4uf51^$c&ezQ6gyJ9YgVwI3j~?9#EjkL154JG0Iu$UXjuh5&Ti>*V~K9G{M{cwUIE zDX4hx_=$2ZB-SroYUjihho{Q(G2EFQ`{nFF?`ncetI;d396cg9a=hv0tvoZoy(?JX zDy16 zVlj}ipd;PYS@0G{B}HN)WSaaB3yU~#JZERFU8`F}mlCkrdCtzPe)3l_JAR;M9xDAS zD=AS;4J(md7aE@o%?^%U-WT^>A=dX5Golj;q8PE~tWrSG+0VkuMJDzy-i@W%ajfs& zfN4f9xl5$)ZPKL6=XvQy`*&&I0etXtU&7B{`ZnHq{ioP^FVE<&=U^l|$*WI2ilblo z430eZ7?$?$uagObt*=!aG+R8jjBRDG78KWQmdnIWY9)82oUZg;vQA~|?s^VQ`MbSY z*C3TZNJ`0g4unc@H0J2FUeCYB5;W!Co7b)auU~>(ZGr5m*M5YL{KjwKy@gA-_Vt%N z;ADHlcC!Bg*GsM+Q=*Am(+x@Od~-TK@u@H3vmbjBW5(5UU;hT)yK)hibD+JpJ77D@ zP>IiW#hsd#0nN z0mB?^roB;+>63v#T|2W>GBl;+tZYJ2cqm7d=FgI00{e48Ta_7!=Y{No1C&zG2P9`M zUlKY;;$BQPNQ_OQU6)brPTItLOj=LiPuw@Xm-;*!$cD0=ws-A%?|li-*`2T*?f8Zf z>_7F@A=7WEgJYpOCpFTPIj7K^P#csRR4oPTpB-GV#24m=0~d?4bWyk)!Wg_e1wP2Z z`)_YHO=1RJXyY);KzJlf3bny+!AzL`rZg$;(|;tq&KQ4+h2!;_)?6&+8S;f3!LM&@ zI-%x-iJbwFW?QIypay>gFKisC;eZO{oNqj1K{ONc@GA@y*tkP&f=ap+((%7vx8RoH zbgI{x#lfF*VN2*(*Rp?O3MD7#8!W0M@NL~A&NVO8V(ztHv{ z@U~@VeIWQ>`ESj0I!C=PN&~7)j8)N@GZreRQwtww$ zm~I<~HsCNA69h;I1V|{Cgj7PIa(q=U=XY~D=j=7>TkA_}-}_z(w`W(KchA{-?G?WD ztuL={sWKE$3yH434unvJm=KLU5Vr3n>iCRrcw)xm2ULMoD~6yKeJMskM@PJC+Rc+p zf+`&4_jowYw<)%_33lH>hcnH!+BfZsKs=b&q>VeRCjyk{U<;=R1!;q&UyWstzS}au zpkk2$ywucc-^(U>VkC6YrdAsdTbkq`%)oU9Sm+Z13%AxsP5mj>ZG?(;2frMJqNr7) zl<_Iov$QjgDaDl=rgN2f?*pE=u)% z=#B-fCP5>g&7yNIb1~*S24A{b;~}WLq`Y?MDu*OTh|#6mz?$3~3&)OP`TSxzGlu&} zu$Y^=4~O>886Sv7itfG}cDEnmwjQ2B1tJxl!GB~<$9upaf-ly0xz1?ajeP2RKJRCoX$hTW zM9~(*wIytvKZljiei_@JdmfAJh2$A*ar|4}ipRfv65}hIyl&0V37`tQ?D7=l51n=F z=}*J3d;Qma1K#$?>u~<#zns?2^SHFWh2>;4-AbA^r5$hE@@^X~Gi{l7H8B;XgCP`| z9#>vg*H^hQ*0Dra9aDu?JX0kir`Hx^$7r;Uwbhrgc=?xb?_1u3*T4De@YOFphO3t^ z0geiBER2JQx7gdf_;9>jY6l+@*x7sjol0iVUuJme%D0|Q>Mz%h@Wy@;{3&996ae~7 z3Jsle6u5nzg;1{yLk?*o$|A(BO5AP=n9$qME#omeI{p;h7?_WBjLUMLyfbuHlMi%c zdf!T^*25eff?&uTq@P~daqsvDmhxu#kMMb8V*>~Qe$Sel4u>w$y=zy$C^O86S}2B=|MjI!|L^F|+&j zCt<$HXWobLrUWlu{mBU#=%+HfaJB063ug?|=U z1dXecF~SK70=vR1i%*^G zgpH592rqaVj%pWC@wTq;r?>;gsq%YravHBo%FLS|d>AkM&cDW`izky8vc)EOCC6o7 z-5|+dQxg;-nC6Rl8@?Vq7@ji#nDFQO+D3SFW%db=nJLe8Cx=9xC! z_gFQx^9sRNTeT9an?b8%CRvYG30Bnmv~Py?Na=fkGg?JsJrFwQ41Ch>Zr{1>=#?7j zAD~HPw2v{uM}&|vBT011y{ZZuXRMEc&=yGf^Z=o&r%3{&rpC*4ChS#XD3#NuK2^#P z91-#FHpM~}E0`OEJi_u~h_E*0JxMiPp=%y(vGjV+K%=P!A#wrKtKjM`Y2l##5Fj-U zMkPa6)Mqw1$S%pI8JDv(WFEpUi9+moO|f+)W*B@L!gTOtVda0NKRZWgY}dgI#>IKWwm`9W}Fk-o|gQ><*Y z`i=Sej$h3XS;E08cDxl*k9(maSWG;lC%_6T!0`}m&y-p)r3$iSjH0-?ik{fJevd}Q z%|m;;$~g!2o-}G_qvVl5yeQ%^C<=flWRAf|L)?>CDSIWAvxIiFEd2`}isE5PtME?` zd;y9#78FR57nD3q#X8wmgu7&_sSpd5H=#AA%siU~K&xN*2Ct`<2Ue}zM(BwUYv-}* z;ALdNOASO0?w&}?2LId-N8r5z7IkEXN6J%N=uoK-6&$Fp!*?!V{n{c%?Bx=Bd&wjy zhoiyGG7#G zmbV7bVV)!M{*;;Dy0{LkkauDvjTiVwRwixtaKYy&v@mAR%ybgsubh1;kGt%*O32R6ZbQodzFAEDKhNN2x#9VsQkuv|rv& zp3upX&d++@!i6rLt9L3<9 zzcYIwdi{CKhH1>-bBq-lIKCtF7^r9v91RC-J$DhCuUqc87q5Thjd=Pu|2Zz6KY_JG z??yRkT}XOXi`U*Vi#I)R0C(P*6vP7)=uP#LDlx{^a65SxlOZ)N)~)0TrSBWtBdjH- z%4S;gn_INsW0dYCqXvD3C8^BzcEo0KZ*J4~bZ?7(Z#CHqnxT;tmUdjcqNEh5?9-NY zSokD8OE}VNb0)oKzW5Qm_1pg}UjN3|;n7ciEVb`hMucrNHT;0iVL*q~?s7SN6J;sv zUg~SRm`_JDYzki$!x<${7)%uJ45h^;9<;T&&8hW$3V(PONa$40$G}D6;c9>Ux4ueeW6>0B3ac?=#V&@1%T}%w`V$ zaz#^Qq$kRU;S}PSDOONOWmmk{n)qK07Ym`I&`O7-lhE(5p`c_tqaR$4Ltt}K2h{3V zp>B?+Laneyy|vvYm?eO9p^jw+PQYb_B6MsA@|)`vfypCA(Rq4W&K{Ho2ZNHYoV+#d zs5P0C$LAF@?`^Sp2*!JS?=%w#lsGGJ7`L(#*Lpa)?n$VW)~CHP*t+kYaf#4aDJ5Mz zpzm$xx2xadMd3M2kmQx99n-pl{A}G~b8yMe*l18_OH&E@g4n@O+{Pys6eqz|VSiaD zZ5$(Xr`CHW9=vK;dkZQ6O+d20cw4tM9dTj6aP!NdCef_o@H8))XF@y)J~5YspAimL z^ig?9@XH;d@(ZEiJz#^0 ziM$arA2x#M5SImWrX|uhMLHNwX&P}9L`NU^J?$uL50o$fL{l;tZV2|K5m|vpFh$D8 zZs~p^D4e)AhMdvnNhU6sW?#;XLR7j3!52u#pe0w?b7&q@^L<=9y{dDgFU3~Z0UWdO zv!3&nxwWoJ8GY=t$FY+1l8dVmkG>G_+*R{J z~&SVCmVuBe!C>y@~Bj zI`@Oq+BO3Wjz5fvdu}OolszkXO4Ik7lg0hJZtLTwxgOS%aJi8L&5b08QlGZc-{lPo zxl4j)Qrzg?a4QM28!av^j|GOeFyNSH@pE)|NbxG z+?f-}D>LQ;W+U#}+r$6;Tkpj2H{6B(-f4=d$qIOmm!yzf@?!Od<*y(!ts!z-HdzD7 z&x*l`@(+$7`~Rp<h9`o=gXLZZJL z8v)m@j&R}PHqKp0p1suxtX{i-r#}B7y#3qWhi`c6E%?}H(`<~Gfat!`XgCOiM?o!T zsN8WG4fH~2RHKluZRd}jvwK!c$_!oY9fFY8(~0#|)3PXQRuDcO9_Q7(#YDOePu)&#ydBLBI~p+XjeuJ*^y$ zNidD@kF<#LA^V=sobkLbN_94Vk28hzL{&TmH~J!qAVfXjO}rO&*da`DXc~h9SM7y# z6G($iq!2=`7r}rllPu3n=O`9VL7MW|pyHLTVih&Tru0SP%R{vevJjCGSx_wQs80ZE zmPn)JO-Yhz<;9@s{N?)RDSKwV>8VVQ7D0tI3ma;R($4w{xgot|f17qKRN}Iu?9Er|G6Yf&EAC zz~$4==hUNPQshVwPr^g*;n$&=n}DQf3#?T1)AKhU?&F*8nZabQrlDeyY{xR?w5KSR z<7U#|&pf_{U;cxYtSbmN+dCWZwuh(l-%oya4VSL8MTutvg=BjaFHJ)dKoWo_W_vji z0`+g)ZYPE2ObLMtX2gsY&Xvh1JW*)5tpB3s4w4mkxVe%QyBwlJC6f?7d-uKQk!61* zI2H9BnYFA=Gk+!JHOuRuEJmaj1FvtU@QqaZx9HNH0>vN~B7&~Jh5`G= zum4tDJ@pb!zw}jXr$LYM5ho+O_1GMK_Z{Kl3}$Ul z_g$67Tc$f;tuVNLmoT#+ze9wE^W?r33LyK9O0A=${E(+-11C>h!iPR|6;D5vJVRGr z#Kz)Te9Jez9xtE1isw#j8f-(69~3m+L$M1D^R&u98c{1l24{Jz7WjQ}w^*G5p~_{q z9h5A9WK5%!%_RG7ZEPncZB$aAyYeQx1^E4`W&V9X>U&ZwdI2Z~c*CI)G{K`#@ny-t z8BlvyVg(ni0#lUPOxl%xMSHFtgoA$PZsBSF4%pzvlkaj`}hR83oX8Xea`Ll*~*tNcfAp&%JJf*r1^8 zA&7k#g@Gu-x|35Y<;ng4jq8gcr3pLID@N9C+mYb_w{T)15QB+9_SS4}4$J-4kk({P zgI^aujU$8sFr;Nmkn~XxiE_$;j@Aj{BD7V4LfA1P>z_cvO{IE{9PYyQYMR$8VrRWN z58Ss{<6G!_3AjFyYjneYsBu#I?G#&Ix8kP|py=11?{O&^UD%y$@Q0(r6|r&@%FFZi zCA#whxAHVNSt!C_sni%x+$<_s&!Ql#Qk$}Az3`-GKqk*A= z>k%T9Dn}3= zCvjl@E-dVs)BSX^+>#!EyY7V?LXPX9l`%FUo(`cL!BI3o5sLRD{yp84eG{2nrGEw* zUCd*n{v=Id^UOu`H?Jl^W|#%(achwW^+rM%F1fs?7L=3xXGo8}sBu5oAfR>GycerU6Y)HaLE$k8gSF9NzHI zY~BkxH`Bwf{q{0eSLi$!C@qKv&>U_?IorqpvbH$PUarmIVp5VW%kd?!NCKd{XTUJR z<3|}|e{v#ulUB2GhgdR3hWUBS-h3M}S_nR8_?uT+9ke~3OGXN!3rCV+;~RT>@U~`8 z@|+9|Pne#Qdh?Drz@GH-f526&#R!*qKhK$$#X>b2Koy@@_%F=^WlkC;;yjp~MRRx> z}b4<OP{h8H`#$l86NI zSi~H<^x(s@IDBjtANY;ac=lOfGF-q-H@^`N-9LlplR{&>M9stSHD2$E-5C;oqQ7JH z+n2WQMk5UWqbV1z4t*Y=yo0iv(P7UN_DuLd;bvqslsba)iGb^RE|^XT45Y34>h>Yj zLypFuHAGKe3p;A+!k0yz($2CDMSKgkV9nFUN4 zL;-2o{T^)5x&DX{4?n>U8jVoBiePxf!;~QNf=JHJ3GMaOxeb?maIM(FRtUlr42ms)FPgE z@(NylWmO3PceLt*kf!K|@0gaxEb18j;$XzgJ8~UeaKe;Tt2O$rl)tftL2$n$WJ~J} zCNvg-rY7>GKEDV9e5hAY*oU12!QnX^zQ9=+RCvkr3k?ejIy|x1SUrMuMwEfd%?YRK z^ZgQP1XFSpX@dbN8U||JftRoII_btrnb)>!u?i}1r~*O^m^?L2aM=Z+5QzZC9MA8Kam_el7Iof*Fu~PX1RC*nAcsB}g>o~%h6>uqNS==oXY8sxL4Xq; z#9HO?#~BE??;^O2ozUSZ2Q#j?69x()C}Iem^4=(tAhM66^?;E-LFZhp-w2v*PGA{0 zqtR|5dJYkkVbGeURLvX9s~FKv_b7BJx_(%ny@yF@K=pPrS18H2lJUB zTgxj6S8d-;X!qf!g}X30;3PDG4aMo7gU5hFM;r}s?bSv$n+IP42s`>F@Fh5&z6>mH zKy^hDP$z?}+#H=lU$#?guRN2UuOZ}fI~o;GO^`6U6f3c*!Tw`+WBKZZtkh_72RbnF zj{7mV`GBsOA_$dmxBK@6+_}F*eiOLA@XBV6!F%|YDa=lmwY$18#?s0N^T~^{cee10 z_2f-?_T*N6@8F&W?|Nh!-}sh2IJhvO(0E(=efGi-AN|x?4*gLw$cROX5QUqGQEFqO zgw!o9znF|7i`jeQs5zp;cZI*BDN3uEe@@QMVtZ=|Z4QMEIi7HE>^4m7Sttj4#-d!3 zS+%9;sWGpvK5DtOEK=-Go&4TrA0FxL%^_yoycxE54Gq$>hcSJnC#dGf4nuLU@5bD^+Mizv6BH~F_6O^Z8M5W0A1GGUTzW#|&4pc5#< zV}#&LsbAXn0;6fOwSu67VpSI$iwRc(D zL-p^2_wUDB-f#%t_>N;qvFYP_7b!N!lafQ9x4!vEzIXA`CjQf}zKExux`qoEH>_qi zx8j|VHcb(6^A(N32S&I`5phW9i96k%NeuMx;Yl1kG?n`=O|Pwuu(38y?&fuDunS)B zu%g{j7`QFlvItq30BWWXYMAPHBrHyG1Q20f6%!55ape#c5&X;m!7)QC>$Q%sUEsgl5Rp>^>NXWob}xTy2l78=~L;9&GN zs&Zke7EJ-S3~Tk8*?V{nvkOzWcKQOUg(&@X_$EmfitukZ9p&7QN&&Sx%FEK1(&_%> z6pq|=92cKG!)JnwOSn_p;LzNCII{nMg)wq<6f$<-Bed_v`WCA`TKmxvfLch{Ikw3E zttR8&6E7ogh9)C7d1)qlWeY+%zovvKPz|Fqi@@S@$@4K{7!W}j8%=cUK;~EWicL)K z#oWRnoO$+nPJ+Naq$B}vesdaUKU>swOHL>#_WGpE%uN;sv%E3F`=8mu8xIfgy4!=I z?q{A|$LC+%#t(koTvlkP=9kZJ23J?0 zfYG;wEXitjEU3CXa-kbTRM%C?Dgi|$D|k90MnX8)NdMHZRJK=8xY<-r*<1{1`J9xT z;KWCXprcrO9I(zQ@9YfF^Z(t9CA)#7rpKO6yK)g#y)+&=VuabMQ;

xz8o*6#~qN zqe_!&b_aEKXz5zjDbaWNC7H*K^$nI=LbYaM2O&Z=Zd5qix-xw)%<;(K_mik6CRiAV zGWEdKJ7q>T=gZ+`UC)e6x>!*gsV6v1ECjdyL#3GtfQq$?g-2=IDI2j`BtaLGZtSl1 z*6?>8V-srYkE9}P8gH9LXF*uo^zY$AGx(`L_ZmES-+ug;UWbzs@t1${!K~Q);m6P7 zSAOk;d&>P$PXHXUb%cTd7ap{`U@sTJZFa7YH^1co-uaD(ar+&!S*f|v^~@8?`1BuM z#Ap8S(oW?d_{9+LV}JQB983xls*wO)oR{m$g>9^_7Uk*mi|cs)t1IdE&=DkuD}on} zV^Ju>5B%iqxcRQ>U0eM8?_a?mefV+cHnm)jBBvr`Uihl4EXkQ#D1FA6EX!w=^;?`n}n#nOU&&F^@`box{ z)){XzL{s@g#}8n*wOPC~GIts_B8-DS(Nuu)+c=UiB7;0&VVY6kbt`U+zS}A8~Hqz?Agqz>BkC;0=59(oifb<^9OFjaC0e# zqtJOjGEe>6?#9GjH<#D)rfn8{^P&v+YP* zpTo_@bOucy8&^k}zN~Ft!LU7(1h@u1dc$uuku_)%qv55{`^ouvjJCIPxS8NiZ)OiB z58sjxTWwWP;@KSr<56S5t@0)%ikM1k`RjXoFld~h?it4}I6z+4agfB?p~jhrN_p}X zWL}TrJ(^0iU@MiQ11(o674hm8@6CnM>rhFKKsPL}zUY~(#WZhp$BLf$7w zhj1ndB9$5A;K3gD%s05U>N9D0NQ7PP%0s5Z@Wb+qA?#9Rmhkku&?||0s3RL3B7~j2 z$f{+p9H>cK2Z$bw$8Gi|l=RrGDl$N=P-vUJK6f0!j))3icjY45n3Q+=P-t0&t{xe? zAFI%4QfBPDr=UzJ!zn^}r9e;Qcex)$S%&9>R=yZ5IqWgkb1t;p%Pw2nTZ;Gj|LE~7 z+8PfIzV4pQ6?9$q%YbZRMKCu8Qv+QYNHEeNp2)yu+LpD~5R`aV=`N#ns17#`u&#vq zj2do0_LXqrQFxC;Vb)MCS0fQr(5V-LXrm^8L(A5SKo$si%z-Pey&VDX{kGfiXMgA( z{MWijvH79*-HC5{_f7bp{_dA@SXx#Z+ipmp3_Vl?D=5PFHEeK`@zB@TJg^sk;V<2r zJTjACbN}vtXixrp&kx;-|Igol7N=fXx8iaQJbMo&T#EJ~t)Ow1(1QY8??3MX<6 zH9dx6ioC<{io8D+j&2lUFWK0bHia&U2dBX``X%kuikuKfpz@BS?-P>~g~3F>HwBQ5 zy_!ry6h~$XUcq5@VMH?kD)a||H46}^`vnC>QJlKrcj~kgdJ?&AZrhj>_t)WINy@-X zB-7Ng2cgj{X|Ro{I*&<6nxDel!Q!2XW7$p4^C$Gr;klw@TRdgOOC-p_NW?fIOji{{ zC&ZGFxA*X2TswKGgk-b@F^CUL5AMXV1N*b}tTmKFlLYiz?@E216UH35Il~meOJRtW za_yFfqNQOMwv!g{%qd`fy&N%8JT!Dx0pq(IQkb4?ULIm}@k^NO$8xA3!CI2ajCnmo zZwrL-&1Nu-eTR=>>GCUi>}CHhEj!Bzm>4ujeGblAfJPO3(6oi=Y3*8V*gbV?8N3FPtv>U7mPl8~^xMuHcb7Ch+~= zye}&>lo9O@Kf8!?=ZDzbOv=xbn|g4fv`_nQ=rBz}5js09E5@nM*Os45WwsFlpVY$h z?PKR_pD5$FN({)}fyt>UY;Gh4AStzFa*}m;|1tFE7V`d?LW5ZLkjkhYYHLt%l~PFy zUq9OPaWuhsClM+Cbp5nxL^wm?W`gV84Sym)!7Sunt`!b4nJ{K4d1gkb(;F|HD9F+) zo;$Q%+O^9iYst$Y{C8jS=q+D7S;A}xGZVfI65L;Na8Ft*6D7|$J?irdWA`$(J?7_5 zNG!Xe8F|{kN=INtx;6enxZj}WSrC~A5T&LPtTnvAS)CyJM+jbYt_c|qr$K6Da%?2; z2JLg&MyytKN8qm%3mZ$D-l{Y-l| z*SB)^+E}t|!0T5#^r8&D z65u7oN9Ve(H$$;JQI|I%x(>y=qwAK_zD@c;n8)$k=kf4^3;4P>9oq3eDK4Pv4Ax`q!Vu)$`kaP~9&(sdne8@J;(0@TY$CrW-0VpZK*4xRyLfp-Z`ZyV0*B zBgWoa<2U(b0Xx8102QU78Daw5qz9X0SC4fm<_gKGI|${Z=fcc&+TodjyljNp0jj{W(}nc>=|rkaNEKIIiyy=o+Dn;XDS(TZ#o{UQ^~7&K&*JgPL)_eg^HB%?W@a4 zA-KpgD1Rs!fOk}6(JUzwYbRd8L|jTj{y2wQMP65-qM^|S?C@xM?m*rEzrJ#n6F-#7 zo4I*RKJuC@pvP@v=9;*M4ksj~DYZ}f4Q=Fq=^yaGgoXrB z+JCZL`an@+mzH7fHst%NEvNJY9-& zykgv0*^a9iY(&zt`=sd4?>T_QiziU*%4N^iRI;Mqn+yYi_NI)bi{*ViSRiMsFkup5 zWZs-{fHyXk^L&`tOUirBURQU$680QSTsu2pCM!s(2mhwY9Vgn{Vs5Su!QK^GF?Q-K zf5VP)z|NaodY23}L6OPkc85~Ytshnmojo&=JkA3?fO5#nOg4gKy1#p8!Y)dx> z&>fuPSq?5cjMmJXypmJb)o2;|PGQ=iI=2v>4WjS^pbnYCb;cJeUJFE1oTJrcV=#U! zRhHIkM0iV6k=Ea z9#jbuZdf6hXG%dBSi_7qXkS7{`DumWM|lQg(X2pu)K$wkLPx0ci`*kfA^weO{sE5D z<}n>kR?)xrGjGJ9gHz~UPd>AVU;V9@@zk@6`CZH6)+D#{6h^~QQg+5U8Nie2^V>;T zA?4+v2lnHKe&BfeK3&!KV}JIZL?{OMm0x|ivp}J6@$zovg@F!ON@t>bD7E*0MwyX| z!qfiyzi}Ua=Ffk*Qna`$|5dL8M<(&p|L}hNlmGDK15#dpGRhF0jUeCnt)}rI-Ue;aXNI z%0~J=WovPvlUza7uj1h;Z8e+@)i^@bH4ti6TCti^U3o0Z*=qC zG}RbYF$^N)vRb9eT~u((#xNU?c)alU>O8=rL zD$y~yqG+k*yGFeo#*&4bj$&(d1H+B=Of4k=!A$=M?mT!r%TSW2sVR?e^!BudkGi=D z&@n3P3S=OK<&-9)JjEBi9G#;v#vOlwc zsUydWP(6fG=)uBBs4{it?`g6kWztH3d!%17w+a6h=^*m^e*S4~KOfhzMtiuFbksyk zXtVd43wdLk4<=H(BT{D4!;O{8*nHw7rp9cHkOOnu8vjftdU_@a$~|1Z zdX6)a6&321gf|EGCxhs?$)2o?PO)*Ya!43ujW>F~M6y`>LJRf0v25HOvpm<>f@B_K zGD4x1)#U1ZoAg+v{Tv|XLpbNsttF5~*3dpIvG~GFA_^6rb4NR#>Q4z1EkbQbW8;_t5Qc;qn#U{8^8OF zsvn_xFSs#XJur4P+|iOYg0=UV1~cl`e=3g=R4=h#u5Q1_t$tRze$lHg+||v zP^_rORR6|qFpQ2jgZA2mpxy^TIjsQ3@+BreI$+9)+rf8&xm}Pv>4H4Kb%o2oo2#;r zA3{Y66z>>Vy`U6I2iZ8XQGge01Ds=WaQ%o(7#nTN=wcJZ>to2JHl)TOR(=Ut;rM$$ z^9CF`P%ASRFK^;s{QNU`>bXT_DABbe{UJ*LEqpr6N;Yg>y0nFleS*9>OL)(px;1@n zsp|g0AGjm`{ncN4Me(MdiSn=fEr4(?66FD<%-{OE58*}^Z5n-r697NF zYA6Kl*(X-2Mg9MeYvITQe)z8)$3Od-=XSurGq3Aj$_M~2aK7c+4=f~=+*Um}c|w{Xh1ACFkmxkiaVNacq~%9)@r zfTr%JO_6(3h`VdMrV-w1>&E2k@&vi2{nbddtx&?Af~xJTQl#b& z9>BS$UMfANkOS&lvKAlSa}W0Ko#L=QgVP`h;di{AtocFbF}LJkR*yeA+;ej(%cy1n z*h*T!m!1#U97aCxqbM^JkyG~5ls!tchh**a74$YwCxu{)9AX}N`7qE{&UZpd*x=8Y zl7S4SXEC#X0as2xS^7wEVAQGPewujG>yu-m$sV9Q_rby-b?;YW>-aT$8yueRmGf}Y zy%SePIJpvYT4hmu$|rK#=c4?+=C%nOJ2;W+pp)Of_|#?|cZ;&%0t?@gcfL1KSiv|e zIz=!WjYn8qd^)GA76XO1vg+8e8$FFm%6fwdOioWHPtWC4|EMT!w7Gu&aSUemmt+7m zr$e6Krp$fAgpQ6}y(3wZ_az#&lmzcnNhvy#ycV}j&Nv*5PS*Ccqx6|PD$m8ua&}D4 z5a`!ES+tBoxC!QAk7a4w2zxVy1+@HA602l2L?KyqiUv)%Q5_ zS>Z|E;K6IN6&k}K{<#jP)XR7)f!HY&oE!kylYU>wp5pDHazX^Zn<+-#k`PcMRdj;4 zLC)Y<(}7S?HHJBADb~R5LUir6((r;0g)cM-=W;@Tsp6rbqY$>%H?yIr?Ef+z3AdLh zbWp16nW*~Yz%R6nyQ6jKZ)i_SSJ zHt*kaqE6L8dnaIHa|6}o_-&nv0N@j&(fX?TOA5Bm~TM9#$s3cFxuB63H(M+h-g z<5Di+AXSKSs19aSfi9v_*69DA`KgC@C^JtcZ_GdX=TBg5oqfU4CQkaM$P|mWW^!^O zZz`pfy8=N{Z2s*pK93VGuj0pkDgWHyz3fjgX*b$1>h|efA@l@!XRu zxnI-C({u3f1a7%=2KPQZf5Z3gdF_1uJpVYS)67;BdmeA}a_~4=RuCykq|jXNBJa#& zzjw8~4qI525+U_vlA9!+H=|^>25e#jTaI)gi?`ni?ZOaT50qkNV?h$qXy3`i zWFNs6N)=+Rh6^_)Yr`0bci5`p)5yjZdB=|>R#v0p$!(QjYroyr4H;*Q!O}0QG$V&_ zCZ(o7$Z1cbrs`sb>EWPR#A>D)-F#GnevrdOjfzKsBTQ-3nNnmZ-VI4v!o5)=N=3LW zCjw7%aB$=ByVx4-2n80BeNtwqmy9BZ?md8|v**h*jeH8QLkm3@vU#kCpJ66XVN{MP zXN6SB3zBtrFf*MA@o-}k6sKR>PgcR+5!`X$9!xalAkAX1DvINtL%{xn9fcRBYK4xF zqJ4_atH(IvmQk7IH1=1{0~fAQVuB(p6IxC(>Fg=2Q`yZH8>gSeWN$kwG@2oFR*6BSbZBkP-N;$0ji7 zmFNb-JZPJ8o50)O*tTw=8QG=-hd+x zCd+;ss(XFoTB7eS<^%z>37?W7c#II-6*%l5s(f=IDR{*jyp@e~Z4N(dFmd!w&?zw( z${~$TQ77e+l$q4WN9JeoXKz1-JxQ3nxV4F2xNr`4^`ELr%jUTb@4_;zD$W znj3N(rh5U?$zr~-bg6h*nMzF29@B*b>E1w&d&!yL0`sUiX4zwU4$bXv0QMd#+063E ztCWa>U2|a!ueIKCV63VYs~UlbhNNDhn1Kma#5#{@-9f-{h^A{TfQda(BjZ8qU#axkH;>?q)XZ=cT8kCdJV_8$VUXm(Dxt}?LPG}fg40}mi*?Z&`EL}OFLQd{R622#1`&tYR&hvcn zk|F*>-kM(FX)=w2^yToNhu0h!2%E%J3PHX!$`<%A;=;l99~IkTQmB%V{(-xuGz-(y zCpNIUWq_=#zx?iCvWM;MHitZoH;VGPyz*k|(o(+HgcjcR-MvIf7W`utoS)3hFC^Zz zS!@TfoWDe#gsB6!7tg|o=ODUyY|GLh>i)W<&>WbaE;J=Qo=nQ$J(JTp8<@XhtUBbz z8*!%HLgI$_^UWa~ZKiYL=J&T(@Tq*hP*6mwZ25v4CNX4x!Z0lZD4g*2DxZw8^sRoGa}Dzt4GV&W3><*i_<2e%_Vc6 zd^_)-p^&r5A_tHVPQrL>BP%t9=d0YHGi}m_=_mm{$&7@Ysz+SLq1>hBr(UVCIkpjc zWysB7{@d>l+*x$4T~$=DQ!Wc}=fV$WMDk{NsmmLMMOmpT;h*d4>+mRR;nr?Wcm-Nr zt@1#Nt^zDl$~>VBRIu_2LQx=81 zJK!(!%utva5UTh5q?d6)H)yx5L*iH#)AaOY89NLz2D_Ff&s!^MvRXsaI>)h!K4#3BX&v?fTxC&wuy|&c3)|N-^V2 zaC6N_UC{)Y!{Dsj!Qn<(pr{1AvK9n~-Q2n%iM(3ju^U<7z8I}2brC_PGbelnCL0#3 zh}0z^m<@ay&FIz{!!N@6>i%mSZaSR=-mnmKHJZ^QG$6 z-kE6%xg!437NsDxMW|jp1w8%-0Vlp1aQx-zQf6roRsL*#hg*D=;^7o0|(K2^CRf>QG_1ao6~T&ImF8L)0A_fUb_%* zV7BaCp%$OMGQ_#fJb-e*Wy9+s6go^cu<3sCXdIuwTW+l$vX60;6*}SZ!n38sTqutM*~?oEE(S> z_uiZC@5y^-@@G4iGjZr3Q~FSpTN2_I(m?N=vry)jS2xg4!v68;8EYFg>dJkY8yfr5 z<8|B}CvjUdi=+zW5A~-pBBg89;}F%*E1=F<@j^aHC*jD2mw_`^*=yn!0viWZz=HgZ zPPeFR)%i0qGnKltl?(u@LWnX=xhpAh3rQiws40$?>~IMs{EY66()`aHL38kCLK;+i zC1HHsK7wRTUXy8pkmC*ei8l}Sr_TfF`2j}CUilm8?`*33w)D;eY5I?$Z1QjX03k7+ zx*1#{mlT?IB`f%+$-}tP>bR9w!U(0YpNjGGSMQ049lGUUE+wM>53*Px&7@zEuFx_(kyjoF9eJW%rp%1)3*os+Qp$3=?Owu^(^XSX)t+2~P3a~lJ zfc#UXgcHDo+TtPr65#Yaz;u%u1Iy-ug`3bJo?L4%HzJk$OF#BNHGJAL^UqnCQG$=4 z3+>IXKY$vUPwrqfY>=Lso3q=W!n6n}q1(>L1FD4Z=EfT^A zqE38Jg@QihN*_%0VNj^osIC*f-}uw+v~<;Dee7M-Qims0k@uoV_>Pv5_M$EYT|=Ew zRlSz?O1$t$p(`6W3n<0)-tu^y+dDrOVjLCD(r@XL^s$j~3QGyH`Ck}usP>%%CtwC1 zvz#>}(951_XU(HV+SXV{&?Eu&-rT_%45oXy`pT;LfTG}>j0>o^wivP4YHL!ND3P5t z6j2FgCQF6l-3h$j^Ezm;Fm)@A%pKs=(*+J1yh3#)FT$xWrcW{u2eN%k6j_Qkx-=6p z%U*-oq^wQS2KHpBpGHmtO9ycFCt^M@mOcai+aHkP6Ya!OU=_wkUn&TvFFt}YF+wwWybGXcx1A*Y4rDFs=DDH32XRXkI);hr)dQq^m#my%cO zLWX(JG`t0AV;d{Bt=JxI1!gQJ#btJ1s(U@n17|SGxYb90-|_Ulmlc9GnC~a=Wnvzm z&reE|xqoURKc$enSCT?=Gzs8)27QH_(h$W>>nmNW?FeU+vhb$CJbDcMwWMgDZh3w) zeGae%kK#qoi6e}jlDx1*2ZN5cvHrqI^tQNo-rxikj8yN7Hm*=nBkOCX(+Q_&qj|fv zZgjb&aJz`R_Uub|Jd@pUdHYLX`XL@03NPD#Q$cuxfGtkXmb`FfrRpoPrGQ3G`)-=K zr1u<3KkrORbW)lqulhJy8O9$@Wv-wWih?cX46{B;wzk>yo%T;{rjD$%5cJ-KbI# zj5+c|Xc|$Sv``BNPOuK$iOMq_pbH}yI*11*IHicLCb+UeD^WljXoH&=DC2f5IHAU` zNqILI6jiA6%c%70;rsXD!Ta`A!}`Vl`~ogt-LA)yem!*GUi`p&Z^HxWFJ13?$C3Q~ zcRzA2e@gvM*aS2a8f~~GSZ|Y3)0PGGp%0(Mo8NR04?eJ0+kW2<+=jpVKR+Q2+qowy z!#FfGpgDKs?$^OX6YywX`eq)l8(**X{5o$*|6~IuxBlGYtN4x^ymugZSDt^|g%!kz zSG^ozT{tqpo4_3qchn zmox@&5Q?oIZ!pQrF`^(<+KUOdMu`Rttba`0bnSx)u4~f>j%zdbkqZSQgw-qr-#uMX zg-GfnCZ^H58`;05gOrbBvvNv@ufsTPtg5jvj&%<0QP^I(2UnL?_FhVm9n?7TNN5 zEC*Vq-y5Y&-oi`<;$8_aB;mJZ!!fP8R!BmhmszjKQ6z{r=`&0ftZas)5R^^z)SY}T zLGDAuWSPYP-Je%IcQpBFZj-Q9DR6J`8!IVjjd%2pF4y8xOmTG)4VN>@;gYq+^VfvrZ=*3 z$WS@eN4v5Le@@@tG&y(gSxEKt^QQg;0Dhk%V<@DN&Ur~*LE9u8>c4(} zeF#SPoz$vdqnl(MCn}*9G43vdL=O`8F5{Z=O);)%bA^`E-Y?oeL*Zr=f=QufTU*-@ zk7GV(s%;$)>-0f+w{Qo(?fHLnzX9b-z7F`YsvK&vYj@;kfGh8lOb=gcu<+;*j9eEM z+Eq+gxr4paHR?&t(TzcrElDg8x!sM84NYk;QyX@{+a0(Z(9z9^3{6GjF5lvNAJa< z1GN`~(mVg~4;{yMe9KMv^$(oFCqH|M?$XbvVR^r%W4ioqn|LS@C^MCdx ztuK3N9^8wkpITOU2OAK?6QxRLZlqX%XrByfXOmv{Kez|?Kd=YSKDDCvI9Upwd14uV z?)x7zP%5Hh$AT;Cb(h8O%b){0en-af!V_yb>}-0rx9j_~?`4-I@+y}tknEkg&fXb1 z>*n|W{dw0fpc2T19J2A>h@@FWWWkzpP)gZ?wfaPu7sA4nLCa?ld5epKUDTR9!-<}@ zTL)uluOtc(rN)>GM39lb^Kb3GtQaAd^s}|G)pOup>?kX;>Y^9OLr1A$>MKN2`sLq| zE|8IiHo}f`)+rl)tNm7^B`(AXfc~)%RGvTE-m(O^WwL84N#3_bB_% zh) zmi#eg@Cv2g9Fc?ap>uiUH`PlS%Y>F@+A`w3G!1!hTCAUb76)f38Ng7_OUYYPXyaMpKEF3(HlP^D8!YIH7y_=7r|KMFE74H~sOYfo!4`;LTkk}h;^sbo?U$Au^sGf7Y;h3AEnTYCPJ zc&JEG&fXamc{MB0V`QGPw(>$U#s}Nv9K~x_aI6io=Gz*F1lQ8NLGmn2OiyF;+WGP* zhZZJiPTz#y#C!=W6X>;q^HKN6Wj@zhP-%`nCfpjzeucW(u8>3H-yDzdxuk&Hp9J)S zy<(uQdk85rc(Jv1?moA#9OFLIoq&*AvvU}1_$HVb?A!x1WA7lA%v z=e2_>ke7Em(Tv_5$*JI|%HmniA!J6U+FdH%%$NmWXE}iZe6)fNprYMgvG6hkg|SZN^PpnoXpn;5 zNTxj0$r2)`crF)Q-%1fqu9;+>QO;?^G@{0AZonz zj!y0*w@}&m1P4SnEH5Yrj<0Wm8z5bF_+okbXt{ajr_Oly$NpcrM$#LM8?1Gix$^iET{iEAg6lWfN3(EvLh;1Led9)D zP14?(8+m7b|KFXj%6EIJ?M1WB?CghILrgqmPmS-XKGU&;sx7%!_E@>P1;3T(b?~Sw z&@z3Nxuo#3>V*gk&yc=H!zG)a#uP9n8RfgppC6CZz+FUi^;c^q`j&hhsENA3D;S-i z2NeI@tM>f~?FyZ;QJJe`P1FXX&6o7U*0)1{;dRna-ZT-ajiWVz4jymhw^+YD|Iz6) zBas+KkKKO|o6D;hZfKhLDgq1BXiaIBIi_)sh8S&a zWGy3Oe`>UO<0I%DU0?+y6px$G$vnsmfaHw;9^Bj03~UP8RE`wE8S(u`esRa8KIOeLw2vk! zmw7Mxc9wyY5T6v1yD%^4!TGv{Cj#2;KzQP@F>*$7vj+a14lXKWJUCy7$ZoN^+_#R7MigJF>>;lDdSL65d z)4gm(@4~W1TS>tmp_zUy!sH=x^})!lm2Ssm#2aP>s2+(Frty+@k)Bg>p{*Qp_~MHc z{@9=v`64_KQGwVCv3x&XXH0rq1#s?5?3ObIA*!bc(fR;g#iY^wKJ37q(3wLsW;#9wqZON5oAxW%e5rTU^-E-YKP1IBC&Ta7r>p~%!<9^{ z+D@A2>e^azv27|~n?|FbjiKuD4<Pve9gozfsNd!?3csM(2At9bd;nrj6L_-f$k`ow20;^%(x z1zftaRo#En>lg4({=w_<7m{*A-keI{Qg|RA@&P zD!A|1ZCye8SF}KzgAhXpFQlw{F_v>`pndkOp+ivXu?rE;bU^1@6sCI2A-XzTJ2DqC z|Go_mYg_-NOjN;+X%u^P={areY+&;x>)*ojy71ukL#UWfw*CYgTOn13uTrk@-+T2& z+92b1Z3vyxLB7O$ADP3seKVNeH-WWFD{hms&53q2{|*&rvvQ$QAnTPHbe@9i zcQyAwP6%-A%wDC9y|S^ijm1}TejA2bqu+Z=^3#0&zNnpS7R5Fq!IP{A5N{oupe!L$z(9Cd=Qs8l#Q2u!S60w_T zUVUdewNnxDM9Y#!874wzszR{c1}JoQwqL4cdW@(E|xSdPPgba=%}>_nh`bF@vMz7Nsz>iJa0> zkh94ITw=&24p26;3+_c__zFtHpJ2e!L3IF>y)+?k>d{h*ZkVqoL0)TE@sN#uP#H(E z2SpdN*vJOnP{u@Gi)Xt`h-_q%{^){9|8^CcPds|TgPs`zb_#y{^OKKW!Y4m-3E%%+ zx8Mifdu#Rhoo_#c*W9}Y@BiQ#eCpB5`hHEbC_Zum&pyAFJvG1c;j{SN51&_INfw8x zpIyu*ya!QqL%pszBUCT zbfD!HqKxC}#TzIzb3I+?<(&>C*tN-kg=2K?%>L_^`QXo;EjYpD(V@+zJX`Qt8B0(c zQ@n*NemCCe1xjR({>|5PR$#nEok{}*jp~w1{;LXN>8}Bk0L-S774D!$jKaJF9c&0*LCpj zg(RG>Vtakd0ZFQkI~YU79Ho3EnMNHWs!=n%;bxL)t(?KIwY-7;*;zb%$9>p0oXDI0 z^9!xvv4A-+Dh0O&=qn$WQmSvQZ1%tiny_Nmc-qc&>y+~+>yyC*SbAra1jGx^ok3WC z9#i|s0zFbiq3rc(^P!rhwlRv;J#yM+W1Mur-s<8aX7=pI(&D8&H|;%lpnuCjJFr#z z!mGHE@g`w8jqi7^jWIDEWnp`I9P>#Y)8pdFTHR`~M5In+N3M&iB4hojYa_h>3+s5~ z<{ln1OI^GQb_k9+O6vc~WOzNFJOZ~&Pvb3n z_hIj#?DN#fvoG(T0f$#+t$gejO_P)lI-{nW zh^Y_?I7+YUpS)bG>&nR1{e zdH=SvN6i!&QH=5yfYzN6#{IV`*y%|yWx~nb(Za3E-ZSULcYL*w5|9PBGBipQTcS_^^J{upioZ#CaGN6+FM{)5O2&x0g`H%&ztbs%|ziaOQavF z0Z$o1lnq8@aFPj1l^=ybx!1O+lNIQKX=>&Yc``V=Skx5J47}F&&#aUp2pzwzPILTn z^3aI(tAdVj$=wzb3T+^z<&#Ni`GNP|f^SHQj9e6k_UC`}PJG{cZ^rvSa2B8btYjDo zN;BzSvLO7`zy8&Hridbe3=?(Oins8_4#esDKYs3I{EfeTA71VH`gb3|{SVIL4}SY1 zKJq&kpaOo8#N5J$5ib})y5YrjSjQcC@(cI|SMhGhVRiwpsz;^gEk2I>NXr08TytuVX|v=k5?MAKDmp z>BC5~pLx3J6gG!PG$vh}Fk)?&{HpR{9$s0~mV8hcibmqsb0p(v8YS?BrpYj)14roak~;QS7<{7% z0&LzUrU%$}^DHhtf2J^zsMx@?ubgf#^XX<6LPv}-NC!%Z#wm0vj09g*bYm+IhudpO z_8DS&f5I8gRpPf1MX6uTU~od1fW8$sitgiznn^(BJbx4)%cqJ^2sGa@dnN2h%<`e% z8&@~6eD=#Yu!l~o9%kjOb!VzXQZTYmKh_Q4`Uy5(ie$Ka;R5FO9m4rj&tsUB=E3V9 zN^)mUWeeTE5&${tEff}+l^fdEu@#FqilTlgvsE*qzbzl4STLf=IZ{SKYjxH_< zhlmx4(b}VXu@0$h~^zcd( zxQe1c*@9M9*3yD3C#Ngn+k8T{|CcER7TA_LBx#fZ|ehKbaKz6xhi_2HG@vnaI zCH#6)ZvNI^drg%*AS*UMb{wy{e-C~$DK-?Q=9McF7)V%arkY|c7`3(4(!-b+w}+07 zDZTV`^3wdqub##CzV9Zy+C|=)|I3fwf^U7#Vf^P`IE^oTei5FGSlh7sQUAH&75GIh zDT@%hg%R#v0VfgKZSCy1D9r4xM`m|@wy`?K@BjOYD#VI~K&>mD2nT2x^{{w>5Wub* z34P+27>tfEPAk0>T=fGBp%ONtCq^*hWpve)gW!m0K_(+$(pO38ta3gakaP1Ql+j8=_Z@4JcJu zLjWgwLEcPn?4)=C1zb(TI&Cc9^9#J?fd1yR!z93lkVDISQXvY#8YQpCnWvw}+~6W+ zW=RRy;EoCWDCr6vo>va4DMEKtID{x`IOZ}JFP_1zhu(zQqqksq=V45~^NpO5%FQja zmaLG(;-!fiUxyqu&@%4lEN&c+N$vIoHjF>A(I~cMt!r`;MzJ(+Z4Pnq^yd;kZ*$vOX%xC?6)-(wuU!DTLQ;_fk~%;h1S;RM8X4v>F>_n- zQi_r!=-vk9Lm8e_Ce7WL(p8^Z$1gv24uASBH(}rGWM0#^@0-PKd*|{#nXOUrAoUZR zCn+s$uczd6ocj3k>MDMF`7)j!Z(}PfGcmjODjKEnj_mE@bw!G8suAm{o~?~_Y(9Ak z6K$`A6vn8h#H*GJp%ZX|U_~gc$<*fD!98icZWn7m%HA3J?=`avn4j946j|9^&oC2V zju2*H0byxzepe&uN%UP*o0RM%<7$S724 z%vrT4DuT4|xx5)_Jle!dFDF5^6~Q*D%w|_<#OPG4y1gsk_R2If9dC#i`c;`2Wl}0d z4Z1E0AGc^8dY2BO93(H_)Z|3oSiiBdkz}ip3he^Z9Lcaf!Y;#ded^p(0v)geNmzcU zy*AAbeaXYJY@IM(PFFu?#qC*P8L!B_aD9j!*i^EGfG(KQ?gtj^Sta@Ldvu@nES z488TxJ;Mx+i5gA@SGBwnoSbE%M&8X;Dk;K1TF}m$AsUxl6dOr`Gi^A^al*VTZKEp# zO*RfYMZphNhoLJhz_OSGttZB=GSfIP1Y>mU1!^Oz*mKprWg&RbMXpaOuVw^ZX7sWd zAKqx!r7N2%K~#cKbleo(`n?;qd?Ur?r~k%R@Xog%%$^yq*u3-Y2lD6lK5`*_F5=3S z;xQ;zlTwDfHBFNQw&7U!5NM0s57W>C(0Zm-2>x&W`q}*Gdw$^6l^VK8vH7W=xf7rH z_*H!HSI*@FFqNq6I@jUG6;|u70Nw=e9caDl>jh85k`r;gj2LoJ*0k&GouLpmdUox+ zv+M_tHyYbyLZ|C{hHLkk3LHUctq-xX!5EH2c#audd!;W?PPW&ygdY6Ch@}v27LFB^ zy8dImPGYhA_6Hv4BX>PIVg+M1GGH0A6I>LA+&ga}Yk0kvE=Ls}J>k-IBg9sjk}>b# z#@y*#66yw7Fw5r&06U2_96jYmqz&^mnP6c3cZQqB=2Is%8mv_Lgj@e1bj~hxj14SI zMr&_!b^?2k&0^)k6%B<@n1aKLWG01vIgHRTs`eOaCSwD%@Wtrn6<}O(AO>ZbTEbT^ zeHw?Sz6*P2rm{c~lAxLec^m?_IIyKSP6cwB=n*S4vPTBup~yZ+i1(qS!cIoM%|%>G zGUmd&-iG#V_o3N0r)(^GVTuLlMudtcs$x$HjEuiH;aG{wzwKQ}xLO{#d28g;h=Lz^ z&fN6o{Wl44o7=?`Li<6MuAWMQ?OF6ElfWLgYV3$*+#>wQ=6S%2AJNgiHfMut)Eb_? z4Q@`##@@VNM$xI2IVQ!fsnCu7pvdjcwi$U8kL9J|DrA%mHtHEq?^X8Q0 zEL=c3D2>T@grOn0;d$ZD^|??0sCEhiR;5wvD}fnS=z>niQ0PvC?Xd}N+d}C}s8wHq z569LTi=3VIhgvz|AOqWty$b{PM3gmmN8h0EvOoUvBL16iK8o*sZ>?B-`?nmy8(+5{ zzxly)`1GS!Z0fij^45?LLFbAH&DHq~JQk${orTU{f9u!J=S*VXlRPzD0hLOxua0}`NS0VDK6sQ}$MqZc~zq*FIUc0-O z=G%Vc2>#_?d8zcSB3RAJ#mA+bU=JZE4tKo{AEF8W`G2o)z!W1Tex7J?g`!Y< zf!WFjr3p#^E9A9x7To)kaxtfR?bRtgwZEN7RoW72-1petO5dUj5mQ=Y#8yK_;XGAN zQV>F_wAm>(0(TQ8UhBT9ewBq5Ik$jy~?rK1|&5CyhvH7kN$f``$Kt@tn8bVXtEt^MSy z@$<(5NS@PJ`o6q<5?{LTM|i`rw_ssbbl)e|5wgFme#^1&mljIb(k5vVq+qN z!;#Wvo6qn`3Jq;o&mQCCS(!YJ9MR5M<+6o8hn&TdBmj!^`Fq2eQ7Lf%h2eei^cpU# z4RPYpTUXb&v9!I73&}(I)an{u+1|qWq-3@^8${IoP8515 zp23W%%F@ccep7@_`V10M4HLB+CLCBheHs%hvAioDx13eN=;aQAu78C?2-?Ja#?REm zG}g8+L-rt2X0^kq%_GwX%l?^MHaM*2?+LEq$RW2rnMa~tvl4PndD%(Jz09D7`bd{F?qP+cG<%#>5NM*Zgz?0Hh6*3akX(eP5ntMuWaJXIa*gm zA#mIfa)4F1WEtf_3~1mS*mIj#ub`EScq^SdV+<+4F-9J`&3pB_zT)uF$$?P$ z!}T9f-q-|(P{r-ai^XG@ETF*o>lrGmYsoFUv1I}X9AOQ`yCP{TcL+YgtZ2DhFwQ2* zk&{szxNWe()#Wu#r714kS_rx$)2~~Fq0Ex+r!9b>Z*&)3fQ&srwc&t@Dfvr;pvE&K z)Zf?F$9Vq-&*G>5=2!8l&t9(HKX`BgKmMb);~)L~hwz&F<{<+L4*8}yy|XS<{ws@E zp{(;FcZ#&NllA3Q2RF;3pW>FZs={cGS1M(tkJ z!{Zh4z+-;3E8zG4!^P`9rEs)6eMnlT!X|invkP`OCgX9T>Eb&azI6yrjgdCrk?ZaC z!VbKx)|>BEbn68k{~Vk<>vcp*4INSmTi*s_x0Z#Y2#$q1YoKACYlG=Zu+^;fLGjjL zBJUbp+#2^|3XS1+sNqG2rg;x$WE}M{@ifrmlqnDf=f=%ncirzc?@GvBzu@5$>v1XV zX^W+I;rKi@E-&-pdk!wqdFd>YfAWae-JP^ zS=LwqW5`~g%V)lttn@E{oE9@I#p#u8C(qJ?@!2NMHZc|wMiKEY;GDvg|>@2>s~2EF-0 zgIb60jV1&)i?( zvBDQBTH@si{@t)JIW;xyKoX!#&BI>a?XU@$FCgms8+nsFzi3Rm{8dKGm1oamQ#MDA5@V(GsFNfp z?6R=3o4eTswQQ#>M6l7H@_w`l5JfHMKS1#P(#zcosQP4rq)m(gxd5q=g(J)(y2-yir@Oc zxm;F5Z$L(!UiR3Kx5f*9ejs9LuSZtezjSdM|Murz!81>;CU4C#95}RlSXTEUg@!yl zfB4&%>$Qx~`MvukWA`D2hA-8xotGb{))#K{Mt=6Io(KYWxlsrsV~0 zWn=->CQ(z6y=}0Vjq^w=>X+1NqjPSX7{``Cxjs@MsFHF+l8Ff9Va+ajlmsb85mzK`p=85}o zZ0O(ia`$pbl_&x< z77}EyUf#ls&peMS7ycOg_Ag;}c01L#UG~WEs9P4uDNeo}iv_lLX(XQ4hXV!?Y`7!s zi!WgPW1mCwzHi6e!~oN&?VO!B7THvx7CnCQeHjysJ_Nycl=0-?BTou=yqR_KK8rjJ zP3ar$D4Cz7?F^I(xg1I=Yo1_2`>qx*Jc^kq%Hvg}XR#`a720}OUtQWI7kRa=URuKb zqel=ft)V~t`lQh8FKbq!vz+o)SHNqu%mxn3Pv9rsc?=KSzK`doto516KGWBToA*rN zUHyYtPXy`o`W8N!l=~G@PzD7CaiD0bzeC3uCTYY;QKIc$r1x!Oln>KfyLbli#Y+$r z5X-y{zKu@VbI^$}AtjpekZzHHoFpWay(neh(qsbv{WA**cPDZ}h+VdRn5L|okh zmezo|8D0|57-!$g?bJzD-VOVAK3C4by1hibaWEva7fwErt(HT zX;L~G6f9Dau+5#8Ncr7(gbTrx4;OdWRbGP=G!(%^05phkJ#Z_*350OkWAt+pcAOt` z=)hDC&DvORweM9dVrZ)Jl@*uo%+B=j?cYq{Wc%@CSa4s3)Bj&U0-KJ&?| zcr<;!>-&%4Tfg(r*A#|EO3hb3znoJ$>zs5K!*wqcEIpmJ`Mc4==YQz0+iZWMOKSVV z?_ImDLL*+97r(rwmSj<43fwHrME1_Yr*5r!VzI1R4-cy>x41(=SHZNi$PG-Pv+%iv zScgtk$P7Qrp>E4r14PuIHsnNf3ZIA(b(>Xvj*3ZoP3eP!NtCe&jgnfJ2KlTog)sxVxh$OqO~O(;9KlFMM*+|VyX}-RO^~oFTkrIzZB@N1Q`W-5HiD;F z(ZGaI5oXEE7+a$&bnno82a>?Gl=?lcs;I75KN3Eo#9x{Xg_cU#h2Wp=x%2oE%bY}o zCx@v;)azQyjj)7sSXsY<=a;{lEbo&^h#cfi*C9;hELfBsYob4uguSVpaEA73g~U7Z z#@2pf(ES1W>HZ+m$6m75=WvRKEx(}{w6n0$`>H^Bg4joPX)j)W2&*E{)NqQs?&&x%KCIngcH7S+e>sFD_x}%-GtA;$<`HmeVTVvTp+S+%%uV%cM0SZzX)LhvN%#=~L!qC0WT| zTG_<2>zi5!pnz2T42;|KyP-2>vUjS@M%f9CDF#rcoUHiJ{+xb)n)l(9_xHyh?wUS=vI#6Q&kE3ZamI73BxT`uKaX(l ztqA*Pl7g1j2`PBAkC{${rTresSP=5*uua*YMD#+=tl@=9%1k`{O!CkymFN}PaX^pP zE}}j4NrZ*_5R#WIjuM|+ej+^>Wt~O&FM?a|)CO4*$mN>eX)j^8xq*|XNg8Yz*Nc}k z^0=a-AvW_yi@Kyt*?j<w_&vZfd z)cM2!o0}tSYz%ksP&Fnw!(QBlMiBryFiNdf>Cv) zsg(_x$ZD~$ps%&3KNpiybJ%%H?!0vlPdvNa(ZrdMbkRa9FMr?l_JjD-@4HPEh5z9v z@5ZM-dj-Go!E;GD+0uSf`=9yjH9Yg|8s7P~1$@tU9jmJS?)M(WJJS9C?O&Y0sgs-5 zd_WFABg^`D*s_q~U?m9zS_fPCN_FtguMhm%IXwD_tN898IEuHwdjU7PW@dZ%!5_UD zKlcw$6u1gg33%0OM-iSoVW=~+{a3F*aW`OBYSJlA*JFRMgzx^zV|qAe_xjd9a~Lmu zxs0bM^r+4|$vE2CXy2WF6~;SVl0~bY0$0G+UKxwwgR6!YYn6dbN<}9GAt+NfZ{AM$ zsMW?d!f?!K7z2B1U@^Y75xMs86y4b?%bpmEKm^nbt8P>K6s^v-62d$49E*&A7-|O7 zfh&2G>AmsTlmoBALF!fpBgKNwOCeoBH_69n@7V8B1qtM2G0#emTN5fU%e?ToeClK> zONjsmvkk7ESk*mds&qu`6bK?v%|^F?Flbg#$~~TY?s!BeI~w2^wZXRF3*)Y!9%b(8 zCt)lsVk>8w>Xi&vvSvoT9L5qT9o3q~Qzdwk6xGjrGDxW*1v+Qo%tkgcw^Pi1FYhCw zk&WYa-qanF05%#?s?c@x2CLY+cbs_9D7~MIJi+aaVSr_UKMA!IYDQs|Ioym>4;R7I z<6_HjEc8>de&xM1XU<^rH$Dvf_zz-Yey%u9(tnf!c)%Zew+Dyyk;5ZMuoSuxcyEyK zL;jt;EG*PDywQ~m>G=TBUOsX${iX1j7S~qB`H;$p+RIA)ymIz=ET8)n_E4m9K4~TD zT#I)m?;(Om7Quz67!XjAxr}JT&C5x^o5O*_we>-{fdO15=PSZ>g2TfT+newpwaW#2puB;796o{^M!`Rr3LFSBJB-IuB9-M9+L7$_p*XRzbQ;D zt&e2PEXqzVk1?)Y16E7oAK9{_v??Yg=i(Pr9pv6h>!sPuF`{|ac@K2{KOYE1h{>se zX%ls%l+$Oiwz!qNqND(DdPBvVxC_ri#q2A=-7`30qD)sS@u^dXL3@|W3$(k)B6+x0vJ!| zc3EIlqR)_ zjkX%yr3;He+sbf^XgS$fnO#{@G6}+5P_x9265_pps!+gTjH9MPbi5!HcmY`3O#I?b zm>7O==qQj~@fila20qMD-uDDI_{GL}B+8!%Gj-}tB`heLuc0AF9#&m%P^G}~5)c&E zV`j8Zvd=drMli^Sqj};PS;6vbK9a@f$dM`OUcb$U zMUtRY_6`&SRLeWtDO*y*M*#E_oof2MEU;3VVcG{0au`gpk`|?-G*awQyl;iZ-_Pj* zh{|QaA^Te*7~S z?VZP-A9@d(+3B1Lc+9xHT~IlDQK-+&s3tGWWDK3s5(~Y``*1v5gs$rh%Khm6Wk4lsew&27CMhu(ZYRAY;;!C&^4!dD zxEZf?S=K&F%2-y|IPXCUsh*r*fi&WzHRnWQIT=Fg5oyt+^b#z3azB-!4Q%;i91hWqr~ypIyn{c%_=1^F z?U@ck7gPO?pG%n^s(XEH-Hp@cu?BY3b)${BkyQ;UZ|CvTxEk+l2}bAmoxZxzVf$pF zE8EpPGb@q}F)oXg*5j0n?d|P6>66)&S1h_s6O>^xMXN|b8*QQt8Fc<_*i8`-ESpVm zm=N5AcHtE&;m~0XDrGt9BrLU+|@Kdq3`M zkr)^P$Ewp|$1}6~d)$sO)3rDP21)#&wIOt%ZgbIT2qIy-iV zzK$VS?T|J-5pLZWoj}<}pPkE55usz!CTemS9bF^(F*P}f&8;o&L*#@3+yh7ZRM^i$ z3L18zD64cu1h-f%;Sf87TDBJ23LgW9nsnSMdC9>%c%5a8d0a*4n6vZM50u5)B%3(XY4u)9>>M^m5 zEhSmbd9U&zmvodsWSZU&<2qZCjy|%2Vc|N(NYldOR^-o^Ju}*ah7d7n)`2p3Fx z5y1OuVo8_~i=PGlH)q_+8{FHHhB+Jl+w!up)gt^+_b#7&78joUKvI@2V{(qd!N+Ah zGT+g>GvM~h`0Ffpf(HSB_kNaVW2{~IGFBJvPqcq;;&aKEwUJcIaon*!Av_WWZvB~> zTwEJrWow-IRnDSH!aI4S2E{W)KqG;^P0~wCbDX>s*{R2?&ZB<5Xb$q8qfq4YP>irN zuo0h$HBJD$@cdI4KmHP?wmF%AOAw*LxhQG%@fobbAhZIWcS}Z%KKHfH@6m4#b<5AQtI*~ndUhv= zA7y;%aXV@KiDxEzXXySm%BDAp{kxLjHNyGR>sZ}rD$omk1pJhE;DPB!sAzO~8mf0I z_T}E!=gK0C4|@9Bt>0heK+Va#7lrma5q%)}weXwhQg#>ISY6qK-@;%rYpD2(7y|0O zi#vapzwM4ORV>6QN?z2nca{(M(dNv z268S!-dB|FJ@%EW)jJO+4-I)-o_cm!-wS?h?t0Vf_V2j2zCObHKX?wm_lFm)f6)-L z@i0(E6e?wgu4hRR5=kT&jDiZ&rQSXtNJa-I-g?_K{;z-L76(&YnPTWN>;<7sM+Xc3=tj+%zEsv)-SSX%p{<-o&@WM-%P7Y zW+;0s>8ysCWF6eQe;@Yl+nc-{+t^y&#LD^0808JK$p#)LKw)AnNv6rVK2B0S36FHP z2YGHnQ@kjn>=mI<mP+LC#yWEcUOq*$YxE^I*?R%by5; zsHPY=Jf;NxLUlL1jtQ<4iB`UOE#lGXspO&S;k###&{|FT9j$spAN#Jr3r0uf6$YfxZ~rfLVdsv@yWjSHO=i2}4Q0PxQVd9; zA^B)Kt>xj?koN$YA%s2@fkYY3OmV6`C}o@xJNUU%4x)_PlYZIz8c>z5>#XaWqB9{o z@<%O`1PAlj;ZU9Lf;)0w#R4%%I&SL963w7J^uAxdzq?=7gQ}EQw5#92WRj`?-~`2F z>u5w1l15Nh=zt8=)>J+~7K)Gxm7qWn<$;7}5`ZW^agZ2cdDb`%DsP%_B!`a)*9sNK zH53mWAk@gc8$$asLEDoV6od#ivZ{@>q<}p2+)@rTlk0u&xfOr!xu*(TGT3Y));Gqu z-u2;+UchgB=v+?K%ni924o)~Wjgt_3cdzjuVUR*YzR9sPv3J_g~NVb1!FlKN>D8Be$2rP z4zX&V*HmUyVF!FC^iY-Y-nz$_rPNCVKqfnRNd~H%6cw3Mu2>F{_<>L2)s&NE9!mf2ZM%ueR)XC$!FCTGgNyOAu~+r!PoG*^=%vSn*1dv07GQ3SDkr!8S) zEeq+ydq(4t?wQGToF;ypn*|zVHgR zl7Q4w3fOGr?&nNOlvJ7&wGh(xH2(Y2=%n(j>|DSUtl$`BXm zy>e1%=93iiLb}-IFbUzbcP8=J)fFtAIf>QtPorJGfL^Jl;uPS zaqQM%RDslq5Aa@76Xwl}L+P;BF8vWEr*2LCJd7b7TA73d+5N4<981Z;OMQl z;MN46es9`nTdP1e_+*6$Ro1h7jonhETe8QBTJ4wTnS_lSSDyKQ@C^Yqqb&CeO^wR? z#iUy1fQ*K8fcAXq*S>uAOl;Ti%8OTUVQHKd8iztz2=-Qgqd1;!nL)_&2+u2JhU;n~ z)KeG?2c$lcYeR7Dy73nJ8ZwO~+D~h4YHBhoqLdvrM{em@+1%V>?{?6#AsGKL zo)kLo8;|uS8J%q}8)6cEo|NE<_ z@XDzT*LbLr&W)sWJE&suJ?}kQm7#F6XP;Yh@07N^g(7wq5q)1=y1ud{@0nogh(avq z<CYNLc>uD*J$ zQc?&D(O_$$^}~gJW!N|mN^oA=HWsBO6ap*sMBC(8e-qTDkG2Sv=|ndxdS4ptdXj}a(jNY+*DPcak0EVmW2xqJ0dBmyFl*`5}|Z>lFsY+eG2s zP0vkwG-XB;0aOVSblMRsZsv??2v(ZcDOu)6+h=g?{HJhm@E#0ir}I3F$OA?5+iUZ_ zs2(dL)F(0|dB(Eu(o zi(56INT{p8N}g*-lmmspu&lXI{f5I&Cw%&tB%^X z95%bQwp9`W_z4egeT2|ClcpFOck+t5zrw$xW5ZU|_?YlT^3GTRtKF0=k!#|P;djN6 z?&TG=u#>H2`a_S2rfzL*0xG*T*HK`*vlVr$JE;v*mbUYnuaN=a*k3N&S84!%MhiD9 zf|>)aSRAEe5^pX5mweVvlPH?7(>ACK#oUb(QcO)xK@J%zwG^VH3eK)@36AMAAh}Gf zo!a7Ya*+xm!EJcg*!LKiIHSZYbC_As#>=m#lHx+22lD=za{a|0xeGt@|9Tu7>tZ6Y z{=EOU&)}1fUdEsL<|BCQ%Zpi|Q9;M`HX87m29>*-{ylxZ{hJT(2sit!4_@dF+X;g# zOt}LMMB$+@s~cUn-7%d*&VsL4u2kiXlo?88ZLsUk%?&Q4YC=qa14kzCuJ1ZI1xA3lVC^H8t~EU){vBc$nA8nZ%)!bO>G$citU zK~1R>*q7fv)LoQ5&Aj6J=EyVPek&mSCe=>J6qTEp8DQ@%v$%HhqSsLo9kn#2&W+o{ zEqVyn(DJjYUp1kH&A`5c2k_vrTXDG zWolcUTVWw1KIlVasgk}9C4^|0toiFn(^?}S7w}*mT^wW%%AL$8S_3Y7VdNVE+IfI0+?VRcq@w|n&6Nj#+F@L z=uNWrhnyL(95yI$&E6U2w@voeuzHiL4dsx(e$L6ohcJg6VwMwFjHAi2RDyJ&eu960 zRFt@J8Dj`-$q*-7A%e%gm|@?#Lj$Xe(ZrITI3op^ZiI4XTkDu}Y`3tr@)#D+&0^1y zcVcpOzU<40oF;o*)Y}|h23BseWK`^VM6;(!>FIM)gnn74I$69ZK3VOmKL4c@>-aMAxD~#WAl3l1-Ctc;)0tT>i)>FuO8R`K4sB<6@e^8>oaQ zR9|%I)Bv=LJVPH_JBJ_NT298?J(S0p6J*r1&Mk2F36d6(8w$2Y8E1;8Mji*J?8LH{ zMxRHe?RDopb>z0jp|q8)5F==YivDe>@2lzi<<#yNSI=I-SD)X&b~^>xh8EF*fWxm2 zdv`_&x!LWUAR~6Uth`b-N7L&u+TV%~WQAss6#uEbe}-sCK2TEyW~OW0-!)AL;Jis* z#%Xu9A6*%t75R?m*TKWWcz_gF?|dj>sS`O>b9962&~|O73jm;tpSzdgl2IZ~{2Z1^ zChtt89L4UMFu24@mk1q2&bRH1r`(#quXxiPD@u+GSXh}Ce4^8cS;6og1W^iPVj4H0 zurg9!V@kOTM9hdd)42h3IxB^uHBE4f&8(~7b(IMwcPYBMbhk5<+mzMC^&n+6*9o!%bj4d*;HO5ANDID%bUY7eG zn8TO9umtDp(N^wz@Wvh!%8C{o5(eD(;%V0(!c1r9didTSKYGLcGcP>8rVR*uHC*Y{ z8m5bdN#dL2eR)+c%_B4UTpGnmUqA`9O@R>k+`Gz>A+^T(E-rk`ThKC(&P( zXRZlwCNjRs^{^Gq6B(=DbuE}OAh<zrqFBf+Ad&orWh2(+K2r8K#8Rt_n}V-aJ@>^J-iZtlyYu?k{@s}$uB(|GBq zAzDkarzXR-E$c03++s{9hU218W(#^i5$bz^v&T`J5*j8REUHV+-5F(}T|85wtiUNT zhQrai-N9{(nApPF(#Mmr>;(26d_Ol z-W1v+lt0;X1KD0v5U0oVsXQv~F~7Q* zQ#g-BCQ#+8W#y2=&RSkSx{hi9DCu%^TCDo?dog)9{%H9GzG><}@-|Ior6y;F5M~Fz z5M1SA_>i{MAjQ1LWsH=EJNY&9MKOzt7t+xTo)o@CH^=!CqY$&?CG71=rUDe|6r4Z!2$evH{l@f~%i-VcXWQ z5Tl}wSZPk_dtZcn1hGUGVWbI7Jy9cmD7k zzT=zhOc?Um{KX%+6aVtxoj@I8g4|Z?CPe11(aHA;7qpCotK4?;H2%_GyrWV+NE!L% zUp-gBQ*hEGg`mPh3F#|k3mh6e|Li&*dHv4x(R9828}{QPzk4|;C)*AN0S68Z@MnMW zR$T9*Lp9I5yvYl(UOv~mXnzcOVuWE%%`~{@p}FLlS-7DxL)RBRvQ*}lQ@YaCc;a!L zOW_M!a8%E$dTD;-kfw01)_<&tS!^RhcS2=zYk)55#xHPBtaWA`{CxeeHl?lT7?f{A z34~O`XSE0elXS)K1X`B=F0kC8G{)kop`SZUhDV4v&Y>AP0AQCu%5ydV6B5JVnC1 zsE?FB^uS$vaP7neh$l_^$wW;ZT!8c7Si26hx!rOz!20LM7~O9YhHt+6cHA+L8# z8|L$3=tTCdP-y-rv}}O3U<2VNt$2OVsy8&GdNwbg#Kd3@w}u5=8m{4TQm!Iz@)jkf zC@iAX#A0Qq-(Ud+PMMK3&5rM9Jn=+dW|}Oc2`+o5CUAJ~G!7iQDGBWh=qH2R;+2b7 zy>cpf1g0=d0&AO;ol$R)yhQzy3?Y_7FX=q6A)P=@VQ+C%JUDq?$64_%irF}im4c#Z zugsXm(XuC@Kq^N8MW1p!W{*c%3Oy$MO&)U*u1)c4+nwj`$QdhAw^)b00H#QVg5)K{ zrpZJ;2(QWa$y4+S7B61J^5wnheuB~97zWe((4U$^Z(=&{pOVjDa)62HiS#Tfh!efM zr>d6({(eqHjH1jW1S5r}N%zYpe+dsmZnJbFmShP;=V$`^;B`}s8u_f5vuAMbi=V^h zGhfA?bbm7RbVx0)QGykP9FdnV@1K#B-HuK$$l-;&n#sjl#7waHovSb7k=eU(X!c+Z zu>)m^%;AQugKsfJC|wPOZ|irrT8oh;sz5BpOv$JiqR<_FRqBzz4EEaOc+W9Er^1qW zgYIYaCB^7obr!{7|P?SJM8&9?(!$Oywka7i^(Nf_} zU|cpJ2Y5NN&@?;JVW&D*-Yax6Xr{!xhbAdBgTX}3c1bjEb3GZ5hTEAwX{Y%Qg{-cx zZL8c1#99!C7r@QK;(KKg5RQKZi!|{3-Ml(Mfkz>%#GjNci2~HstXwU-U!j7H!qm~c zo#pKN+S=NV`b2*63XoTFw6$pCi|8tF7Jtw*-m~Li;p&C*(7+*QO)Vf1gV+5dEZtZ~ z4GR^)LMH?)NXS?)mLEcu>?$~fENxLXv~Bc~m3Mk-lIwsn7j#fV-L%2dO}i?gN}3Zw zytP;n($S$pH@FfZ9=f(_VM>&vfA^~|JPfylyXk{D*Jb;Ys;Vzj_u|t_%$>iqoOO!-!z_dBA})+CBU1+I1Bg zO27QK|NcGr(qqeb{;7h%x86R5x4nD+4a3czOJ$?B12>P?zrOF!9nGIV>2>wO5TF0( zlGa~N*>-b$!^#`cRutLgD+{ALbiuL6ASsf*h42DVZ8Rxw@TcIdJ zWQnJ|XM@WpaNnE032(YQiT9s<5{v2GmM5VI?qgMKTDG*xz~xziOVl|R_(cVf(1kLG z^GWEwV_^!9+}y|AH;=Kov5dv#v$%9(h^s4OY-HUdG2q;)Ra z2wXA!)uaIsTQ4{jo@Gc2s2Hxzm8ZGYKy|)=hMc&Xr-xD+a!QA*c*k56m%)2>7r$kE@f*>>n@*}NC#@B z=lT4ZT@nJ&x?5YPRPSSz)vPaFp25Tc*(psXetMbJ>hAUXCR0Xq6bR`J zl(O$o?z)PP$b}sqW$Szf`aZn> zLuc`c&t5U*sWmL|i!OAOC%H&z_@4J1#kYOa&dgiC`N0c#^wCAve@2$76f?f)mcM}^ z3jv>dbP4bIuEVLV2D@FP)V$+e`}5~(x#%#>5B-Xyptin6{MWy(Uf9OJ_?su)e7T2T zbAy557Cec>XMW=vzU9vxyzX1%rTN!?ALg&;~rFWfruo)Ty}*5Gv$2+|tSuZ0OI zBEqj)Fz9|GdFG?yvoH;>SP1b|WQh@#Xxqg@wvcGMN}>f?v1Ul=|Lv`zW;4`5M-ScW zUpgLsFBV>nuDiKnhIUi`Xln}3nvi?A%N7n}4vFS9#S%stv5Wx=Tur^uXRdBFd_-q~ z;(Coo*?mcsEwvAlpmy-?y;wPW%|hQe>k_(3iZDTD(y>Ao*Y8*}y8Lh30h+L`Qv!U-H+g=`TcYRNH*;D#w84jvRL)l=-kUGi6={P zmsl9M?2!q)={fKwY|65g6(DdZ)F>%D$%C;uN=na|J{w61N=Ak;-QP|M)j=Gayaf|S z8eBSm9v@7?GFTAJbKe%9hHcm{VK8lMD?E#eDL{qU3gDR2{N8(bFW&pcS=@VUCEZ=b znRA;sd1j2$S4LRgND5aH(1&f=+tRYqAK0_hBu`(-3(#gJoDX-TJujrV5WIVZ@01L1 zt%jLRCQr{~ZyKPq&wKYG%-)Bkl`UL6e+nBLYvtfm2`K|QYbL_>$Z(Q`96nRR%UU@= zQ-T3=e4Qvp(WHTl8?EDiwV)BS2KIEy9X?}$0=cq0PMPg`k%gHa_nE`s(!AOpTgKsW z@=dL$x7Upps$i7EpL)r=m*A9ew3md@Cau#fP*Y<`fh;Ma%l?;9!X<34VJdkArzRry z(Agc66EHbi1g}=Z%f>ltT${s>RMcN|+pZZt{V$^qqAb%?g(lwP@e-sjc9BMr}DfGYfm{Wr2`x-?#4fGIyaj zlip26*vK2bGa7Nu>&z!h9PN0tfj|1hlX&t%#0GgI5tOeL+!7jWE3DYVY^Qgb&Q2td z2cB{(p`}m}ts>?ARgv#xO$1xZo)>8G^t+ej%zobXFqzAe5li-#IbxmvtSoP2gI%S6 zb?V)zOx5@iDh0q9$eGUvKP?@KO{JzeRdfF3_Ty@pmjjOSb%CA2d?(NBg5Ubl^`Iah z#e(h#H3^T&Io^9!8`~TT8sXCRL?$cm!RZ+`?|$5J^~=Q~*^B3`ubN~v4UH&7XB#PA0Cb^b;gF^`E zdZ;4C8tto$(cW8KAK~x)lc({wfBH3*QbXT=;)jpp8{T>_DK_Wu^z$p4>bLYYxH{_v zGCkeHwq!hd)D5VAkX^=rR) zF7Kb=#vG_4{%c;8rupapmoxeNnKIu{Ch{j~N-QLz@QQn$&ZPPJ?_I#u-0q5A@zPA= z#8);{*e=4W5i0s$ycnupcw(48QP)+zts6dhJb=TxXj2_JmYEpccxsWhCbse&iUV3Y zIQWISTyXseT`Y4-nB1nY8cGemb6;JSZndxZTWiQ`%3-JkOs$_g)99HlaF+=C&Ltg~ zNXDJxH-6-i$KXcRuyHGypu`)~!uv`*!IeHnuCwKdh>p>!#m-wmJM%Dicp4ODzj>{A zMeD3NLRaC!%(BQ{o&;8;Sa=uu8erMlv?Vq4*w`oMrg89=L%8(V6WACo=MDB_UKGdX zkKr8;zZLtZr?c=*XN=_ikc}9T+1w)$E0W=E%s`;u*=vbHR0oC5Qf4Zuu$Of=^3c!b z?(E5v)Rxq=JjxQLmtMY<9wmAIyAQq&kDfY-OU;NCnh3b8T^3f>W~Hiyv%K=0d&LH< z4A9?$d*<-&hmPVqUbl|9sq=W@#T7jD(l$j5hVt`DhIvNLo^EzWOx7Gxcvv~cG2dX4OpkegNc`-dE2z9IkcPYZ6y7`;c|?w0}C-Flqa$O)m34g14luf z2r+bMf7PpMaMABP?G-%vqJ1+Zdc)e$`E<&UDMCRz;!T0RZrcU|bd|#$-?(oPtqGjP{8TRira zYsoV+TPZbk(eH0~+kvdu++@(>Ql3(1+4ZjdM+f-h4=*ZQcg++CMH>jrMQ#pm@p`gRh>na)6nXizv#fqo zVcI>@F?ES9D!o3yh_SbDA!^gGn%vJFyxe{eV<0P})EQYAvCWLZ2Fncw1(t<&>M#Oa zXQI1Vw;ep)l7TSby(ih$gOq`5ufU6hshq-7`^juMXqPL%NPF_W^}&FpDq#h;QkJ|k zM<3dc&E-{WCySu$XRwZnj&9JGVFShS?-sY-EoXR45;-vQqZQjLXJ$K4-?x+ws}lTEz;% zQ(JM4e)%u%h8S?Vh6|bhGV=`#_e+kz;ADZK_{IEbT7H+jNyF`=lZ?v-{b4yrsH9RJ zGXBS$(Trp~@`5E@h@#K(VYF0p9=Fat9AT7LE)iP6NdQ=x8MT%*uViAdwG+!fJ4IDb zcZ0%FNoOdLCNxG0uY6|pG-lS;aA>eU3Dc9gPnkwK@&;DIbN}g3)L3vgv<0`ba+l|? zY~UxQB`ci0)-uD9(nBH}<<=L)hm>T}n)CNwDc2@GIJ}yWZxO|P+Q2gS1zk56pMD9y z{Glgs9{VvI>`jj*a@o8mE+1UW`_^J*r!sPFNRmJ5!8S<25lonzLbvA`4qrnp zI|aw^ghrDhGq)$n2L}#jx;EM#WAVyTJ|tLiEtb7_m2qfMe*W=ZwKDJ9eq8oVG0ovlz2 z8EHEzVh|iIUERk2{7;|34}9m%)tNJL(P5bHJa7Q-eCv(V4`1)Pd}SN|+rNAnr%r9^ z7{L<`PWv0Q|K&{A3l^>JWDviZG_W4N!@_MYZgeN5iTXN+J-Dy^H>Pn zVlCC$jTkEiq_C7V7hB6%7&(iW_G9Nohw4tSr>5aF=uC=vy-6%=Y0b&vWo@?65nwJQ z0PmrWFQz{URf-bBqmO?3^X2bh}d;rywynyDx<@jH6p zww%6s7=&?_y&Ao?C_*DXt(~gOr(Fc5$MkUQ!WLu#^$I(`^4_!VeS3P6b(l3Ui^mo|i@8p@-92Q}H)D~ri4xAL+D&)Io z(-&O0OI~iJU&YCjlC(ICN)C^{UB z1tff4QJa&Rkd;0Dj!Oh|Xf7LuRuQ(ns;~^&R!}XXbd?z~OP^nF_q0h&(iTEObx2 zh@=NMF+afSwA z*D9*ip;giS4qe91`1k?4tBppJ0jXTCKgeD{N(exk?Kf#}$Y@y6T%o&^ zIZ>4v!12>y18~emYN{Vufbt7)^2&Vwcie<`z3uwK z@Yi}#NZ9ZH;br{RZ=bim2oh@lqm4bnEo$C>B+8Fe8vQRu53Ms|CNb<=Z=1$F_s!tI zfdQtI2Wgu3*wDE&RNKjy)^RE+7tcSnu7a&mF{SMgqMyG-gR3ZDvNKy`AL$v<-KI;F zBC0X?EBLvJoifb8f)hCPyHkYnBcGW}7q!56XFr5iNLTgj21I*S_1TRnqHZXnQg(E1 zrTJ*#jtEwN^!3CpXktw*WiEomjvKoXw2nfQgMHUd_puy6pmeijn zv`^(o77d@ummgftzo>852p68l+by)8tTQvx($M zm`e4~mRgdx`svvq2|@jF$-0&K2#4WkdK6J6Qj*T(i70&y(O5oNMC${893J=i9^n%i zypkaD>*qd>|Ge=`QmmSihPW*UDYiUD5%T?i(6r4_@pb>c{rHa8KZx6hkK*NXSMl;< zz~${EkS9TBVYbM%PV4qbGh{uIGC4oH7Y{#7 zp1XtSC%hdkp2p(U%W16FKq<;1rS$HX{)fR#k}>*Oh$J|L8OnA>NfA&EAteEukg6%l zNSlPaX({k*Ii+_}ylCG{ z-an(s07!Xa@0ZXR<}s?|MHl`q^xvd};z5bA1Z1VZq_*ay7U}yW$|pe}t)GB|TFK|p z$H6#(*^oR3gGtOLSk3k)FrVgnZZL)E1izW-Wbl}t%%M_&j=PweM3_qQ5G9|OOopR= ziT{jEf=%|&(4q|Nohj>_7OI7%(f3i=f0Xy>#PT;MR!H?Em|uJ81$^}LFW`xbn^>CM zi}eXoW+o}+T*3SF8K!@>366B`Q!IRR%DLYI|lmJJoD=Q`-C91`9&#dFQr`K!3&2?t@ z4$J0A)0bVlP_|cnLkLdDF9)p!?)na-Wd+r*ZEKzZ9qnehA5~fEUPkDc!NsaV#V=9r zYwJsNIN;kZSXYWEN8`sq?`wUoZPmv+gs*LDMWEb-Us!ND$gbC}uySyfFpIiRHN&sH zdd6ss*oF!X{n|t9plG^Do9ihC*bE-dOG71CScg|S8IDRgrLAa0OzQEtb4&d*{-bvrunMj2nWT9=_yRjPT}g~Pom_&l3=8O`ME>Mb968nb&J(E zN420B9L7yK4Ze}EwWbI-Wgktf_FiU7F85c-nTyBHo0%hO7nWKGg3WKA2bsBw7?4k*eb;a*l8ldwMADrbVNtPHV6 ziqG11P7%AZG{o}ib`q%4^VNuJS0fgeDS5yaj_iE~@A=MqaK~*e{`Y@#EqjF2s?4wz z@E82%esJn)2LQ&EsDv=6fQ70qDmh5wx@GTP+_kU=H}6S;?bWZ~^s^UnWo z7*K||WKka{-oLoMf~zY_2_{#txxB0?*=@fJN1X&)LB;a|O^%Q^d2@JKR{UDFoOftO zMQ@!^4lw!>44n`he2o{B?`>Aak}Q*MZlu4%1f0!;LaRv$IhQ;){jimF_8uug8%Z%) zXC9NZkbY7kdZA<#B*kbd;s11+5Bf|sN%@%?WI9FXs!S#L%_dk)PxX=_lwdhKi^-V; z*QEF~6d6y74Jkl5k-#|bN20YeN;rAt@_D>+_6lA+a~>}yyj+`{$L8b$MuXW@ellnN zh&;A7D}@{y$SI>m$&U^O5I9x}Oqa)?`t6^}?C!?jEwpK8bxMCjuzK?T8A=&GSrP)Y zW#1=x=vqnB%`a2k%l|*d{=3<>B)b#Cez}ji{yy)@y{fLRwm>(!8)%pj2u@%Gj@5|b zNMvw=WauA7=o9E8=sV~yDJX>~O@J{mGn~;3fDwQpOvASC^1kZTv-iF0kK2p6GMCGJ zZh<^i_nmY0**ne3<=4uUM>9JBn-aokO!IIw3wWXmkMaAVh$5F01#2kiQ_Aj&6JXqS zN&eMt7N+WYigdGPFty`o@m80}^@9|jg_wA$7CqRLEXhE4!;8X{1Axe-Wf&pgbA&HwGc z{h<7P?Mr+3&NnXOZuacmxH`r4u-AqK*`p_Oy#LV|KK}R&fBA!Fr5tluc;LW6y-oS}67UopUMDsR3z~^oE>?+w2I5+7YxH z*II(nu{0@J5uXTX(&-Wm7vuN_llFV$SqcJO;gBwXy|zeJFSG5yJr=Gs51EG#Lgr!< zjqQ;!3}YzDpaL_c$nX$ZL%V*pZxsLm_rvEnks;nYXu>apoI;&1!JFdrvvDjG5O@O6 z!tJ7$kE-~Z0cxd|Lzr6bY-3JSVGZcsBO#~IFF8yi&cWA3J@96*#Yu)a^Y8n&uVQt4gw@uaJ4a-Vp9s-bk!1spD|N;pq(vahhveg8^iy#SH6Uu#eIB~ zjhTn1nJNEB^I6d@bad^-2xlan0v$p+2yJGgf9Hnw*r_|oqk*KqLY0B1)hWe-f9mh(`JvX*GwisaDDTG>nsCwRGG3UCYWEf)=ZH8l!S ztEZ>XgeLs?xj6o8O$g-5cWfZ*R+o;mQL>@OG{v%X&If&^RQ3)rJWCo>g{Z)wSA z8*vWg(?SPaOo0!*P1#7{=;=7IL7M;ax{SG>QdDAv#i;69vplYI=5bsuJsVGFIXXMr znqWTJMV}2ObW>ok&$&cp`jx@X&Z9A$Qbyat&XvCi+JP`Ygloc3867Ii$}83k9K(5u z(2TgMV6ARe57b&;R$mya532jBHaSdUpU3%mu^8WVz z`c91uA1m**J`=)p0WA*TQkYr-wZ;O_q;#ly^2)%v=xMKBlN6c@%h>=jDw$D%)pcNE zI?I;hWIV1ZEuj{<1IHOO!kDf7@Y3squ+B0D0wVir?yCw(Y8FnP*POuD->MN8bv`QM zHX%||R>OE`aF4bxC%#i?PZiq~Gy;!?!TO^i;s&fxBh*oU-Kemy2?h2`s8J)#z{Zgp zg(}Wh5zf)o$0s0dm79j}KD$FYRe1`Cj@2QPqP{cPuM&>gs zJCHDib$3XrqlE9*vdf;rs^IST>3xz*H@Gv5m zr9tQ>S(8!r>h4~@ghxMo9lmkA_A#CA;`*K2=(7W3DIxuOIyn{PE9u_ijZ`*cgHuy; zl&PFYll3Z^=k}O4ob~lPe`ZatymLQYJtVOJDKN~!jF`@p&k-%YE8`#Un)s0)Sj-?dz7&mY4 z;Mf1w9)6soBuiQa#8K!8e`wGuAeI@&WVqs#R)1%M;?9*T`09;4ytJEe@a!o*dUS|` zvpG(9{|S5P$sv`PqFxQh8t=*1k83fO z?xPQpvci|HT*CHCFJinq!trO%u$--GD@~CBPE5`Mb)<-3h1?ht4yOdQc71F5EM=C~62UQxYu~*OiVS}gcKN1x; z>GM)-AyuP=_cn3VC#~uTN@}L^iB!*$DP+ZK$>Yez%YvQ7Tx}sc40x|pNe48v;UWN3 z*1p16_tI!4xeMebwNZ${oM_>`i(jgjIDb%GFScvCMv6<}zo(#BampE|?QQZoTCBrl ze5ob+MgEb}LdBJ5&(2Mb7$%4DMmf+JQ-R;wheq})gK&8j8|?HTO}p#`HYyKr$3t?3 z5uqXJJK(LtYrqp+X;p~VySNa5Wtsq{ACk63F{(ssq|l_UHY?-n6`hk&?>Bj$Qlqb! zF78Xp4kBOZ8kuOTj+JX&*e{b3qSd5UVu5Q1SxngZF-aa{FGv>*p%9>}&m87OmBISmRYC1qp5tfH5~L=#_I@g`$bIXI;vxUpmn`%@`y%C z$?Y6*4fmxJh~aQxCe-4B|LTIX6M}6+i#o)x@L_CG$xp-K_lUZ!6NcvJrwGsbYD+Bx zpq4~!%tROBW#Anbyr{un6`Rfg11`$#Hl=_&sx+?|S{E^>z=R|C)}lP289Qw{oK*#z znMyEm;h~A!F4&6K*s* z+%4)U&KYfA*P1tI&bfSLER9TP7fFPcw;KpUxu5d8te{_g^-?L*ygZwQyWs26dq>eJ zQ9BA-;gd(IS|g4kIhoMnOMADkqvt&ehsSc@t6?QB-+Bq-{q2&1Ruln9O{I>5Bt6EP zBkX)}8&_W4!p@zn9PEy>5SDZW{$rzqH?7ZeYv=jNY%I`m{(hD}A7>@&XbJjoj`Uf6 zKO@;=gBAv=Y;xyYf(vZaEM-9!S>ZT4tY@a7=I+FZL)S-3-A4V%j6x`KO5GklI_ zU(O4H7)tzHJ?y5UbLEfA6<6Zx%YH95W;uEr>Iw$K#~F|F-efp!U{?6Ks72HZ4W{L? z&n^CHkCpbE|0YdCM2+_GUTpr`*xV>|em0wzC}=cf^e|PfHh6aC2bh;JbSnR;F_d(U zir8d0o3I{yX)^#2buMX_3l=mF1te=SiUO~v*j`d-Pz%=tcML0E2>7B7^5vo)#OsD) zG9@SKgJFQ-5b-+JKI#|%hEMEK5oy)G`|KG0kCRxT3VKjN%t|C zhoTHGMga!!3hNP>gmr~D_Ozx5+2F%hZh@;=m5OxBL8(jmM|o9D>x(z3$0lk2IzVAE zX#k^UYy$>jZFXUSj8UMuv1t=dNDYbU^2s=L;+;Rx7)}bE=mLlgCWUr^6qrI7ge_YG zq%a3%rZgBl&;b5|reTaUD6oWfL6HVe!xet%Ul~pG`1XymO+m-k`)a=Ov=}w2bRzH% z1mnZ|^*N|_3XV6nUc(UwP}m$~zOnpd;bq>hd2Y>Ub9VvXKgmW-Deu{91fUv!<-o(_ z<1PBDDxy(18|(;MyHi}gyMsqR`^1zeib6u9z0R@hvjPm3{_3G+o=q9M5DrCR6~4g6 z=iZHd9KHLY^ig)kl+Rom_~vV`W)JPCL}%2lENaj+;nJ(yc=cDWV(0qQH>}1bP_*3! znmuoEG)%MetZaUIhV+MrpuavVdj^1byEMcb#yL@XA-{+#c#)Oaw@*H zcr#YkN-wNJAeiB_v$K!uSz&+lqrU{(UTi0^;&yE_;g`O`r`D%ZDwnugR4+)v&$F?X z>L%<|G9XncsONQ5#m376D{Lw*DPA!&M^M8xX{k7*fd9#4RMnLf*K1#0n&9>eyZEiY zvxooJKYLbWVUjVnsfjXcjZift6S=i}&zVoZbn^yoZ)W@R@DbiUI>FhzuV>)o_O>$} zeEHTczHsd-ZtZPmMSGcz{d1h0oR<`ygpwrFI(SPy~{j*a%_qCtH!N-sA=;XAXBP9{PQi4}-NB^@P zhz1fj1sZe2j>?s?SY3@4$6e5tPaRj*+Q-)B7Oq{sp7Co3``H0I&5HCSMWN%P85Pjqu@KKGZmB>*j?iDH? z*LOp-$_#624jH=Ws`bUk{&R0~%QlfJ`c@4b)gLU~q<}h?vnz%7|MV*x%{W5a;Ecr z(*NOmzyrN$+~c;VGCmWJo$j+uHlNyMa(yl;yOGEV4m;%wUGj5fB0u1E zvo2Q;(M%W+hRa|FlnvfxanMN-B2uOg1bEQ8u&OlE+3yj2XdbIqON6F`J;Pj8VYbs> zW2byAZphHICkRvN1px+!IlO}Q|SLPd(?@JnG)QbLpGzn0=9Xu}R0O+(9n zH4Gbo9v0hv^V#`y(-3qKAKjA_he^~TlY0|X2n}8-fU$Q=+gT^#h+N?>nuWv2*Uw?% zpc5t)5s2b^!ZQKal|4kWYB*tw&cUA_kGq;{zvvA~J9(z8xvX1!?n0ofT~5xobo|li zpwD?k=XL?XT=cR{%V8WbtxPUh+kG%1W51PP1&V_)hnfNw(NefO#HqRN;dzfNH1V|5 zD)~B4XDzC#$czMk`vF{(!9_ts&F}EiilIH5co}ODYGDy5w8UfOJvF20II@>O_s)b# z+NnCY3mfY>PCIfvg4yy~03eRXU@HBkIxtxmG1`J6?xU}U0DH#!`J$!s+%?{e&-Ti{OTSycgA7O2CpIVg?miV=7RvY zavQJgf^KHvedQ_W|9^;dBD4_O*z9~y=0Z~U^58x_`Uv-y2k6Ir@!F37S3s!01U@xN zqjXf^2E`%6?}Qg$dKKqcSwG8$(mcDTmwm;TFWpGE`Qo&s?m&th7~Kl8@_8v7uBryD zc<}n__4d6saOJQJfTIQV2>5!!c2zn}ue8WgH82gp4HIXsI+2-9i{kUY`nAjWXaD?J zcI;I;?DY`X6!^Jpde^@Dmi!w&RMO0@-oRFl1Ux)=hLdbKp3506d)aCDjhCOpum9Yu z_~LWdvAvncFkz*l$0#e|i5BQqe4fXm6h5HkqU=3mnrDM&c0R}H={y@d+33mM@8cPl zzg}j;hsyied|Aq2pDb1!)Wa;pgni_5i3X5>fR*b$@ZZ9_j&gM7qlfs;-LK-4kA8w5 z9UOXA8L4A{(4>{g2TeIry{3gtx=_y4ACo;}j?{8J<7`%*x31p8tKax8_HMp}^F05@ zj~?PDk3Pe4c9vmNj%O`J6WCtoy;akVP3&B{itTLhZ04vSS9aachD|9#mZ^~=JJW8O zZG499d0z8**_h9;F6S35XW6khE14^cd~Lq!iyvSqtfZ6uOfdZDTDe{#KI6g%O6hH- zpp1{JV$7_{xie)C5@|#xz;jK01bOO~`T+AT_&m5bvXKkeN+UWNJ_whWm3Qap%ygqT z)p$=8SFp5_)A}dTyyK%;nQKa^akSM+dG(9Fn{4fav$5Qq5K5r7NEaArbhdA9Zo(C( z`cPv~g^3Rh9S2wts%agjeUsX&YhUNj`)2xnka{ExqRK{>(JlY)T#g#eB(%CG4fNFj zJD^1(t%%P{4rS4#^GV{o7b%p{N0NY814V z0j4lsr_;Vi2-6`zW%yF0CK;n3yC91Zk;y(sVpqo7R);A|QU6&pkfLBk@F0d~OEnug zOtIGk$_Pfc4PG^{)l|FnDVv_22Fxpr&%W154elA@kaVj3N+UL(-ucgP+L0%Cq-hZK zX?au&AN~vHY(%3Ap-&T##s@;<26x50m|SHfYpcTPFYe&@lSlQ0Y9*Gi z)g^E5ZoGj@FTI%Om+Jb;dTm~v z;49y~jF(>9uX|=9KLysm+wiDpQ*@Hs&)&|mw*36QmYU7qcd|zOx3hu8uKe$vBAo}^ z;WYBG;CEfn+HM})8;5V>C@Xmyg(*8yD9Rl%(nKwDrL|Veym9*up1$?R*^pV)N^bd? zagKU?^W_eE`=iPa%IWQpR8_@2R(d3jhs`LB(1dhWNE%TEVm&W~4H{D%%G$Uag_`0T zB6p#ro?M|3g9cEMnsE2!DR#G3c)A)DxYX>2%FOz}$SZD;(*#xH#(EW6zO;7*J6Y*F zeD)+O;b%pu5|h9dptbnVh-8xd3X=q3tz#1`OO#bfB&;L@sp!fJ%m(weZ)%vj2Sv>#Dz5;-mVc$ zXNkXcS@+nud>eb&u-d)zD(+>a`G-ILSvH;zvIFBN8|7zt?h7$6>p_{~RW6a1vaY;& zoue)+Q~7gN#7CK4SjJAv-zb~2wes9XrrC{2UXP4sTiMyNnWLtovUesMOFbK!T!?{< z$qd7@c{U`^alVjYi(k&`jAW#iiC~b1M#^{j1zKJe;kGF^cjZ+KE@KZ!gxLx!~f5CIWGrx-na_oxfw z^9CXJnJx+4gOU)#Vns1&Qquxdk{cA7q@(cYQX6`AK%!B&3!4q$oqIF}^m}7WhW@Nss@~Bq8;aHd%qKga|So3O_4;=0kA|g6n8Z;yKDy&JD*v1v%j$ll{ z5iy}zdm_J24InpcsTpfC4JXt-W&)0tC3hsV!uP9ZGKqRLx7e4Y6dxszA2-NE*ptsMFvcXb{ z32=1hE87_T(j}y6^$@4M>=pjy9Ig3rHE2o`tlVwX?0~Z8U2&V!%}x&S`sqid?CmPR znv-!-*dwQQjl;eI^78(*to@$g?DV*7hOYWdhwC|5^y*7oVX983(syc#`IX>FFHsOu zgQZs~$~{e-)2u6CZu_2&;!50B27#C^8LXBaY84DDx@s?|mdm zqQeZu5t}4^-A7!?p2^;pQd=Qeh1G&?av*sn}?j+lo^QJX(1Zk1I$bp zTD#Z3k;-XG>-tLgG;k*ee2y#3j`DGqHyb4iHp)idA{)n?KCD7O9Uf(FD?U4F-iiRx z!MZNBx~ZZIXZ#9 z%$SMu(MO$C*>5I?!c0=9^42;G4Fs3~Zchj>Q)9#+ie=f~s}K46xIREYJi$9C@rEFh zT9)ET+xp((C@kUvvVoM}x-JOR)G9k6EEfBBV`d1hWD5T}`qy_G9upythBtj>;$}}q zH)l z>IN!~SGs;MCasEzRi%StYgAaQZ!kLE%R(#lt8jT0&I2E|MK&%T=Vk_u4VkVh@TjW#VZ{YD;J?@q7vWQ-|li;h#F zRCp3hp|D2fx_cjue&A6X7cP+|9cN;M0ev*&ooG~?HK}NQn7Y8!l?bQl;{D6s*wJKc z#7GpW8K4G$%0|*aXa)k%g;AcTYi*p)=hgsUz}%+dk<(B^2NkJGIcKTz6wM&moCEK* zwah|mV~qV5ws89J$eFxG9s*)f7)SJA*?mdcH-iMWmgEa$w5vBBqU+oU;g$!Ue3l$+4K*z0&&1c^|j=5qCb6t)nA-o^farwSpgmO zsU%$WSt(7gXP5euIYz&ABP)Rtsd;`gYhBsEJ&=PXS$ChX*N{rNcsdv2${y#pAHRV| zX@*5tH$|%?TSfTk@(Kg6O{DpmyLVr~(c_QmL3(nX)$woL0j}L1SG>{mURzgbkT<%E z7rQJeUt3jUrX+2%@aV~bBSi=*BDu9iQCQiUDy^$o;wxLH#>NaE9y&HUZesxNP6 zTFQoIb@27lutzFuG}ZV@oL>HZ_4;$AooDCAsFAzAluQ2RSHF&LeDj+~c|Dc}&x8)X zSD>bMrdsJvbOzp7&U`KEGR5E#AlsNqG9kmXoPozmsWaJW#-;7& z7r6P_9=`R9=lI~QGwfeF&hwb#KmGPq{Px=);V|HSlnssYEo?Hu*G1)3B!8ggPY81)1plz)Gi|K6pF`4IABhQM^X`$8p+_2ZkFJbGgYf~?Dk^MWrx!`3iTF6RoR_7?6Kf}1Z zwY61#p3UZRrk>zJ;1PUCZY>BfoDbIZi_}Kq*PgjRXDoQtbxnKxeLCInYbicYFoISG zNaqd_QPu1Bq71lF5DV|9^DU+Iaq(Uvj#%mNZJ$ll17z$9Uo#h@aiazpMcvjO@_7+C zF6+h6j~P4KZ@LJ!jMFA$J#WtzNBZu9=2Zly?T{ZN2POYN0%R55D(LFxnx-HXK&_AH zIf+Vzu8Bn^q%jxdUK3r4qq(<41cQ36`P>@b+cBOHHp+Pz3Oi5oG9|stA+(`mlSLb7 zDb{DZ$o@4P$V-LR|-M907pvU-++ca)lOx`(B}B)}uiDOOQy%8*h!V;XW#f{h;0pdu$a#5D+W z(>90S5nzMVHf0PBZM)5In&}O1f;C1dDEN`7$Rv9s{y=ZR%5gmRSOx`wq18?X`SR-^s>7kNM%5(2(?{ zRm%t$CdMyl<}>KQ6A6Te)KihN(5(>FTBH*xB2~ z(Y>FPGPQgUA6mGX|Gxc&?EIQ`ma1lavLLOTHu(ZGC`HVI@nh?w z!p}S`@>%bRhN3XND9I)v@8qIoAFXs!77;5%35_WNz$!+ z)v71Hmuo9%ZT_g(B`F@zR2>pI+GT@x^VS$&x_%kOU>Y6a+RNAQ-D~&oyZ5VNYWz-R zaG)8Yh(BQsa1n=2VNI&evw8h?4!hpP!SPlO#C(eW_>-&^Kg-7EOp1=Iq#B-3qpDL1 z%jEpZMYHH#1glUN98#<2`3p_bE#Jy|R@$+|H!V7yx z_~?_*>S3d(RRa6KLyEB^+R6JI32%3m0yESbynMqpVP; zdEwQQdidy+%OU6M^YdAW_L;N8L>A%XBs)tuEpITMD0>i%uhc5{CI^&9qt$xqyyUwm z7@TU>NwjT^|C=CFPkX9W$dVh3LxV#d*9I7Z&^o+>Fszf)6B`SXJBFJma(B@>%lZqg z4yy_K9DSU9AF8XxJq1C>4%F#=(E!Hz`?yXu$shvE1p7O=Uc&AW;gaG)AWTS%6%8f? zYtvvWK+=*AMUNdx7s zeACj=g1wrSw6?z};wMc07_eQ@a8Na&ZfZd2izLFvep2QXI-=mwOA*F)!5is*NaeBm16M*~p|@PD;9^4whulCh`j_;@(oP$}QiVAI z4MS+5r1%lpVqkWWu;p6gVW)5-4S?SQ!N&w=6q<*d1~_8)5MW??22<#lJcQgC>=V}b zd5UX^HDiu~aa_?VnGjErNqU3QEGdX!j4JeJj1B|5fP##iPC@ImLJmHDTdk_1Q;eE2 zA6*N_ufY%+LD_h^ec)2|onY$-hp#FJKA-x0E%VujK2mGY1;(rAk+6_tZ=VYmFBPh= zCJ|txNrx*h?_zdzlp`c7A0Oa`8Fb7NnNj5;=|?g=QhIT^Z%|BuW&P~jyo}kSC*@>p zyEzq!kI8e-W4yoR>5y4T{K6M^u)jZXI*|3fP`O|lpRMrZ2ZuQM!7(Ot1#>+>u^O=| zKl1xYp6kH^^ipV#BQYGAVg4~yo}4)6MHF?ygQHLJ{^9_O5to{+JU#&fdPX1!_r9|8 z<<`~gK|g$i#d1;4wz;Lr-M+}$WjCh6HS1%KIC+0NmBJ4pL?k#@fTZ0%^&|xXsHzseV<*TJrLX*XZ~to9bUr^hEMw_q?$@u~!qpphcuRU2 z%tBh?=nNm?xFB`A)pg{<9=pC8o9Y0q=b}iOLYYG~SW@33DluX2(_{t09R5dYDG`#3y4!Owr`7x4U* z=kU%?e}IJ?GFfpV1+aKpEw!X2E3dyfz#1JV0y!82Dw8c+Bnf{RJeZ>5v}XAG(yVt` zuM~r(R5;rxg%((+o1e@6nK&8YZzm^wsAS(L4M99ZWqJJ=1|Z`%-4Xs%*cdBw3Wiet zcWY}Cjl3nGiT)tUGHEM?u|;K`Xt-@!z(+nO9ShYh8g_P?;8c@!VY+~VG!jM-=7I}N z%AEC$pnjzYn7|6tAR{8R$QH*Wze`a77}~^iud2)>Lt3$M>SsN@e$<6U>8vlkInFn! zwiXpgs-EJm1qUk8)E2rhrph=FK~wWc!@|;F!b%p#3xH8U0$yXe1M^{2~ zMP`W9Rd?`ot>Sot6JnEIV=IVuwhc|j=aM0n0-&b+08OPo=UuL3=x^br3Izr35>W}{ z-`$bm_fojeh*_Mc)K9p{IRO7)ehOp*5quZUL19N`wmti-EpYRf}z2&M}d zVNm!}z>f$C3YLEy*c$JQ(k>{vYx9lcmr|j2hZxBLYi*34PNoqEo4wta2G0b5hb2g% z;z|!U`D&^23KoYgHM4~CO*lBr2$9M43eP$i(11As9$~76TV!&P>g#zCd}*Zn-4N(M zwRbmgi?6t(q=F@aCtyCUudR1@L3=h*_xx7}4Byn1^s|K&3238+?Km&p&e54^=0VRm zbkRGw#cHF^n;SxkO5EtL@aTun)%)XC^U2l*_O4&Tlb^i}jY#zx_1WCU*4AkCHR z#o5>%;r5*^nP;3A95!L9{QL2}84iAQQc5g$qM)cwWrr?90*Pg-MF21xEejO;p|mXl zk)oNeYA37NIo>?^5XW6s=Vd>EdM&Hxm<$EAgncsn%u$%^1-*XrIv(D8r)+jFcp&`y zm+$1?FD0o~CdV3Z#mtT8kZ%4GaO=A{Tyc{hA*|0f9 zF?MiP-m~hI+j^Ma59)7a@T(R%A;2p8XE;48E9-Pv?mIs_!`p8j<{{U^ImaEFR4+r-$`~xJ^$htkfz&MSf<9P++Who5<(Fb zHbO>4Hn0IRf;bduB)>{g2szX=1zc7qieql{f~$_v3+d_{^fe0dVvCU(vbhA`x|<`C zKRUwMT#-T+Y)D{%uMT-Zt6T@3#`tvUDzJSMPoA8WGU8Y~LorsTmoRzZ%h>q&U&i*= zzlh15J#?9#(gZSRHf*yJIiD4Srq6g?|4y+wIm>@1=<;8Ga*E|qUTgNApPnIQg9B&h zxrM73a|X|H1j3pvvv#Qj5kHkHBuu!L^1Nr zj;N=7j`K_(9@jaf&}kjKZgwgMm8A~q4cE!6VQi|QBd#)L8~-6^rhtNlH?X*qr$TWX zomou~0q95#W0)<2m-(CbNhPO7Z;BiY2%;}t5cUe6p3Z8th7*txkx6d06tU_#O+)Jt z+K-GXdc?`l(B@Xh6}*u)w$!v|#G)bcuy4j7kOqAzLO_w%jUyWNA%v>PYNHJEO#`^8 zVs5}81obcyIc#$pXnmTaaZMNKrA&&Vl~vwr9tbc=!?96IY%<0aXvj{RUxOL7$}OC{ zVic{wCg4O&do!tqmT5(H9lu1w|&Jvxu`syy`PqXrKwg82R zH7HNswxJDGo5*%Ta|qK8_BdY-*QiP`+WBmHdrsmufKppm^E0 zcgMK2H?^jRJbdkyVRZD-DP~U>7)!a`V$5_Q7r$4$$^Y(Wxp8B|`RdcG^gmkE<>YRC zbD#Bh@azHJJO2#Jv7Er(Q6rDYLY`vKMcm65Zd|=ls!+{No=UYQ-Z;O)Ue<}f@#==0 z&dx9v17ht}^LRE*W!Lp>j&}}ILz~_^s@=G2OM{P!B4_2q}M{nCed@(zhaj7%BbtX6< z==htA&lO3?Z28+5qT-a%+_~Q2xs8NJvsl#ugO~Hj<~OoI5589jPBwS3b@e&ie~_bv z%e)?aHZ<6X-MopN@BVLb`8R$UU!0sh!(aaSzsIlt*8d)tE>G~}dw&5OpBkLkAr2IIxTKtIZf=x}5k4zvxtQC^$N4bQa)hRxm&;ny83sm+$=j$G zpiz_>y(8*uWnWM7tR~TPpkmY}LQ&UB16Tl!782#0$+Px;zHgR|8BGDR)VpXLC3m<3 zE_wN-C8MKx&_t%zR;|Sy8w-Z8qbl>lbYdHcoL7u6p*4QT_H<5FuEok3QkO|@#DsY!8`09?>>~SA>=FQohcqXKc_k(+Xa#-D_Lf zaXZ43H%_cfsNyy?2v*0E+9kCw$`*}gk(xQB2s2q5HWGKQ?&9#{&roGH`53w}HoyEb z`m%QfH9ahG#jEUZAE!0L(*L0bDVUF*94;Vns;WrnUlKoisSpM(O@q<5c9E{hiP#*S z`AJryp4NRKBztz!Sk`t?I>5UJ@8U_0YOp%L>L5x$g62tT@-RN8Wks37$P&6$6ZMtQ;`P zQ!m+Fa}85^+y$oFz}H{M&M`(r{m=Nes6I_?GURSpQU82@#SSl884*vd~#$K6E0 z#750AMqFni|NV#qTCr4JNO4 zzxHz&Wm->cb@wvu5;RH`{|T1$%FwEHBWkL3*Ga|JkosE^@woksO{BfOGXGBbJSuI} zA`T=au$Se%6fK!&qfr@$?y1?|z8ITkmE^!f{^51>St~2YB^w|2k$n z9ghFSA2j%?INe7u48Yg&u=-uomlStXbH@cQvVRQ!jlW$)P#EZW7dF_Hv%@-x(3FHt z&eD;HOwl`}mI;QbQ`3#= zXN{bL^W~Vfo`PprEBkuJk>fR=UpC|7FbMhr+!2=2VEp8A(gP1F`=j9#2&@@beOF$D zI2;7t6epDc4CEt8|NK67s}hppn!*58c@GmLLYtaJu#h~t5)~gp1A9c~pFwp7_$rWuKV?6_{0=|c)q4hYQ%?ktOl9Yw;1~?nN zL3Q5sa}TmTKMLg3P(Tp;I^Psv76%v>Nfpu*grA?O({dAG?Q)+Z%J4Vq#o$2>(G+Pi z*^nIx0}R8IVvHc6eUZ(T1W5w{rdsWZtBmluH8y}aHXTQ5An%0TJAD>HiU&+tT8^;p^CMSZ}?btk39A8Gt3M zhYC#JFGq;Bb!EPGea7lH9B zZ3ygwz_8yjh$2P9t4u7y9A@aKa?ihRUfL<;)Mt;L7Jk=@@>3jBSFd7n=Sr!VRC*J5 ztaNy?MCl?17+&R`Y!sCWX``&la#jl~X+@cncjmY3p?-0S@vmL3)ysH{IXXjseq86m zhi;Z~XsG*XWG&~%hj`=kBb+gglyo!OWnq{X9RxnyI+6Y94lZ4}iih`pT28ztIU#(S z=l$I~*?`+gb(1w8WH`Nn^yPno?(!W(MXbR7>3hIO|FTrx>R$P$NV~V-DXT5L8MrR^ z>|;ljBHeE8`#;K{{VcclexN0urvRc<2Ah?Mo*bRw^`D+#HtWhJeuh8qf$5d$lszgs z`|wX7~+eKk77V&D`xdLUn1;{8y8k+E;a2cZ*=ewhHI!-#+%zEVt01*w4N!$^Ui%wzwn#b z`A#-wHZpvco^hZ@y~uW>LJQ@)u*OcRm8iIkhOasVN_;FOakh44-&fMnjmADwhO<7M zoF>$5L!+kf#B(5H{Z2uuQP=kq{| zrH3i-DZZ!H9DFEWyMB_}_^l^n@VK4zixh#Ai1K36oXnWdG0-}dc z^#?nmTlt;}cTN4O6C9z*kC%qa9idtmLaG^584n_*lAbdPj|$bn=m!3ZxYi1w5F%@#UYAb|8;;m?jTBD}pxe*26PrExVkAQ-XNS!m8~D#Q z*FZ(4?+rL=3hlW-ug|7y0D*8ke`+NM!SAo@+g91gF7^=H#Uu{j>8mYRi8s)1)v1<&o`< zzB-2v=m$})z@_c{0)#p8>EgvRIqDi?rD3*#a3VuSV48hn;Gi)K+6ArsM}w!{;X=zY zWAr@@M3{W%DmpXHZ%@4)bh>?Q6I<6Nc>2ykJ&77oyrW_8Gyu_XqzFsV3JX%CXc}O{ z@5;-!usAv{QHhnFz0}oB_0uoBki83I*#uta$@e@v=YtJb*qDxd1SHT<`U(T&wYv1u z7M^4!d-ZHp(vXV6J5mpRzHOS7vX?e6`8!uJy1Y^G=xl-2?;n(Ov$6&g;ZYOuz>9JC z;lT&E$I%%s2cJj_Kve^b6%(zqEZ-HH>hO5s&I>p?ev&=be2V?DC~LfWw>A=9d0sr{ z>_H!8<@@e$BHj3cRFYbjs7#el`H4q=ot5$XIXaW0Dm%B!7>DvCg*Cj8xAxg9x_Xp# z?}OamwX7lEs->X2o&5JLq}8W+d^34?g6bKb3-WQaqsP6EpWyxX&aqmIjM9@-%&PQ3 z&g99X-w1oK_-!lW>(=fr4(`7%3T&nK&7I4*cKdENF~%jz!bVCLaI2g;U*IcM&GIuG zrR;KBo40Ob^Xhd>cJ{MzxLM9sLD#j&%hA|XHe}DTL38jC@bGQmIL~{<`;6w!f0RE9 z0j3n@ri``7jHy(NLs_$IC6)b}=UhdRd5ZK)VPPU$3(I5uHfyHWa-Um!mvM4@R1WQ= zQspiy&AZQI>pQWmXtv#~u$H%iOuab|Xe)7S2zd?rx%vgW*%#WJ3t@xvkGT!dM(W8d9lf$H$Z!jcG z7i(B>YCbjkU>KJg(OhAaivd8{fy}q1t!7xw*f7*-0=@cuZe)p|a~d?7aNX5zLEC{F zb0K3uZXVk~i^G>F7G)2N^gkL^s zr)4-?$JZN9)k!3BMw|3HY?p}%5HnzcVOOHPgQ_o+tkjfHzVOBU=QpuBpJQ=05A#J> zpFnd^rHdNb-`uZPQwuvcJpCGb#ka3t!oBxCvO_fM-l437?q9yRQPzeXGE&kip}RK=1w@$_9Qu2=?%Glug~N zj6Z!VyI8LxZC=S1z<$LBRSYnQ>MJkj=+Nm8GlKta{`M@-_r+{g{1-V|b*)C7x)*cv zdniQ&iVZIDHV3k>j?5%0eJID3=J(VCSOQ}8sCJ44{)TE}5BtX{iu?FtsNGc4va zRIhsFjeA$0$E9n}W$;%Cy0kLF6>cjj0>CM5tGvG3H}By3-50Qb{Z@`pY}$Mqqu+&h z?JIlDQ;qskZ@ZKYo6$e`dpNpw4gKC8w)eJh z^*4S6$N&BBA)yZtiZAkPpg4}`h#SJqAJrD%DQV%i&j)>NC$)1NiUuReK*e5Fm4?q7XmOK*;)ko51CtX)3V?&95#zCBolm)F{Mk%r^f@ z6y`!mtOtWxgWs->rBAc-y_1n zl(xE9$p8`+C+ns(QTsy|f)Np4TcWT+Z8atDSUT{94*nK4&E%b{NOUfDs8Kx+%q0H*z*5o!jeH+#Vb zT4ypu!!eS#=hFp@Ri(hceQm=wE5j$fZilLdxtO66I*Y@LMwAkMO_Aywj=g3p2Nvdy zAq=jrc|8_GQZMyqX*V*U$e8=6)QA4uq@osXCYaG&FC$cD*{`pO(h_^pi;mZIYxj`M z#hwx8i3-|g9}Ur92uibP*35_MGmE$sjTy-O8U-qbl9WfyYF=@OaQfWN)hV`bY~bkQ zN0QD(P>-O_AsKAzH9PMnU|!{?5r|%M6BO8Zx?+yvgW=W6H%g&($#hvRLxU#=tyx6Vj!D6t0-W=iOzjX~azPyJgZ}6t%zMSi_ zb9;)NZ0t;S#unl4&zIRN`~>~Ke~QtWAUYc}9aLJ>hBH5S_V7MlpWnx9qbmjtiN}Y_ zE0=8w0su=NX($$W{`zf9wx&2gI>?^MWpP^ZFm|$G^s9HX$9gmH#%o{7QHE=EO1y#k zv+n~>{v7P_r*6U39SZDlnxhKu{6Em=NK$wAzsidFw@u(CP(y|BGcBF~=l>ypf0|*@ zmv)W+m*+Pttl97>WwChwjOHk@0zJav!6Ur;<`I@NmKS5|qs3pvd*>}N4Vyo8IYNHt zg)iXVy@$onQZE`GKzQTDuVB2rTOy6iGN0;L(EU(sBryM&?C#)&*Ivf$mtHL1X628@ zl83w~c!umM&v&|oboI6zBP z?vSpm&VDms1kEgJ6Zy9k6)+5F>tWC(%g z(6piQjB%3F%{I0+G0t>*etKRq0Mzg&`73LcaqaNvJT9M%EyYpEyDX?)*9am~m}_!y zLD!*PW0^MH*g#aQsF`5Y59+VV^P^Ft5NmXo0h|J)%jZRQ*mG*M>e;4c1iiw?;|&hi zw;DIWcndO1?^i<%DFVVZ)F$gEjKePvNADl`S<5KpvWr>>pdurcYt_pm0F~-G&ZJV4 zwq=L=5gNnAkv77ka8&p58vIijV|~C1Y9+0t0E-+s(Ap>apxMQo%|vJnq?88gzVy|! zrp$-9%=4n;z_ZuYg?d0D!)r2*Wz(YuKMw{UGBhqWRFw?6}5BV6f}0gF6YbEnA15Zd}W-; zd8^^R%bsML@uOEHZcH~U3TtXpigZMwZ^e23+B+kmaGxDCiZDN+9ebGkDZe(dVlsbrS~dn3xbuc` zR{SpQV>3r*_#n+v44{+jE~+@mdfEMhIsWaRJi>4O(luPUv{6oFwlldXa$kRO#C8AH zCiZS_I6PBGH|G5Pr!$=X;S&%azIjp)gzRLiNKs(NU0ttIm3D=nKK?0=vxc|e>qRbz zcALn})wNy15mig`F?G;|UB@-_>KlyL_R(>1# z+-`p>hbx}Tk(nGd`0RJ<+($d0t>^QP*}$0I%$Ct}2yDcjt?QRn)Y$<_ndb48JoHIc zT-lSK4I0YrjDIsv{&G+*7Gk(EMogqp#j90Gb9(2k$N1#aJ}aQ(x?!Kpw5^5@xf)w9bQ5I~Y^?^g6nU)uk{uOWyEr^PFrLmV`mFJp6l!dxl|qLWUM4YS1X2E=G5?=V25_| zcRs^*nvGZH3q2nc%I$sWCEzb!FMI10Cd!FYgh`@-o}+vr=obSe*ui^&J`qP71qz(s z*j;OAB=;$+Ok5CvBQ#TNZd9ktEJw=OQD#Pjz>?pW*@<&zEkt1c6l#+__w zFtSz_*fS~8lD1LhhZPGNOf%{jN$DI3O=_afHeVYnc-6YH;iy6_RAS0I27cruMvf|Y zA`B_qMKS6S6mpMZG|;GuNJ>owBUOr3u^`noKf5R5(S1vi@42v#ChvmSME*xwfj35ODW>m)eWLXiT4=HKY z(xz{PGisNn1~p8FnpGZBpc%1tkg4)}igOGEq%i9J_ddBIWL;3C;Z!ydPd3IG=9!Ub z!2oh%GK^IqH_R|u+LQx`XkFPwk3UUQ`&4>+sy4@`I*y1C=v#sWB=$OLXQ*0tN z%C;_JG;kw1@r(JwYEi47jl`&lUZJ5860d20y<3N9_YjaRvhKS`gh9I$1c>s@$~#)W zohN~4SKIrW*uFW%*`sG3UFp4pdXAOOqqntK!^go`!Z+h@3ed85CjgOo)?zj<71&6g zVO$u$cpIY|d*ypCyfIPT_oCio&h~omvs3*4{;0=SU*5rsceb&;#d{1#C2FlGRSsbe zI7EWyjw4i}SId(n&ObiI`Cl9YZ=IFHHw!pQ+1ey&%K7(-wwS?(zs)iFU#!AXj z$vRRthPoRsgRZ>-z zYe-jr3u*TsX5ik-^S+L5db{kOA;rzrL(~I08Q1xs&#ZhUO}k9RD0};-PjPmV@|up; z@T3@QLP!x)++c#x9pToED>#1o6wAfJaVyV%`^qcW+`CfBFc%{aR5$z=I;|0pYdP}w z+Sk7LxyB4#_&v4y+R$jw?~~08<8OivvJv?t8(SqZWi_@y;cTtitfWO2I4z11+-Jr0 zt$Sw~KQ`@7clwdRGkwl@>#vp0m9MjM%oWs@;@##yu6Q=y&$P6&U$*X)XZVrM9be^- z9RW+>b9`A0o>Hw$%Zc(7IO3Dvck|z`04vD$l>UYu*CnoTunQ`NHs4gJ z1i_KK855UPPpk$FS2yE7zJD=Wm}AinE|qrA&$-fH-}E_*g0x(J5HXQs|y*htY=s77x^7-$52nZP9}wp;+~6zoTxe~ zC(n+o?-<5a1=pLHSFF6y|F^~(rA>9pMs({Bi#PF|nRE(L> zM&Ga`MJgDhPd3)xr$RQ+@}^<=S~<{rj&rOsO}(j=5+ZXnh^nEZwB}qCYACLjYSegc zAHfm8c#K<+EnRwVh($!IQ9w2heb$&!P`cDu)zrHHj)JQi*-}})|Kb+dw|f5c3>q;Y z_&Sg=`#!8`xIsmp(W}iMv=fPd1_mRQR8C8=5g2t@n2uk29yA#Ve%RD4~kJp@y znvWiy^Y#holX;2COqP&s_PQq3(_9W+UI{Mc_fH>uj88`AnB{fvJD+pm+XSmrWPgTR z438c+Z`{W0>>1|gCvtzE`{{8tyQP2eZdbC$s)1DR&(>#shwq;((TgV^)B*up&!M~a z4J0;V(g3f}djIL{A@Jy5=AUxJfL)2R_v@Y090kgeorHn2u%ywwnc;qfTI!AW&z$7z zJN37G=ke1cy!rZRmPJ`1>fNBR)EPk+v*E4EppTD#W25wXhRw&HJQhq#;?bYr%JW~# zPNn^_Po}2NjcWDbR2AcKhTYe{`9)m0ei@%De}}jlUxB8Avfy~kGHN47uU`7q92v`o z-|{dbJk+^YH^B3VI5jV?&1gTb5!2cXhYybN))5zw=nA>lb8>wC(z(2)zj*?vykRRx zvkKm2!QZV%$zW=-#*QXTgOjUQO92jdzG-Lc z0E*|7t-S~XI{Exp`rI3b>b*8<8qS3+ur4~u(V4P`W;!WkJ)g}Azb${#l**pN!x=2) ze}K8E(OHtohSWfj2D(?An=jbr=GFjSE&QlyA+61jn)~=#2aob&(6Y$2lnUO~Lo~_s zk=RqcF0)U`4qn!lTBAl~rW<@JQ;pBa*vj`HT1}-K&Pkrv85@5z1BlijI#vX)6F_6_ z#Zy4nth{hd@2Th6bRrZhf~nBfX%Y3I6m&g>StnHc_lS-z0ErUjV}Z&%Hvr-T0ZLX~ z460Zq)JbEJVb-+0ICfWts;k45 zDXYFkXjj~TC8$F36Sb(WZ#oyd>OTdoE*VD) zY4Uz_0Pu#)=!nBj?ezJ3-!KFpjiG&1j3ex|af2_MF8Y=^TSP+IOMys;;%bsjvNa6U z$ZVj6HiCer&;W&b*u6%W0;AX;!ZkpupN-c&!i05Rh1C2;Va!T5?s%wtDj6TDQD`@G z6mIoW2TwE8mf%w;eU#Lzmp5_r@#AtPL<1BumD|@6u=e=>rqDnO;s8q>Lm#*RkFBq` zmM_lFX4t*9>us}>;JNFdJNqSPpAWe$!Ye6`2c98x%k!TAVL+b0v$1fx!s+o6_xq}Z z@xFaNDrS;@o3Ilif1c*|jZCv!S;ri+@-|y#11A5S=iipRbz3~kEIXtqLk;ls)tDKH zT*=+fPfzjvgEufM(V1R~G}M`Mn%PRqPiqv;p<3s`5xv{5d;t&N|4F&O>MeDT$agL; zaP^w)!Y*gwaIpbAcstMY7^A&Qfgk4UySI?;{{33nZ10Axa|#O^zZVSY7Z8HZZR}?w z=({KCeB3gpH5!mBs4F?3}> zb1gLDRmJgPj{e$bNAN0FFF%idI~$OPCl$vFzVv}7)?xtV+?nj~NO{ct^0dI|r*EC& zm?pCOsHS^aM1vwZwQ<&l@0+pJm9g(#x{7DB)5@}Xsq~gEWdrwXU@L`-*Kq^I0o#e( z6INx04)3wcbZ{wO|7s2_{q4PkI~xhVch=+IF9@gOI=iptfA*v(i-Aoe3&Ov+jPpf_ ze(r1u26mXAkal?)Tp)qc{CUA0>~5EcO_JQX=!lDJt5Jday_GSI;R-amV@em}ij8gX zdur~0%M7}>Esf4Ft#fH)PFY?qmZg$y*=uQhxPE56?%6X=3+`Ikoq~fd%3>Nu36sg= zwJfAC12%*?I-~6oKHnHrnROABQE0V=JE~I(?K+q36FEAwvOTyoz=?#YdV(T7*U$7h zG_G7q4}V5j_Mrjf!iCmw(q#T%O`~kXVBTY0D=kBs!c&$?Cb(#k5f%8UC7-C!QFFaA zfIbuvsMkI8R4URFxrG-DC}TQluyGj!!*UL5ud=W%rT0d)t%BlVd{)eW{J9A4I?e$C5DgYo=0mWGZ7Hs5c*XUMj5`@~ z6F9`u+X4CG^JeiAe0*vB_xfNj9_lh#M6ZPzGqz5{0jFl{LnEXx+Hs8pa@q>TeK9g_ zor}*S5Kn`c)P5%lIDn9DZ35^sQypVb3 zOLH#6%6qL?*y>&i`K@VR5J?>oO)gmqGmvgf34r4d1sbwjQwk9pLK8~Us%iOc_qoj+ zomk@R;7roZgqW)MtF<^axP6dvnDHd_a1$WkCsod+Tf~MD^$;Fofpd%=F9r0kv97;f4#hasifSU z9UtdsR)uHtYb*cwOSiH@xB=LKXgs*A6w`yBA-(g*=)eA(+4h)LzMJ3i{Lh1)`+8mX zuCw)^aG+XJye_Dazq9dkh)IkSb&qN!-+*vez=73I}oCePfubq7zMo)jm6DtJ^5 zjC>7Sm#<|5knbFoXco)M0^|Jq*7g`L-@W;{#!TY~4S0Q_-GacslgkVv`_Tkx_eze^ z=r3JhBqM<$mz8GuAoY-QbY_|H@28)fmBT)@Dq1IhtAS{sK!;?)r_~qAPl}^h}V*&fsyl^$NBF-hPc`BJ;0apx6kr@Kh5t)0-Ii7+BrvcJ{QWZyg^EI}6sTaQK8h8RZ z`V5|-L651N$Hd4J^3r&sDKEBfnoVKA!l(<5rDmooh-08FN%{#Z@Fjb#?t+s@PT07Q zpaA+e#9VbnUVj#dsUlEfkDv_-h|VMui~UCKVT~zYgcf<5NQG<`Ahd+Vm5f%au0(4_ zow7}!O=XhSDYd*C!Lk)aUF=D;D=0*vYbID@DOeOj#>#Uj5Cx$@411BMEGhhqr^DG< zF@QABd<{nRN*c7QjS-wd==k`W+PMMzXh21gq1D3)Inu`k1MJ>NdE_KxcxnyWguLA_ z(IM?cVs>MxE{vsKB_Mhwnv$9Fa6IoOhGHGIZAg^_SQZJ>DU=jXh;i8BtA9vFlf#)b z*R>59OD}@2Zx>#nBI~1TNj`cCaCVS{J0eeSl?JD|25Z8l6xPJY33;9mK4TADH<&M3 z|F+2HP*J@z(tk=c96|+A@(sihCQet*Pa>j`WS38JMB&P7+c^I0NjdkR9h*PaFzTp` z%iSc_j4SH~M7u}%)NtHt=$=12#ys<=?d(y1_R$&o$rzL8E)~66&j+e0ok{pQRp*36 z&R2m>S3;aiDOg$T9!X2)wpNDUm1mdZIAkf9H5NmL>iwnMudXlEG&hda)C1$Gl)3)N z<9Belkrny;@JfnsRilPrC!-6T)UdU`{QHe-w{UvO=~?p{;my}Z`S0$=5-&X`H}+v= z*wHn63VQutbICUJul`E5EjFEWx{<-QE29rQIX@z5<@qW6EYRDwx4Q(!0Ez^wAR;IOiDffKxXt|qbTkcchqM&UhF|y)I z6-MbY>VDo;9Bf)2?|il_X(rQYEnT^$SL%nM*FqOLG;8oS2JZ9d!Z_-3IrC@{3xfeD zVPS1@P4p(hK)Kmq9u$VAQ?g2Gv2B5yebx0zAtFE&;1fgAgHBNy78eZQ{S^-6x?;O;dohci%S>*px9uTrei>Zh)MK z)dm|v5qJ(59-(1Q%J6JIN%DCc4n)L}ev1;@5Xyk1Du^hs))W;BvbpwlMUA;$p)8)| zKA>wI=W@Qt-nR)NHPZ!b&+rUrgv}7%G<-%7Jgy&1z#$Nc@*dAO-nur$DC>OZ2dANW zl(1|yQnW4VL;uvEo6?oRuRR$j%&kJvjJ^O3PQ`h8?;-YIc_Ax$Iofe4D~Maudd3h( zITFd~^7Xu!az=|9dTO}zRSvMHo^LLuTM}cZ9t%@GYZWXWcR5It4TN5zGTc628>M2{ zbg@tcIDMwdq@n<3`{4eAPw?jXXPECL%=ru!Q9#N`=j>6HKTZ|tslvs}Hdi3*UA~Od zTohnDEm4;o zmM{A{=+W!IlON}aeo{|rXBolzie>zxdf39P+iz{mniFo%|0OPVb?F zrV0S2sPX>39>SUU?3o$feEk4NC(}~hO!qT$lRY6sXOdA;#N`;AzIN?0xZcY7$x(@1 zRmV$K05@-A@6KzravG;lf$TuaWvPG#>}O-9IPQ`=N*d4k=NKnw=xgY0Ctrj1PNWsD z{TMaY)Vqu?_j1bjq#82gY}hOxmBTbY`S<__+3B&8c{?D;f#$-`Mj+AyLrzlC&9?S& zdVV7ON999~U|srRUbAu8E7oc4e%&v_{Vyx8+#eJE(anVa%_}49Owr7>tYN0BSspOM z`ELGgXM_eu^Nizf^tIaAw{ye)D7Se{e%{I7|D*iJk(GZf@7zAGUmeO&Km|TX$~}N> z?uY3p)8>K;nV3<$@4YermjynttohQUmE2?LedZg!@hY2A&I8MvOUj#j4@` zGhE$_OCxj289SEda-gR1;GRqdb3uUFe5Fmr$vF<`bb@>^*%;?;LrOuob981Rp4>D5 zV8r{D2B^7~E>sdi7i-TjyqN#Zv%E~!gu~FM5GK)1-+pflv@p@Qn(at*eClxbakulr zV9vqW+ekz-?ec3ZYH=A$*Tvz)sEMRFb)I&mp@Y(_77u`@Ox3Y=HYv?&D&*g_B^NL9 z&}w8R8bO~2B3+sKmYN9yF%>HOqEb%EH;ydF0*zw1lIlg8dRL~~hq94L`=~j4<nUxO^3EexYI}zX6io+fuXspk z*CK^MH&)LevKFYij>FeQ4dqz3o|<_DMn6F0xSvLezDq+-h(N|J4J1jp%jqfHuRuf- z3oyQ@Q*JR7zQH~68ww91u1}o{zsH1Bg*(MBh@D8YMPMYWWJ%zLirC zO{)~@t*ro;f=48qbi;K+$$>HhQSw3Io&XX7Mir!4sTn8iJ~zejy+f?#ntu+g?JWvQ zl^a9#v#nMf7`4WrMqo$`5MM58#>Mv?eewv?D_hw6T2{X9Ud{%Mc=zj&ZCTZz)k<~6 zfM8H|)%#zgEmWc@t56+K&)8T6GF_qWTc}1(R@7v#4D%j7h>^vsMwshOwY{z!Ot`{d zK71VqldM>ARJN~W-1`8_5}lFgLJv{s;V>!?%^jW{KP|?9p0jc_ug}+Rk5~sqv+#Xy z{Hjz}JbeUw`1|PZ{b`BTq{((kfg(;HqiocS78T*ym?_^GV8?k5+3@-B|C87L3A*dQ z0NS{sl{1|8t(NHLx&70h=12cShVO9=UzN#md%Snyyp$uZD&`y~htKft8z)&|-#{(? z=rmu_%~oW10fmL(YYI38y!8AFI66GZ3Lb9|R;=l;b@NNux_Tq8S1lyb%Yl@|=;ak< z2ji%%thVOxN*7$m@R8wf7vD=<-SFh8jK3yO)oHJU0kP+ORDLVCp7CULHph?OJ-8wQo>Bu>ILX_=sVoCN$l)@)mu`Sc)G)LApCiOtgTH(ue2IrKSN1iM! z1@}TZX-Hy16ONGN>YClB!}j*JHn%WzHD84Ks`p&{V`_zvPycfoOgKF`v3sfk8;u1A zrW=psEyeGVX2|r}UwVsx{gBD&#f#poWX~!KMFrL+DsSo-(!S3vMxTu|LP`2{YMsXm<|U7&$N9Xuw3#v zmtUk{0GITwUKej5j$w_##PP(-K|wUe45{d+%$X>Vngh4tcNp>;GQ3s8M|nYne=qo< z@Qv@Wbz6l~V_7#YHO~hw=6mn` z_voMeG1A_bv+Mgg(1a_MWE`(4tc-%=7}EI7C+m0737 zAm-1aaac2xN@;g7Ccq!f!t!Jjz$jv$4IMUCv+TVnboO5I6f- zp4$`R2oB-RiJrOz>!amwKRf<&_AItA&`I+;_Inwp$ z(5j;u4Y>2t==K;L9bLd>FYCuEH3`S0zdtixi=jK&+?ak2OF;mAd3)w$Y@BAvvky|jx@DD`X82VK0eqhEk2ueS&oyQS!&|?c zOdhCi%5(1fD6iI=P(38coQ)b9xsHaml|)qT>T^{F3?2C}9BG3MtpO8yZr8lD-8HzN z_l^~)m6v-|MjkiC%{=AsMXiyRFmN*rMEHdge}pvDfoyuc0EfeZRfv)=2wxv1@jNC2 zekl;3vqnppT1hJcq+Hfii2&FN8V5K@;ex`vEl*d_Dx5VD6>y7Gh=;Sls8b`(`T8Pz zXjk2;lngZQzAU67T+sY%Ohb7Pk;0TPYOi@zAsBwb@O&?aJYzVo%5G}Xp&Ev6ijyms zam-DWh?Gg{93jHOeS2wVe0u-M^fEoT=mbPEj^3HY5z0`DMur2rSh=O{h z<(TC_csf;T;6d`dEbl=bUv&9sfw=vhh25(g%0QJ554ub=Gbn7~LiLQ+$I`nsnlf8T#8d(g8dx99T? zjEH+jS{;@MZ9RX+U?ae>B#Z_CI>sQB?H*q{3OG^TvzPVkqsQpJa1$Gsw=tG|UnZ7B z2z7#l6)uAcN+dj(G(|8$GtOC`D-jvKmNa5rJ^RIoK`MtcYQ?FNTGmyyeJRV{r%Jo$ z=QI5N`+td(4fZlGu_$|GD*kCyrWiPVHEQbK!`{}drtnoSF>mzU*xoaG=j`=wURh#u z1Fb_x@k))HQC-uz@I1;m_J436Fm8Odt2A(O~aMLRNl zBV4_-mp$+k9G@LSH$)eiv-Ki2Z{5x7kd;5d$)tNw3VHV>9qQrJMd7uhsa6#la4S>h zR6tYvGl1sGS{s71Iig0NzMhHuw8C2t*A!vFJ9<)AsygK7dH>8=!SjdrPx0Al!kj~J zp`1LSW4$Z~P~Cq_W81RE_jI*^d3k zUre~MlWgw_gZFSw__v?*_;)z~#m2{KTn`Dnod0=lBU!~oUCWQM@pIhQjF307!Sp}m zU;fFY!!?*crL_N2e!rWaIm{Op0$)n0Wu2*&9W~u7mFi|^8Q0Fbp3=USxx2T=vgw7PxRUf3c`M z*(-ilU4zfOJ3f&EHIwsA)uo0wUh$`O#HFbG4+ovE@j;rOZ_gx$#Za)z?*pp27_NFb znFdz)Dbo7=zKqJl0P||P&^8`v?UIfc1}inh^fy9_8x}}t^b*xOT@G1fCWWj8LIWj$ z8Y=D7OJP$^a8E9|2UV`c%08OF)eG( zv?;<^W3&Ox0r{!f5M7mzX6VL56uvsu)F>zy^_T1(^=f)}M;ZwLrG9<1Ll3wo%t#Na z%u?gihq(mE(@GV#(QtL3Dj!q4b(VxC>*3eihYDWZ3^O< zQHMYoe`-^v5OAmwt4ee5^-~;AKyzJtwn!?4b~~Mqj+s>Zuyr&@1YTvhk$jQNa|Op6 zz?q1@C>RG$|LXi0rdFweVMQT&wCky$?EHdz07KUlygP^sQSav*VY0C$gPJmwXhXX( zQ`>0ZlU%sO(05ZfL)s;opsxGIl?m7pfA;8DDt^H$fQ9+`=Ljo;D&ESWX!Xwr@#)E0&0)z=(&xzR$(mpI2gap6~5&d~kyI z-<@HejhXqX16fXBsvFg1995ipwm@4^y*~58OJBs3gQukepE0*=#B5yqDkl5a^LlVa zxvm_l$toW2r&;DPEGZj0c}$-jEb#E)%<&HZsHJ-YqTwj{eHh{}WF5#a#}d$d&`|`{F9yWp5|jxB2=w|NWh8VZ3}zCQ((+0{e@MD}S`A<;yD@s&L-O@2^2( zhCzG>sno7Rp(iT)XU_A*S*DZOJMY(MQ{kn-tw9lH^hC|jA&URH0+3RI z8&E#isJQF3DQ6Ja-kD_2N10%qwX=s|YXihI5a4=m+c#G=>$PNMl(|X+DabZz`!(4d z6^9_d6sgjHn&N1Do@DTH^+o$E+P~nL16^f|ZAA%6i$)ds)vXEZa41GZl%|qcfLkY4 zdzi5dEO^F2K`D}Ow{E~vMJP4gR<4mL0SY7)WQt@l-`shoFF+)U(yz8F(^O(oMZ1hb zno>i=Qr2YU%e9p&<(4Db%Xo>r6tW1uIs!7e$vK>}%(<4!-WDiP2;Iuq%>x2ACga{1 zXBaw1MYPD+u>MLd(OX)TVrLpK_5tA=$S-I+u3c(=K;&z#Z0HXZo|mgM6nZj%ic@3| zFjf`@G|om%Hx3M#`|OhGEp|CY7!H^c(A;dsAWCFO5DLty>5~R)Mb3!YQMUA-h6=tg5~bFXpWMK70IX)JWOSwHg%~4D{(Bv> zKS;j3h7&`h3r+jg0mG+2_km*@{ma;tDXMd&Z3V`ghH4i{I~1o$Zg%LFhW)#nI6pkY z;&g7X@i8los{tHvcrY5piMRxA)Q~Q`^Hcs$c%1RcI0sp*)n`v|`bTeI`ScXa?73sF zC2ykc`kF$-XURRmH0bnO8632KQoVB9qZF<(R{M1 zsId}X?0KHlpX4=s8f0jaNj;z6wh3}hjX2rJIZ&Lto>{V$-=AhYoE@KH_2GR7M_4!2 zlOn$yE_kwu+Q8r%jwq)sd&Mx-*q#gW63y7%d10(vafoq&_s?)OM=1)x=h)2`^PoFY zaL!UOW)@4ukOa?mfGOlA$lw_n3Lw*=1XeBYt)-e9F&T956z`WgcqD_uGyX~SR{Moa zi?ORr-|XabASUZi<;3unYz!@_rbyq(E7aNoq_7S;>7cWkeog@bX<+CQnpuGy)>US9 z4X;-ibrC48+^8~3+A^Z2*%T{TJnB7?qs+5QVFBbGz(uw?9xunU~{oe%~81tBXlGo8=S3cLddJGjYq_+2ibXFYpqA*gflBu z22HUF!oi~;B4h(V^e|9()#32S_N82>qS4AcQ7hw+aOsUGWSh({9&S>30 z2#yIj&p^XqYiGJY1H--pj%b$Zc(cRy%?Zw*oR$-r!yPt$62vt;BLuiRq14ZPE6@mN zR#*gbL%XDK3pfo&Ojf%3j~?Uv`|o3sjT-jSFSC}!Wu2G25t!ds{I@D|pjB^?3r;mF zr^JhK!|5D)9?+Oes`FV~qw4JHlg!WiO4*J2-^k2IM?@)#=#*cCOsP^*s1rx|uzzGgdlIIWl;??2qfRX;!c`5QV&K#WQd(&{efeB!RZH|H>F1S4d=j5O zBhedfaB+5mH-2)Em6IHu$-r7k>3@|?t3JS};f=}Qp**V?sauzDc6to5P$`#2egTu4 zFBBu7PP1%#FVUHvBQ(69M&fqQUEjiMclQxD4`1|37aA|&we~DK4YOkT@E(@0|0(F? znT^lNhLx%CwMqG_Iz;}w;(Y=u+`D&(hvz8K8STACOY7cSGuZmp{9B2BllK&jrkN(@ zNV3t3pY0~EpxfN3YhK_F!vP-SIA8qw6~dL>WYJE(alYvB`yWyn=St43Au(3A^L$?1 zOu;K%$96v(NY7-uQ{Ow<9p+~q3py$fD;3#NJyXUrW>PrRy8c&AF`_D?`7@`4a?07_ z@EOvRBbcB_5n2Mt3z?$G5FJYtj?%A5my|AEhj=mYOJ(Apk5kF%7qy5(Njb}FHyMu# zFI&v!<(_y}m*UgODMxSglFkii=9kt)K>au9R6cK?KkuU+m%V&lc$NmEzi4jB9E{R9 zq9GL9h{l1oGUJMFy&G_R-RGVfIlu12j0$f{H}!kCId-h;CbVj(L+xC(jc8!`Zx`TB z@}p29e7V_iAx7y#H}}lN35a*lk;SWT1SJBJLXleQn_pef#8g?2ug*3L6Pg41>^^FqVOWkj zfvL1t3lS*^RKYXPu9;C5XncN6w8+gvU~RYEC^D;Y7SX`i4ry9n3>`ATM`7+`jy9z$ zUSXEW$EL9G`|Ef+tTUUG(9Fw!K$N^;yh?9|I0pJih`R2@Fzp2biiD6TA{Pu;_Qi0l zP)}9S2$WZ^rgp$Iz*gbwBzvU_tjgXgvSsf9Gw4%z#z2h$R_WX*z#{ICNiaqpM~ny> z6J+&SRs7v+e?jlDA!s22$0MiWA#Lgta*sU&n+UZS*uqt&6H{Q!@gRMWP9p$_bbkSA zDN!Fs{a1&kcvG1+A3!)Sn?ZH+wx`l*S>j~iK)8 z&idjlBfK7;JbZxP|EoX5!}%}sy ztLana$Cd2=DUlpD8dzChl)W~LH=n%q2=9H&C4DDYtYoy*mHW#cnw7&w*<^(S947=l zxZ2ZbyqWpp99AqmZJ@jQ3z%NouSSeaCy9r2Rf;JTiH(h^LUpRVougtUEp4Q@RG;H* z?8nB=9OhcQaOJEHUBkzHmVA%a(mUr0XYYRmoXsnC1er_mL1#8?g8_5{Fxm>%C3n3t zr8H;&K_>dMCKwaq6`|e0(~Coe&!CxQ55NAd0Rl8SwU5^OCJd(J^A2pY`At3tkehCm0xbA7j_r9Kn+vfBs6rgckC0Y? zA_&ydja10#0wAh#K}LYx00||KWW6c@b@9mR!1$DCDXw6bY_b)pYM9x9!2e2#MXKi^ zkaVaAB$8>YP9{NJ_r;>BER900UkVDaTCEg@4x69O1<<4(rs)+I!^}*CiEbQf`=_`T zfGM4kXv|=W^B6p-)h)cGh*hvT#K; z#u}#4jI+`15$0Okwvw-Uo276$0*ohJO=;m1z$GszhUO8*tpzP;0GDVaAdWNebYuRJ z&r^26C;iJQwkfhK{bNVtqDX0x#7jsGAAEpG!8{z zTu@~~n^fgIUNsy~YGAK4$3k@nu82vF5tr5q$KH0 zqQ9lycy1{eKrqj*24Bl><7!M6g}G0ql=JNP9B=&W$N1@oKf-)GL${NSnNhM5%*tQ* zzj*dciGSHTlE|Sx7&G;qD?)vC_!$4?*2lQ^>K8FyJd-u(;R-bzw^hdVvbe&7${8rU ztYV0;;ZbndqW4ZyRhyJV#NtKktXPH3sRv@Jv1TCTP?q5Xzt3hT_^UsDfWxz$;z5qo ztkL&kwBFBDB!e7pu`n8XVt||C?~0}vH`XC{5LV;^Sw~{cd2Vu##|#dqr9-+ zdU*?f`@ z@_d!1-Dn@(?sN6#RVsVLw75jcI>}Z7+a-7QRd-3&_h*OM2$|(bh!iI21kZSS&u7r? zOvvEQPtTTww{kRRCK)ZgR1_>xmE6WgnL}rI!7r{*646efC`bK3mb%`;&ShhA8L!U<um(OwxytU`$SS<8R@L;zP$#Q zuY*DP*zDP4KaEWRRYsFg&Saq=d`$4kcnaYqC7PiZy7pq5>4PDXOu2(AHdYY{a4s-d zSUB=its^ZA7)U_~xF^FpXrSVe0r$SP9(olfFyUFI+>~(DS5UT~)js<|FmVr#E-q9^ zp(OKNk#OMS;&(VdbG&0~x(&F-H7x&J9^PFG7m57C~2{=6y8M$Pp41SrP@t z(bHh9gFse9L`3TP-VK;1$j9e|Uw`Nk@j96TmJH)sS}*}gFqjtDH}Dk*@nM|orJ1kn zx%xvgIF@mDZS>C4f>MhJDb6SPcp`JDL4Y*`GNTuu#vs&J-@6x3=fppEi7u2Q6!1au z&wmRnR@$k8J+M|uy;N^f3eQ@uEkY$TUx3he{hs1=)aSHZED5|VO|G4V^Y>_6L;I#c zQ)pkh=MI79rMEYv| z(16W9D&9&L2@UMZuZBbZ-drh@>Ye8Go}jp;_?r-o8u8=o>F?g;ka%f<;!3TwImcQ}VX7PMZH?}a%3d82+R;l2#nQ3feJg&tBGEZcOb}2BBiGepq zFIQ9?N{iDOjt`#U!DsK|qkHdS-k)Hy!<%Nua^8s>^`)v=^Vdrnnnq|U%naU2PeIZ6 z@yQb3d;3%T{mWvI#l}oIglAsIz?IGZ`T>6UR>Gp^!!%uf^jZ)>3>e*pV@hM- zb8$Z>N30i%zEoE$DRI0`-HX_K?nQ`iwiq>>YBrJQvrh=W`q~(O_uJbw+R)dwIW6(< zWR4H+9pmGBhuHvH;icRAc>eY-cC#_eX^4JsDxe@|A&@iV-8KFK)T6C%ui0Rxc{U?TZ`=OooB7RF1WO&k<#!H^2()Y&{lY^Nl6Pjq+b`l znL>0u$?thCrG5(HZzfa~2MMu7-ASo?F*}W@PP> zjYR%UuKm*R8R=vQ$3_oLgGUI>7_^yj3IoUFYm9<4!5 z0qDCIlL-ILa!_lV8qulI9Y<1|kPKAkLruuBvXYKmp&75NR;Rz|I<- z!Jcml6Nsphv5u!*NgG%#Ns*~x_KgR;;T1lH$_VKK1|u+!gDm4g7%{?J>YyXBMq|p@ z0x7Nqd=8AqaWk}Y!9DAO1##krV`O|Gz(b9Oq;P2O^Ayj}t-yTf4K)0q2;Vq7f`ilB zjUR@67#x6R?L1O5FXz-~BD)$%3YhvxvS(sZ0q>6*>hCSZFDpG;9G%&~aaIIk6+>Cn zhTrKtl3i2CK-NL~Y!BDeA=!OJG0>Qc{@7d8qQav!9DP)QP|IO3Svef7Fj{JcUN11v z{UHma^ZduB$*K#u5 z!TI88zLpKp8{f{+hOHvQIoeamgs48vsWMeo- ze0WVKc|AYN#>q}L!1lLNNlV+_;KC9Ny1p1t{d|U1#-qjg89M&U(U?ibuMMikWfGXP zF;k$C6er{ynvyp)_6YxYD|-W1beY*6oyf(#l1C7POHi~g0 zBiEWQAL^c!N%`B5f&jDGx#+26hPATilap16H()QXsP|!89N1LDGo2B%!$Hk z^cxM9`oZjJxkuAq)Xb_fQWh{;ya6z#BU6n-n%uDBxhu4!2cp`*;i6EqOM;WD(7+e!&pOvfkS6N zUvzS-orWcX3fLhk=uI)>CbowZ`mslZc}3LN#+u4W@Hd)U+U5*4Z5etwv%YRzidsRFx2 znO992W20mt@UADBi2y;+#BD)pdQ#X~SV9Am3Bd|f$MD!ibVB3eHcCbDw+Ixbux{ z7>tS{Tv7&2ZdGt{iQ(^mOnBqoqU>uKr)5d;;`(Qt_{FJ+lcEFkB?`r7wVa)a`fGs&v6s5N8^zc3(W1mY>*s}SQcT)A`|hqD=AQk(&uji~9Dz}xD1KbocS z%0|j!%;fi3wxo~Glhdpaeo|B{fprj2YgpP%GN!QsH~F~A zEu21;6=)K|H2y590s^pP^GQ5=91THoWC)7s4v<1<{9pd~jA`{v%aH|IkM%0aR zuj?AdXXKXRn43oRIIo5*DKHSUpv6V>SX&|!24gN5u&Dc&(1oOtRuWQRKWlx2 zd(3#{Y4wKMHiiogyNGWWF*tp&F);krMvac-*>VFUKOfhhBOq?MeeUMrMqmr7)Z|3pb2ex{mqhRd)!UD`_-`ZqscF69v)~K4 zVWmcZwOX7ey6=EWlm>z3s-nDtD&?$@*SNg$7Ah$;oVv^~8K+5wUB9xvYxT6HDC2;p zzF7{CNE|(DrdI9hOKMXr1W*o@l<}*9OL3h@7mI8?_?f>xCj8DDGyKD^FEQOaMaR|G z(zG04$z@&%SyAn-D*G$*sg(};YP@keSjt8#N34pWqsE`4V?xswbOow1USrOaDjPUz z)p5gFOXYnaec4GQG?FBRZG{JKe~KUe;1p-LgwsVQg%4zZOsMp>)F7H|j-Y@F3Lk+H zuR;EMaxla0waa+i9irR$1~zZKP>jx!`6TqO^1Ac`PI;qp9?pnUp}+2tMqu^MrOE>|fyPCL1$V%6LwLFuofDn&KBf&X2VYn>?JJd07mi<0^^*~v6FDaUd!tL%~#giuo<+^5Okx~$yVSfJFhr8!|D5rvqg!p zkrP9?U)wu5t!LA$?Imue6{8_x9Kk_HMtapa=fl)>tR%XT%J?Y%DZ&jygQ=Cr(MYM^ zVc*#q#nBlG^dHBnozzrtpiP&nxZic%+C1ARRfv|sv$%W>6WRq$&fCJ1iho_u2`+jS zNa-1w2=ETD8~1WDaPiU`Z70PzKj2OWPi~V}-7XbMEMZB7>hMK!v*f{AN|f~l6Vmn8 zRG6wZSE{dd)X0CWETvX`Q11g^1)w_NBt{0R^3KAvIuoTvJ-I*zl2ocntzn{rS|dKP zy(CVin%*YE=)G;7}GSjc;{{;354|31&2Z}!>&1AJ7Nhim$aunDLTq;L}#0!ZT?XOEA4{$^khh6mA7 z;Cl*(-XR6L(72<330e`0d>?ukze6UrQyI}Z^rL~P-&6IhsInIKD52iR(HGY3yHLWm z;B|HmaPIbeu4&6*-u((5*;87n0Ph7sbZ<?_=2z7_btwQOhWo%|O}sndI-2%aC$!qR4Xi ziIw$ovX0HG8>vCh_%_YWcXHqedy9GBM~w=Vp=o+re*W*_c1angYILMj_f7FYR+Z~Q^YZw&WqDTl zeBD3Ov3;Ki;YVwbdC`^ErO_`aL|!a9#=OS9rkTqF|s(zpdWt za?TMpuUf{1>CPpbfBK2>^fLa@tC{Bai?LQ-JiHaTtV?AXOPb)Hz6JcP8Ck3W0J)lRkP8rdm(tyZ;p{#c@Bs3^$Sb~9}L>E(pKwUeVWUFA^9*FVX6 z!oOYC`$_h9bwUq8_qIP)C^<&>EZ;agJ46582k2J40gz;Wo`FSqkN__QR5PX>`iZDm zAvlnt1Km;i;F@b%Ww7dDs-v#GQZZ(@AOIUQqimF(&Q9b|bLElbIFhe%K>(8+0|5|I zr_2zMR;oy(LGP8Pa)nJr8B*aD1eRqIqzeosYTws2k2JWqj;d5~>x1)<+UfXpTI;Kw zy3cZWPox_!WH21x|J=Bf{7<$PLuJ++;sIEmt_B|jcn^)#Xs2kjBp~JqyH~a5GRLS= zy(K7m$q}_Gajq;ChGqxiq{66r4JpgyQj|mzIq6i$(EuM5G8lREV->jYh8Zw!~zG}YpmL!$Os*0V3djU#j_)Rdo9It#d_ zpLD(n!E0H0;-!~1asKouD^)9ji5MI`h2aIH3JXkOE`9R#Zj1~H@1jV=Gq=blq3bQ< zlYU6nCelBG!G(aYWeEz7c8%ap@cwk`LWyjaH6PVLMA4jtrffVqR`KK$!BajUG*$mA zrL<{Ply^3m%Hf&4MrP^(o1SJ7Otv+o4C__~k;45{%H005drN%qY=QsyPLEe_@?MWr z(&0uMd}hv)UEqQ&9Eq8gg|-sQ^HDKA*c;DtB8jwQ4ZD`TmP0Aa$@QEkR3a9vFrAnA zrhe}0!v+rxy@o*m}v{lXp=@HOJ_RTD^F|(BOZEU&Wp3Jgp ziYJJ;w8GKJ2Y7nv|AZS~zl`O^W*$Q4%D?h%p*=>2QvTO`sgf2}jGB?<+jDehX+77* zbbCoB_`E9D+03a$ZzSokoN-f6xXF>A+!$Bx>I4UQCryb6R_0yiSbn2Pwl~kq?)qmB zpWyrVjBx&>sMX#!TcH6!2v%DXOd0Tp0Mcj%E54q_XCMVtv&E zd_PTXe32h}{ZqovJ|O(U7i&c_<$pK!68@X-j4=K_;m;lr&X$!CCE4+xRyx9DJZK}M z)0c9$fA?C#w=S_UlN>Mde}@?#{vaDsANOJyQ7{agwHhFF3jwbor>V^!KS4S=GbbCx z2b6DHBv7P01-7lcT0x*)D_`=iF^uwju6__Ni7ZPlKy?)MnIjB*_RMHf_s{TsrNY^& zMq!+nR$OHV*ZFKYkh66{F@4O86aCc$S-mJ~v)w{f3?WNF zU_n7yDP@}Z5Y4hCp_jpD)e8r98=9U>Z%HnzhY-5J5VIG-ws_QgyNmDDJ`6=29$nYY zFOH7@p9idLbB$cMf*%x6@&;3C!-J+omR37aMqmm}mwe*x-RZ+()=(HI8ZEL?N#0gewr zVWn6}1wi!XrU<{J@HQwmv1@yXCDMT94`Ta_d;eBgEFOXKXd=M&Rc z>YYk322dGTz0uQlWR+6r(}x08G*dLpqf`xJRS-J|a8!0wqKG6=WiZl3A_N0k83Z}Q zja~QNSN!g20->`MaFfD#F`Pq9t>`IIj?jO=J7cE04X+RM2iTZv69Ytzj9-*zvZo?| zj2i2e&SA(YOw6x%Pfas7c{iRIE|bx$8%NvMrrBwqqce|=i`PesBaj)!uDq)vZu65r z?#fCO%b(p(61_>(5!5IO5qjr41|7kV1<#kO zHFY%|t7K7ys7?y&Tj)?rSrciI>iSvW(yJlE8WXb1YZ1fg&P}${mC5Hwt8INOxW4tbd`k7{Cy)EIvd%&KHbcUQofd^ zsifO+R1OpAr&~%|l^Z@ay{sZ$U5i>Yp;*jCW9(}B8JDQek)ZR3XL#!;_wh&HdxG~* z_jAl>A9EV%64cHAeLX~z4RYQKqlb*z-kF+vhM1la4-u?*mCdWO_i^;_P3*q%YnVmioGv=e>77#fP&TEz0!VONd5| zUo9d*k-}17+J^b^HSk=Htc~nIL@^Hg?Y#D1sK~9LU5W05HX_eO0eFA*zy2%2bJr8@ zT!kr$S#;z1E67F-@N+o;^e3MJpPT{5D}^VDj={F|rTlj*r?9N5!Bh1p%@==g5WMs=TMRcXGCD%Avai zQC&*Lt`0lp|Edqz7Wh zp3Vq7b!w4T&uR*l$=X~vvGG$-o~$pulHhBu1Fvn6CO+FD^`b;}Cd_Mer>|*TU22Iy z0j1Fysx#tCv7(xcJhClYY~38M*j5xWF(SI;MhkQSDEKXcGN@&qOTVKOggbn(Woo=!%QgEV7T#fZOGk5Oubh4xcNBme3?D_ysq!Xd1%wNqw+$SXKE zd|XdAU(T0^dkv~F?ur7!ypj>O@&16Lfq^-~Y2H+$sOl_2^G$JwhHpT@9~jDT2?CSQ zek_8*_jG7Eh^?_gRNHlCWCx2QGH{;*g?_cISS82CKrIaduEd8?m-nJ5^kTe4dXOUKSMe&yAzl4`c#3Sg*+P;s0>=%0KL z35bS`uT#5*Bod>-i_B00Ft~U4+1u)}B3AZ@u+u|QgUg=0EZnK&ldtNYALg?CQWV%^ zse47$?8pGA(A9C3_6Wu3s4{~}q*Lp|6y>z@HBYIgBq?2114R^1-S97k1Xg-rB!xXQ zf&(6b2;@sumQZ9o(sn}+iW7OrT%P)Ij*f5%-FLE+Xqw?MImpULzHgeA`LD-zj-YJj zd2LTlu`|u@n`3Nc17~j&rHa?~&ba(-?q!F_W;Sl~?~|>p^lx&cr>g}MO3oB3<7IX^x{~UWS{~UIozm}EjRPQrh7x->?u9_bW5DXK(Z zRwXk-{RqAeB`T9fCeIRyQ&e!BTOWy{Sb`q*doKpysP6S)YdWvl;r%E0<2Uc)e7sxI z6YHV1l4ch7T`6q^UbXg8;ULU#wHg&ZQT7DM-m%5vrL3@CDTiq~uZN#QWAum;#mlxQ zzV~**7jF0X&wedORVK>UswlXVt(Cu*BZR;D67a#(99=oik(Nb0baNvI|E}+3Lud)x%{w$TKsXQ=kEarRz3&N1)YkC8)h?GHGq8^s4A^rAEnUT=vjR zOF@81N!6dvXNb{kqmew3XU`Uh+F@;!8gxiezg-`SDfcRW*pM3HmyI_%w@qD2%`{cF zB!iE25{#r|dIj%GtVUbCMs~lBKSY}3zZSLzN&7@mH&eMw?d094ff*@Hk%J3~3`E=kUJ*y8HciMEKsPKZFw;PpZ#IBI2devLo`ll{CPOCpc_^5=46ZZ-I#z zBmy8iyfH}RD%7KKB`_*qdc?gf2;-%`hD_O8Q^MoguzFb|PMR@;0S>ugSf?Q{>)ZHA zxx7|;+j1Hv4eAEnWl`lrT^5~jmC!K@+~YeZ+~s-bO=8Pj!|wG9eTQf0mY zr)VjPk5+a((hvq-mq=ipkI!+KhJ=p>!IXJPTYY4#Jq>MO!)=94grUuw+A+HkL%zTf zrU*0u7uYMQ)n94H#~E=BGFC%SQ3|HJ*>itogu@>lOQj`WwSG7*C-nAeFb*KA=l94v zDfY-6$~erD_Q$zeB zVlY`5;|<_cyx_~SpQI>-MM3NZ4_pq^=)uwqT;@r(p&`yspj*;{OevSDX41ArZ2}zP zIx6fGP6V_J2Z|rgr-MmWmHqr-PBkrxH>XeX{3oS?7m8t~$~b?YqzT4+<7wv0C)IH> z;(bIk&%*R1D}@VeW$ke%E1;LRbF^o-!{!bj>c@OJ!(v*~rxsk8Vp$D4-Z1|7*(p9d z$Vw<}VV1UWmZmuGrX`gt8jnRGFOiuQ<_k_W>m@ZWU{BzCmDh-T?}E^T)7#nOKf{xs z{UNrl{DX`$(;BrX@(Il=UGUkw&CnDz{p0UrN%ofiS;QMdko%0-J%EtSWbk7n5W<8>_BA`*gCYNs* z$ezWLBP@MUk{43oxSM_{)5z2vmih|mW?CPDjUJAAo#rUbKmW6A5a&qX-~BeQwV@8< zdOzdXwQLk$%SOw$5Ix`_b0s(<^*5%I!|d4n-Df@iO}2nfN1VY}CoqzF6eK)*C|~RP zWt`1_&$2OdKF>3J^PO^Llp$1qG0bA(RErsFH`~i}D!3Ov!IvNno?bID5IJ+YxP8Wv zQQbc?;d8V2AmG`m?w_Id5MsrP10y)ht5Ig8z-lk zI+g+D)fVd7M0n7!kKw!%PS4H;#v)*Pa2TT-ARg(Wga-J-!Uz%XqBAlU>Twkz419PU zZQuNgdyMsESzE#A@hBPA`sdeJkxRonIgkGw@x)0K=OPFd7M$1Fr%c5 zqlVvlxRRp6uoyTYJg43vU3l17ljo(|o}7SOI`IZ6S|Tt6Qh;?WIFmjo)9~=SjjRGV zES50}8>+xX=O70q)*EB)q9s5Hox3;MQUw|$fMI&{g)mHbV2$s=%Xl;?YKRtQZhhgb%_{3gdT$HCe8ktemV-`@GLhaiSSV^5+c( zK8>(OiqolO!~CVBw2#U?Y}E9<6P}gvHbQeDqi|@IZU<&l6)M1A@k7_4^#;X7i*rCj zV+afYgA}B-`QdM9THDd_G{_L1F;GX`(n0w;Yd@}7!jw@HY=PF=0lD(;Lvvbo$Bd3m z8D(Q_8+?m0o|JMbU6x2qO6AOe2pBUW$R}=R9A)M8@~hi8eZtY1In>e6M3|B*-Em6p zB@ELgI30$~`xIb64dFOG*U){3t*ckcftQQ(89saSeVm^>lRXq-fS~?q`VFMd2;s{2 zYuW~%O*6_y5$B@wN!QcOZEWT!1Rt!J_>T|ao6WLvy(kf%Wj2_4eqSsqPYS7lSrGJGr+SbyrJ_YH&}BRE1-bXfTV1 zF{egnt#sVgjqhnJ=k1jH`eO7I<45+2@@DYvX>RRcRetYiS&YM)l9VdGvN6fZR=SKu zhUt06!TG8ltlTr-Q7@K%F&Ite;YeD zzmEMczlyXmszzuBgQ-@d7VV%IcXl_7#GzNS6)K+8$W4zY?|qEldFwGwH?QOf14;W87Hqt0fdr)=a-xD#9KjVf zC%pP$o)O~d!3bMBS1~{TEJuL0GMrvRIoMO>R3Dr|3M;|0QsA##$kD*#g#YIs^tgYJ z@Spx_hZ~oZXJkhH3W0eDkG1Jl74Rq7kom!3kAIo}KH$jJ*wDS=uOw}h6g;K@4j78w z#p7HMm#L`T9Ochv4<2Fk>;$%9i>OIGN5i99MRXuxV8}s(v4`J+RtCg1xS$z_On4`1 zzcMz-Iaqw4=GNv`i6WlQ&g2ZCFb~-<#txK|(^WHmm1#aopP$ZME5k<7r|t6r!!~qD zku>&X`lmjh8i*wA#PA{NT4BC{_Bb-*I*=(QzE;|SJWDokh@3OliFhjzQp1uv32Z#! zb8X7U&`NCtowv5@qAbZAJCl{vpps}r)UNq3)vczSiMNu&!w5`EA*GQNg^?*`l8)8v zhe)j|mKs5$6RZt+g|YzToU>FgqM%K{3?-_QiV&9Rt4Iqq)?5@-Xk`2#?u_7$}r=@(<8WjRXl6eO7*0>GTsLRsDWc~)Auc&MEr+xA>|(;SIS{HWNB|z zzW9cFcOuk%ADVW}e_b)qR<)g8Qn0%u=~LpQ=(Jc1io(m~po`&944ocIJ6a68mpK;r zaO5m?p*ovK7Fg+8lzjk;VkBzSH#Kwwgmvv2`lN<-s`DpcXzp)$_9349^#2X)|DUn@ z+_hTuG1bC7EI!JHaf$GB0(#b)M?y-aB3S}FgF<2{L5Py9gUKn2B)d}O5uWUb0|-TGId7?6j2)J4`l zJ-&tAE1Ax_(`+34LdN^MRfZJO3bLgOjfX1Ur5ldaWJC1XX~Mtz3Gm_J3jgq%9lrE@ zc8qKbT_pq=;rJMJ54KHCvmx{TagRTJO8Cn&!c+czBF~nHszkC@!Y@khS#7kQ<5NpD zGlgHxi+n~k-E8r}$LN;oB=xhN9FLr7sK_+=rR#5K7o}wQCbG3PUQ*LWbUNFDxY`h2 z>lZ5x)U%Gj&azZ!Bht0+6bA>>dO)!kb=h27-LS) zsx!mB!S0Bn&~+J?)jDgvjxe)fbSFY@TpyB~3^-a!(Z^qv!4#C(np<6&fw!yoB~d_Y z_&O#ZwLn#6wFHmJ4GL1AQBdYgp>Xej8Cy0s{Vhek#f4yklw($;76xC&sO1tVu(TEiobL#Jb#qLBuQcx+l3Kx*bM zA8c&8XCt)O8Un_EDe|zuOa^dL*n(`|8)=_$5=6~&aZi=^*p5Lvh(?(n?&xPxk&iLt z`PqS^B#LlK>vV36-$!5q$JT@l2z7s8eV&~G{3_{&0Y?gKQ_BtZUf96w*(nw$XK=a> z^HqaGm2tRoph~mf>lMT_Wwh7DG@wZ z3RQ^=Q7siPVN5#yP8?lIAXNz$8ke-18IPlCbPk(TJ^ZZebGchS6nHx2h)$Qk=LpYe zv%r@9QEFr^7xS#7Wo0TymzR0$OIGgtMcDwZ&Za&JzJ5@aIDFPw)f7`hdNamqY8^i! zXPpSVS5#N9I```5QgO@n9`G3YVx;I<(w)Gu8vGSb9E~XeqG}A4XOqh#6<09GI+m)8 zs3hR)v0BxGFlX5?Tu9Vw)%Rim$vzPZbYl7IeSsb` zM;TvAu>>|}`ZLtyT`CZHJj>H_{Pkb_2!HYD9E*+1U+tf4sK1rq`cpj@erf!5is z&<%t?9O3AABS&an$&RhBqu=;dq{&XLY8KY5fPED>wXU}qHkx|I`-+~OB>eeXz&rPQ zeC@e}@4O7WmJOThy9t{cC3t7`OG?zR=RGpO({sW*hro}Hdb~a3qiZuhu=8N#@^-~* zBSi&9GA2YF1vLs;NPfu!9mvaie~)H zHWC%ZDcmn@v~!G5^ah*{!}Yl2xY0WP(C9?b_%VD6lN*pegbQjy;3cn=T`-a5h6okdV|! zNzT+rr>%)_s0eSCmyC<*;Z{0N?M%lPVVlBwDC@NKL28%NDcpS8d^!GNot&uBW)~P&^ux&lG>OBeqE$PRWbramfxIegW;v4N(0h?=WNUT zhn|i2qWD8#BuHyF27;AA3tkwGA@Y?0Q7QQASysx8J)iC=;YIduNPV4n#yTYxA}LSt)whq*Q zV6xp|_s$dt?;XHSXLrcLBMoHV8#p$f6?b}n)@G#$5FZf&%W&Dhd#fA_`@vuSFe|$A z%5w{#IXbf}UPLMp3)^|56vjx3YpN`)it@#;IqJ#kh2Fb* zzou=Ll(sBOIKO?GX=)?GdYXCEBpW>2+0)FaUA0=)vK}y)=P~Qgvln@h75kdvRw`~O z)|;Sfv998a2zpI9vtN}DiRqTydp&~EODcOIi-K9`lp_VBqG*#Ch^+q=87Q9dTB2Fz zT8OW=C}%hi+6Yd^;rz7z&PHA}W_rw)OGz>7i$SCNinM5)K2zJ(bqNG5Yozm5$AhJ{ zW!TO?{nvQ-hfgv4+JBDAuYM6*mnLSEDIYKPS|{bTrNQod? zIip7-JIWO5F%lfrTA`lH!%@9OZaOQRsV}KRWj8LbQ}!(V^e1oPU;XeyoMvNY&Q;s` zK&!?qQ-q@NE{_@UgUUkbg~R`Hz6u>%G-u1b2^F? z1r}p((GO%#BDM2VoyMsiCfm$rg7RkoK_7_GES+oJnov`I)le9|OvVFo#I|bdHj?v1 zj|eF&C?K}Bk6@6XS+CX*qQG}lUrvKI!Q-$wMj>0tCYfAgdGQ9=~K491Y%&x!gqtnl7BW75Q|gI z8d*94WMkWzve)~w464r61G4${CX#A?elkR_I&1QnwOh(?r}BtqB5zxFQ$BnX@Z zgD@NgmLl+5lr*%OI>ickvOOcU9W^?1&rz}=CWEixh>YKe0*+XA<6s>q>^}jym!O%f zv|9{V3eBjoVBce3igzST3eHRt!rXLiDT2)n7HQNYKP^XfoUY$Fov&1jTCNai6BByjBBY|HG2XNwt0Qrd^&&jXkJNyCpg9Hf@C{Q9Pacn~d64`Png|sYQ z!r{zt&YaWtU9Nl8>O=dGJ>9)~?{%qrt*TY);(P_Smv?p#8@v1cMxWD_Z-&7^B0KE- z9A?{Eu2tON;QL{`rgWq%CZydtQNFbCht##R(rl$a4t|uv2xwNRj!ldC#=b}}7-jpq za%%U8T$`I7t8!SVPTMhIZZxUY%#O20XAZL;q&cKcVNp>cBWTXsrdpt(B1F}jv6n1h zF6ZqWU;i(7@jreEFaDgP5#Rnpxctrsu)2E(uAbjv3TR|bLD zyyi$D#Dh90N;7)ksK6s$Zqzm2GkjUuZY>3Xu}U}PzMcJg4L|wukKqSD{RlP}cMKa; z13gN0lf&*9hq2CdvZtsSNGBpGjr5>-U+p@s{{$Y_{{}8sXE5=k=@7EWAC%4y%4%gB zxaojVDB$P|z-U1er5lF9Zi67lpFOh8{S|-y`AgDsT_uHV!F^4#Ie4 z2T68=<H}TQK}FbNq~VZ&_etXbAbkOB zwrx0cj-&3Z$umm}N=|Juq~#M;X1B^iovO-kZXJ;$l_1ZpQ9oc|h>U=8%GjtvLg=L; zDQQIWjlG{lQ}z)8u)NIiY#TEKa|{l;L3yPRsJ2Qe`y?V2jfzy&i5U*C3docrkt@yl zgpGergcKtMa6A775c?V;!DLiJKu-O#|j~C_qqXx z-T9y_=#b-fDVatt6tl$4FeaGA5E{Wy39_7FY;H^5EyI2!{DNIK{QF^t3_3Y#E;PP2ov z5lwZ2nxNT0G{AH|QD6Z&fIajagum&vSKJbWM z!$pmt?&)wJCc=%r`;UGLUVicgeEG|d%^C5s%W}F((T)7W7SQyJt)K70boD)ei+5Nq zulQcR@9>sw*w_C4hAkz2(VClL<*x@nZhZ_@<ty&monvM#ej<)HmdtB z!N;0H$>t6X$0?)Hq94-CmRFzO%6J~`4gXW=E!)4b)KrrNUa<4C&=fZ*?JE{H>baI| ztnYbl62+pOI&)TY*NY^$BA)%|$hmQxR@5R}IGcjTB=RK%0*-e6j-BO3r4Kx+Wt-ST zPGasyO*zt5EW;U=^h=rd-qWTuD&vucaAxL6sdDkww zgRfxPtbsoJ1Rg%WhWqK7$H|7;*)6{qzUR;2{7PQ8aB*`DSGU)2eSHp>7ZV$FOD$_H zX;T;H{C#<*d1z;Nw0){FAF};PGy3tDLLVsS&_twG05ti+*3l2)mXxRs{Nh(1!%zO_ zpTJ*z&SSi|<;cw$KR2aJF*tZip2E%3(7c)>rGCVOd&rI8zK~xgwj*EcQ#joJ6b{$_ zoQ>s0MrA9#&jx@Ip+TtP6aGD;CjMC$c4ud=W7rbRhJr7panM3P5nG*?evdSJ@PN$G z@T%>rm*g_&;8UEzZ6cf8(N}Mz5WpQ@lgP|lp3MELuVMGIzk-z?9n zZ%%H5s_oxh9zD?)O`~Eolq&;W<3g1a$FZlb^KAiS$ui(fH|Faht=qji$f?qr-jIcs z&3c9>5f193>+`_|ixVfo3lYR~IeHhz*@qJ=ws{S9bTiz$(@Pd|4=re17yHW+BNOEJf|sV zP0c7gJROQpG)WQxCJSNgb3oPQ0%gnL&tHloP3GBXa#&tj}fa;^2|TN@UtIJSB8o|8PG zR)>=o!eASm&?d+r1m@g2qUN-ikfVWb8try|hng>*z|Y#ljL3BMr-pOrQ1*$1Y>=y> zFvR)S^2T7s(#`wq5J>9N{bqm(Wi$4rXowP!CTF3^@aEvr31&MjL-EqHfABtRIWqL( z<4?dW7heH)XU50dFz-Ocd9sST`>tyLTUg&3ANOQQD&>`%BWmd7J0i;#anw&y%FiS-P9-+c>J8+h+_(>CW@km9^ZlncS%f8H4ezIx(D^v{0PB z<2)JP4hnOqm*dI2+jDE>zp1*%?rn*%h=Ene;2zArd;R_9@~EXLs)J80FdXTQ5uym zE!DRxA;J)CUN|6Z3kSB)^1*r4of>IHvci=gW3g{pdtE|+sckj+zB2FyNi1V@a$dnh zIn!aJ(p1G9^bk#ulrwf{{`X%1e*UG>ampL{Z?5PwCLF2hfDXJAv2dzSQpEb#y2s}P zI4Z|rp4MQhB!a=li9aPp(Z}pWOO!^=ff2awb&tuh*_#FWou6?~Vk2=TsM_D-<73VnLKMR2WTj1;!0Rw8Z1kt< zTgZ$yhJ42-eb^Y?E<3@`xVQ<>j04C?gsyKkQ>tYg^*o-!2ra#}4HQS|Wlo;{RWwT}FrX1g+JF9|hUI61%8##!K#sA}b!;`QjFAlULKEih?SU?nny5;N*vBzOJuDrsB7Z~;E^X``9%sBVdE6gcYEAT5 z^XY$;`Y^1eLeggwJ|W}$!6$7&4QU{uLVxgNr?+_|zV>Wlf=)ylw(;vfr-(pE!+RLB zzhxig_@q;jdvMJk7W2cQpoSHM)BrSZx zhS>A(U%~wsFWJ^Q0;R*{+}I4Kv}jKI2O8)}sg360w{c~ZoCgV3-@1hb8;qa)#cVO|(zW{vyLqIkpVQErGK@>~AXcE-+b;xP-Qfl;DSvVyOEiL&f zWy^V`li1mrH*eM1f!zZyo3qoi|5777;`GpwuOT~nTEs%Od%x>@7^wjZU@3>EhV{A|%pa5q_QkJ!cQ=*GPwuac>o{KbHl!-=PJxL`x* zik+alOU5%hvMY7~Z?4!tx_-t6_Lie|TQ-6oInc9#`|TDUnKpKkCPjWG3_|KX`DY3m zjL82qrSos368om+EWwCUr%snWAl;? zz)OB#v4eB2Q8nAxtF$cD@EFExc4l6`d8y~_$f@tkbOfFanTICsK(&3aEJhPM@bDd(1ShWd>kFyY=sH#Ej50{~r#I^f97GNrb-SK+V}J1C}E; zw`VyzvpFzrId7ckH|z$ozxTzpkm;J4#5^JUb;eN^kEB9rqowL7R9o4K>V%XYEyu~O z?e=@CxCl^A3%HEwV@O9K+HWvR9qgm+54zk)Sq9MTFwAFa;4$7YoLw4cRo`Y0$9sYISeE`fnpKC0F0bAC86{O zh0mj$ca0Ezr7>1RVZ=z@YWH?tQdt4?#On>;(2R8&HvH%Kf=CDkW-c$XCP_goeN6qW z#cB%%{=2XAV23-_GuTEvLInoH%;w|i5dKs@3nt91buJ`22L=k3fig1b8mMSj&*&ZDnlmEo_EPCTJ2zi)0Z8dqjU z0ro`2r;xNc^nEDF|DA4zN4wMNlf=SkwhaJ%MGzYFJMN2XC^ugxzXh&!Z}#Z)QWL(3 z@*QQl__k;|0^uN)Vt5q|UD zx8c*DeZ-1->upPv;HYJPK`U@w0$%+d;Cp`v)4R{}(2&>)Xf)CLFY*cFD1aa~>@0f% z&g429vUhAC;1&1rUdlFU_b4lz(&&EH1MFzc&dnpg*6j4{zUFsc&fmXcLyMz5^BdiO zF6;Xeh0)Y6@HyAUL{O?Fr%9ZgXU_FNP))I$Z0@lEUml$Ogm|~=fS~e!DDh5~AMV8x z%)Uc4kRS0uv+OjT?J+0~Rqr5trl6Ga)VHfMcz(5l_ny5E-@SVdH!D+2dyZz!^Nv@1 zIeN!qS<3;K9O>F})JsqCmNRA!M~^Oxt8;Wi*!nsK-B3hfVpmZ(_Te@Mue+0)j%@KY zo$|&MIt!gYI$u%d9f!QAoul?A#U(T?Op(6ult16I>d}QWJ%|+5xsj-~8vPO-!&NS@ z1$pUXOb5r^Tlo6npwTFk-IUeSv~Yy9b$QDX9yI4VcmhYQD#Mbo3GDY$2xqpjhU1vL z7!L${(FtFs;Bk54u(ou`*RXm0M=-7aEu7!Jqc{}OJX@jDAGi|=kp9+WxWTE(M+X3Q z**)8&BU>V!9Qj$IbL^Ds_BTQ0WRVtqTs}wpfqeOXwCfP(&v@Spr+LjzL(oG=U;dXL z!}7DQ_?cs-5g2c~5bWaHR(aqw5)jz!(ij}>*gbq4^;aG=4q=bDRCfcJpzxf(W3#=Q zZd9%kdRwqVbH38D@`p!WaM<}iM}S5P=G?q}IGPx5It$_CFN_O}Tn#E5`m{6})O5$d zJVP4}2CT>pH2$sBGyl!)1cZ@xHk(c1BlJsycczTF9e_DGOq;ha9;U``wtaN^1Rewb zG=wkakEBKApi zCnkhPl>D6Xpd1+5tB8XCOO5CoA?S1+8R@XZN*6RC?gFk;O&ERvG)@Die5MmBwdX7+ z+rH0f1Py4(f1{{Ep{Oese2O7#{rcXaFtSEwj{BRrP5`wY4MW=|93u?_nsep(?%k=2 z$C9|rh~92?nxb(gDK^bD4>%?esWU$1J_v|w6in&AcMyy+Z~zYZv)c7sj2J?)%1pxg1dxY%{!luF~TXzD2?Oc7avzSE5+L-_$ie_PdQC`j`?A~ zHzzx+wnD=n4RWLN2R<=Ws0rJeQGJSNsNR$F0Pp_@ci&sV`sG{2ufd|mlnz3+@hc*koz8%6xeZlMhMu8Hph;Cv{8u z$C|CP^*zjw?C`AFklMcF>-QGrIkKb3FFI~O3LT)94LCY2OrFXdW7lHAo=Z(W59L~) zgJJ^g44&C%I6Kb7`I+oGhNP4U&$bsq+L zQ~0Q8FknZRvc^DA_RpzqNvFn@fu=ql{vY%IzvJ2cYgpafs?#sK7$$crmgnG(82Ms? zx8;t9ZpHEf6spfA^r8wjFYJ0YVG{baG6qt|dT2<`r6ZHgXtkkr@0c%4x=bRowj;%PrKF)p3ueeZyR^n$bkrIV{3hOWe~R2-+_-D z0{{%RaQ7EnzxCzGY7a;IEEId_dT2lSGs1h<*VkI0q;=d11YjXf2blXl{IuSN{6aL0 z4um6Lof?$}HLkf?7dl)oomC-n(0t?E;2%Vo9X3o53?69#Kk$eFk^;f}&4YLG<>N<) zRmdrpKN`Wt!yz1}+F1|XYK*bvRm-NxKC+es6>*dig;}$mJcVi;GIoAQIHf_R7v}+w zssyRZho*pW7|2T0cDqwWBZ_EpKqeFS=|KskZiB>Ufojw$(c16^^~z#$e@5- zmk%lI00s?^{7VV1f*_rAhgK3ey{rc7fLn(>oh$}G@B4%TXq0m|@1DbAHN%@<-9w%m z)BB+^qHOhRF8(#(=X>0rbD_dx7!o-Wp;hL^XWx4de(}RU)oNbW|3Qa5={f4msjJ_G z#RvZkrn_sygNC)SDh37%E6NKe)P9ftp5PanG9euHp%vBo9E2`4IATnJ=L#oIzVCBp9?|H|4sgGP=Wus>2dk?k+;L?5=4zqkt99=T<9EGT!~NSg@W?Qb zN=6oW*lWeJc`j-a+PCp`2|QV}Dp53*9_kBTCv=ZV@7SK5OMYutZVN~mWtEMSUYlpz z#IHw~@P7+c`I8#g2bEcV5Gh~XN!2+tNsTVAF!d)4yir^ZjS@@tYZPm?gIXnus+A{+ zs(=DDj;2PfT}MWjPP;>DI2QlpW|-Z7hwZBiZtq{g<;^o4-9diy2$E!POA)-q8Kk45 z`-0_tX%Rp1#l^XiJzDyk%W}Z3`)Z!pG^D|!bXnY|b{biPOM*t{0vEJ1Y+?~YT3zrp zDK_xt^%}nVkN+7iHb;}6luOJRoiYBTvaeizhrUX@G@9ucv-M}HYiUOzrm*zVOSE{E3V1EjR_uy#34ZE+rISRoXnBH!QuJFFzN zO{2ai&QCfAgZ^(YAbOG^6b)bw0HCKZinG4iY@7X8v|9U$uyxn2HND&0EEB8l4T%!^ zZLqQ1RG^O^T{pxRy=MxgrtQ|kDL!c@MA2Y3Lg+&nB%HNnH(lS{DEybbY$ST9Ai~-` z_fFFkT;N&J0DEe#J%uL`8ylr5REHY2Qo(~FqykD4Bs7}=e~gpa9m7_>4wT_0FX=dX zg(v(G8&tERQbDbIjaF&RPoWRAJJB3{H|oMu^1`jahTU`u{MpIN>}eG2oAw_8q~jQE zku%!@Pkh&q;4vklJjo&j=DeqjeV#G5nSon*)HH%-hx z2kvMXBQ@a$kd9pcJN=sTpaDiHr1G(DShTqlJb^J_(S5?ldHS@?KBR~`$1^oY^z@~Y zb=kHvk*1sQ`?vn#6>Q`n&CRaKt`S!jQKPU+YU6s~aqjm=R3ye!j#GrbljctgH&aB_!g>+;x@@ChE0t`*oL!%9&4=OqA z_nwe>89Js4tPMZoME0?$({m#gg3K9JxT66N9O&iud*&4!~m5Bys5>+P3t zeEbq<`#C#A{F@v%II}|pUZu_RlyF))mBi}Wr0G!com}DOChsh`aBzrNs+)-tiNGGz zptt=#f;&lbn^Gpry!5`qQDL_^F5q#!Nds}FPkk?s6)!kjn!LSWXXotp<#}X!SU)mduroO888rtxd!=z%Mqz`lJj}ZC3hW z{tDe_m7B!*n&xm+tX=&skP;`3EJ`-DI>u$7Q1*}W?CjAsiaDo{{bH%Z#`jvujNvQu zJ|1VtEh$7v@15@RL)#x3KcsEY=M1OM%D$Wjn07ya?Tb&D?*1iQJpWyoE*2UQnU8K; zOvNKoKp;zgqaAjMJ_dPap(m9ZUuas{!k&RR>qvQ}24v2QznoSjS^OPlpYL8z@ZOa< zh`-*=@X^uuM^ey&e+As@hb_GL5C0X;egW(Z6Z8HT9KAX4t8|F%ck=847gX3_lm=*% z$uZfC$~0x!7gPp#He-zj$ODAa0#wdimSaU2^q$%i^7CZTndRBJ@{VSm?6z9QJqqCD zf)f9~+Y-M#Z5W5%zu_q5)CZZa#M6_BlBUWAG_F!)bxW08|cJqve`I(2^6&U|>6*0)|5*qBo|b zRPYU@){6|JAPpb{lSf($ma&-(4$wpv3~lA}DOK!E&i>I7oVyun^LbmT@`3k#D247O z@F>1Ehbu~4`~4~NL+Chm$~nRWbT)fRk4S^knf;nR-uAKeRKt)=)W#Y{ZZR{AG#79H zj}bqScFifH)=tUJW~>zQ^%wRwKn0NlTX`Ti9fGT$G1x<-M8HC3v!(c5QkYy8S15^ww+l@&Fb^2V^ZC`5vg9E=G4r_KeqB7l_5t)tJwcOJiOV#7eDwB%zyf0IAi!Nys}wt1|Z7wX9C_3=+Cc>!Kp=H zfS^aV^=CW*eFuEdT;idP17I|w2O$RK5PJthoe=lS9dgc) z?3D@!Y*|Lbrt zr#NVJ-A4mVoG~+;yEddo6jU>EMIL9kj4M(0-IVzVU^D!nhyh|HHyo^5<1fboAK~!@2s3wL?r4cSj}ggKm8!ZBa!ZM#rfM4{B3M>T!m5t2NkG8HuH^o?WxR zRzea+k9*+tX4G`%@f)3_{5cxtjFBJgZP{<7(E^)cSe-_C^m22y3%$k+>3pVBG18Nr zMm(Pgq+-O9t2m6k@pbj*B&nNYc@0sz>_)BAm+xhly-@x|k2R2}~^;^QAF%gBk5}(@`yr-dGpTiva z-StGm=Hm7i9$&tJ^_w?-HV4_}a-EbIF?Xw0e}s1&6&-#NNn^4N#o%gP<$t6iOCz7sf=p0Z2%Cj0P_+26nj)7P4^^R zh{Lngs0-jTzU{-5{}SB+S)5@bhAkPG->{*7{}s@iFZugd>`lA^*z)(S?B#jj6>Te9 zEa&meU_7e_bBY6UTtHM>Lp?(UwP*s(3q8k1#yOo`XyienHWst-gChA3J*-unXGxn= z0Y4XC&uyX+71K=*s2lTV?q|yjBM)!c8N*kAzy2G;_JR$o@;SIY!6hUJoplA`?+YyD!e<2P_^INSH$* zC`3PWTXgJE3k0a#fH`e}$y3idU1c9|q8mES(*Y-i#W4>Y9UYiDM02FkLAIvi!fZe2 zEuO=Z&*q#O@d>P8v0)l~$%}owYJT`7>|b7S)aI7QEU#}fKHi7r#XF3H8-8EGVs*hZ zdI8JJ6`Wn1DZR>>R?|7zG3PQA$s%3)`7%DNSsWYN!psh-$?>BXB$2n5TZFF}0Kb;~ zA~NQMwINZRIKu}gi#6W=^-K8tKmB_+`}8BY+;7+?KehwKXO%7H%=9Qg!G2V9Ax{BD zAeLPiO6G|nkKGP&c^tTJMr+wuU1tzfcoDO`Nz>%dw91)8I*;P8NV*w7b69-gn&*B0 za435L%f_I=14AgeY`obQa>byI-^Tr@eX4y?z3ES=@ptPYw_ZSl4cQ@@k(tul?thWV zl9-^f8PZm2PD*d1qim4b7}qfEi)`QouaTM5pFJJpH>Iz|zIcb^iT<~aVkq)KWavtr z8AxYr84^YX#FTO>AMV~3c$CHjnWqFn8A!2OZbprhW*EqJrvt{c8J!HaVWdLQW%1U} za-G`L14$?CoUS@Yu5Q>z6j+P)2_Q`P8AjlDt6haQPM-GVV{8PD<3RH>ITW%absESx zATR{71A34c6nzD;ce+wT0@|t`3`Cp5n#Wb|*!$Ckw<+%~yX=0eh8ATyCu5vBj3%E; z6K>&X*&&AR_WAD>ETRtH0-b-TLptlG9-#s6*A8v-hjQ{ZDe7=exKkOoNiQ(aB{lq} z9EGR&O|Z3L4oi+rd7iD77WF!GD(kauNTco;BvhfV%5*v+sFnGc2Da6Y98cWu>7%(3 zzA3AL`UZYrqfYvFE$^bG;3knt80l{Hz@o{d>YLdlp zh^He9Bl1vmQ0>^itIGx4{Kh%F_{*=G09pdLi}z&7oU zjm)h&EON-EMXx7~P~pO(5E$!*=qcT(Y0|U9X0a$L)3i1+r$G1kpzp!TJ4Aa(bY-t! z4O9~x9an1E?zg(CzoXgVC1)p{K`huvxnqg)NQ%tzOo|wAw2O^`#o{?En8ueJ<+-|j zu4y}Bv>$nnM{#;~j~wl}=l3;e890rI?A3X(%~D4Dvl{wg*jb?nNn6gtMIC>ZD(*TS zJ+;^*Td8CWiAJeEjg5@AB04iu?uLq=1{s-)S5M?x@aAv<27{5BZbQ%5@Kj@UQ1u|& zwbATCN>9sYc8KNNCH$Dj$9BTQ1iQBj*vV0r(>dQSk+c;%99Qi0ij(;qrqwf8T;0NS z{T!B89NoF(i0jo7me(9@xDv-_l8V{t%*^M|oGa%2qw&n~=x~b#0x-Uk^322z@aFS3 z@aq5kUwHiUAHwSK1&?B@hn?EuWB|u`K^$oP?4`D;=@lFmVb|SHQl_iry7|OX4w^_g z1I;e@#^3uwSjYubn@kG=FilGul4O)Tu)`)rA}Ay3?ZsE_?~hPUjL+l58ELbFl+`{5 z;iGAqhUr;bI6O-yuu3~C?!ZQ;@H9H4wihqR?DzX8<0@OAY$9r7o!Z`>xGy?QOi*74 z?1CH$-;Ri`%ZHCxSZl*O{m_1D0zKZS#)O?`X>@)h5_ffdJw2c4& N002ovPDHLkV1l0I_4WV& literal 0 HcmV?d00001 diff --git a/package-lock.json b/package-lock.json new file mode 100644 index 0000000..b891fd7 --- /dev/null +++ b/package-lock.json @@ -0,0 +1,4016 @@ +{ + "name": "@elgato/cli", + "version": "0.1.0-beta.0", + "lockfileVersion": 3, + "requires": true, + "packages": { + "": { + "name": "@elgato/cli", + "version": "0.1.0-beta.0", + "bin": { + "sd": "bin/streamdeck.mjs", + "streamdeck": "bin/streamdeck.mjs" + }, + "devDependencies": { + "@rollup/plugin-commonjs": "^25.0.4", + "@rollup/plugin-json": "^6.0.0", + "@rollup/plugin-node-resolve": "^15.2.1", + "@rollup/plugin-terser": "^0.4.3", + "@rollup/plugin-typescript": "^11.1.4", + "@trivago/prettier-plugin-sort-imports": "^4.2.0", + "@tsconfig/node20": "^20.1.2", + "@types/ejs": "^3.1.3", + "@types/inquirer": "^9.0.3", + "@types/lodash": "^4.14.199", + "@types/node": "20.1.7", + "@typescript-eslint/eslint-plugin": "^6.7.3", + "@typescript-eslint/parser": "^6.7.3", + "ajv": "^8.12.0", + "chalk": "^5.3.0", + "commander": "^11.0.0", + "dotenv": "^16.3.1", + "ejs": "^3.1.9", + "eslint": "^8.50.0", + "eslint-config-prettier": "^9.0.0", + "eslint-plugin-jsdoc": "^46.8.2", + "eslint-plugin-prettier": "^5.0.0", + "find-process": "^1.4.7", + "inquirer": "^9.2.11", + "is-interactive": "^2.0.0", + "lodash": "^4.17.21", + "log-symbols": "^5.1.0", + "prettier": "^3.0.3", + "rage-edit": "^1.2.0", + "rollup": "^3.29.4", + "tslib": "^2.6.2", + "typescript": "^5.2.2" + }, + "engines": { + "node": "^20.1.0" + } + }, + "node_modules/@aashutoshrathi/word-wrap": { + "version": "1.2.6", + "resolved": "https://registry.npmjs.org/@aashutoshrathi/word-wrap/-/word-wrap-1.2.6.tgz", + "integrity": "sha512-1Yjs2SvM8TflER/OD3cOjhWWOZb58A2t7wpE2S9XfBYTiIl+XFhQG2bjy4Pu1I+EAlCNUzRDYDdFwFYUKvXcIA==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/@babel/code-frame": { + "version": "7.22.13", + "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.22.13.tgz", + "integrity": "sha512-XktuhWlJ5g+3TJXc5upd9Ks1HutSArik6jf2eAjYFyIOf4ej3RN+184cZbzDvbPnuTJIUhPKKJE3cIsYTiAT3w==", + "dev": true, + "dependencies": { + "@babel/highlight": "^7.22.13", + "chalk": "^2.4.2" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/code-frame/node_modules/ansi-styles": { + "version": "3.2.1", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.1.tgz", + "integrity": "sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==", + "dev": true, + "dependencies": { + "color-convert": "^1.9.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/@babel/code-frame/node_modules/chalk": { + "version": "2.4.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz", + "integrity": "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==", + "dev": true, + "dependencies": { + "ansi-styles": "^3.2.1", + "escape-string-regexp": "^1.0.5", + "supports-color": "^5.3.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/@babel/code-frame/node_modules/color-convert": { + "version": "1.9.3", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-1.9.3.tgz", + "integrity": "sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg==", + "dev": true, + "dependencies": { + "color-name": "1.1.3" + } + }, + "node_modules/@babel/code-frame/node_modules/color-name": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.3.tgz", + "integrity": "sha512-72fSenhMw2HZMTVHeCA9KCmpEIbzWiQsjN+BHcBbS9vr1mtt+vJjPdksIBNUmKAW8TFUDPJK5SUU3QhE9NEXDw==", + "dev": true + }, + "node_modules/@babel/code-frame/node_modules/escape-string-regexp": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz", + "integrity": "sha512-vbRorB5FUQWvla16U8R/qgaFIya2qGzwDrNmCZuYKrbdSUMG6I1ZCGQRefkRVhuOkIGVne7BQ35DSfo1qvJqFg==", + "dev": true, + "engines": { + "node": ">=0.8.0" + } + }, + "node_modules/@babel/generator": { + "version": "7.17.7", + "resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.17.7.tgz", + "integrity": "sha512-oLcVCTeIFadUoArDTwpluncplrYBmTCCZZgXCbgNGvOBBiSDDK3eWO4b/+eOTli5tKv1lg+a5/NAXg+nTcei1w==", + "dev": true, + "dependencies": { + "@babel/types": "^7.17.0", + "jsesc": "^2.5.1", + "source-map": "^0.5.0" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-environment-visitor": { + "version": "7.22.20", + "resolved": "https://registry.npmjs.org/@babel/helper-environment-visitor/-/helper-environment-visitor-7.22.20.tgz", + "integrity": "sha512-zfedSIzFhat/gFhWfHtgWvlec0nqB9YEIVrpuwjruLlXfUSnA8cJB0miHKwqDnQ7d32aKo2xt88/xZptwxbfhA==", + "dev": true, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-function-name": { + "version": "7.23.0", + "resolved": "https://registry.npmjs.org/@babel/helper-function-name/-/helper-function-name-7.23.0.tgz", + "integrity": "sha512-OErEqsrxjZTJciZ4Oo+eoZqeW9UIiOcuYKRJA4ZAgV9myA+pOXhhmpfNCKjEH/auVfEYVFJ6y1Tc4r0eIApqiw==", + "dev": true, + "dependencies": { + "@babel/template": "^7.22.15", + "@babel/types": "^7.23.0" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-function-name/node_modules/@babel/types": { + "version": "7.23.0", + "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.23.0.tgz", + "integrity": "sha512-0oIyUfKoI3mSqMvsxBdclDwxXKXAUA8v/apZbc+iSyARYou1o8ZGDxbUYyLFoW2arqS2jDGqJuZvv1d/io1axg==", + "dev": true, + "dependencies": { + "@babel/helper-string-parser": "^7.22.5", + "@babel/helper-validator-identifier": "^7.22.20", + "to-fast-properties": "^2.0.0" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-hoist-variables": { + "version": "7.22.5", + "resolved": "https://registry.npmjs.org/@babel/helper-hoist-variables/-/helper-hoist-variables-7.22.5.tgz", + "integrity": "sha512-wGjk9QZVzvknA6yKIUURb8zY3grXCcOZt+/7Wcy8O2uctxhplmUPkOdlgoNhmdVee2c92JXbf1xpMtVNbfoxRw==", + "dev": true, + "dependencies": { + "@babel/types": "^7.22.5" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-hoist-variables/node_modules/@babel/types": { + "version": "7.23.0", + "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.23.0.tgz", + "integrity": "sha512-0oIyUfKoI3mSqMvsxBdclDwxXKXAUA8v/apZbc+iSyARYou1o8ZGDxbUYyLFoW2arqS2jDGqJuZvv1d/io1axg==", + "dev": true, + "dependencies": { + "@babel/helper-string-parser": "^7.22.5", + "@babel/helper-validator-identifier": "^7.22.20", + "to-fast-properties": "^2.0.0" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-split-export-declaration": { + "version": "7.22.6", + "resolved": "https://registry.npmjs.org/@babel/helper-split-export-declaration/-/helper-split-export-declaration-7.22.6.tgz", + "integrity": "sha512-AsUnxuLhRYsisFiaJwvp1QF+I3KjD5FOxut14q/GzovUe6orHLesW2C7d754kRm53h5gqrz6sFl6sxc4BVtE/g==", + "dev": true, + "dependencies": { + "@babel/types": "^7.22.5" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-split-export-declaration/node_modules/@babel/types": { + "version": "7.23.0", + "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.23.0.tgz", + "integrity": "sha512-0oIyUfKoI3mSqMvsxBdclDwxXKXAUA8v/apZbc+iSyARYou1o8ZGDxbUYyLFoW2arqS2jDGqJuZvv1d/io1axg==", + "dev": true, + "dependencies": { + "@babel/helper-string-parser": "^7.22.5", + "@babel/helper-validator-identifier": "^7.22.20", + "to-fast-properties": "^2.0.0" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-string-parser": { + "version": "7.22.5", + "resolved": "https://registry.npmjs.org/@babel/helper-string-parser/-/helper-string-parser-7.22.5.tgz", + "integrity": "sha512-mM4COjgZox8U+JcXQwPijIZLElkgEpO5rsERVDJTc2qfCDfERyob6k5WegS14SX18IIjv+XD+GrqNumY5JRCDw==", + "dev": true, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-validator-identifier": { + "version": "7.22.20", + "resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.22.20.tgz", + "integrity": "sha512-Y4OZ+ytlatR8AI+8KZfKuL5urKp7qey08ha31L8b3BwewJAoJamTzyvxPR/5D+KkdJCGPq/+8TukHBlY10FX9A==", + "dev": true, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/highlight": { + "version": "7.22.20", + "resolved": "https://registry.npmjs.org/@babel/highlight/-/highlight-7.22.20.tgz", + "integrity": "sha512-dkdMCN3py0+ksCgYmGG8jKeGA/8Tk+gJwSYYlFGxG5lmhfKNoAy004YpLxpS1W2J8m/EK2Ew+yOs9pVRwO89mg==", + "dev": true, + "dependencies": { + "@babel/helper-validator-identifier": "^7.22.20", + "chalk": "^2.4.2", + "js-tokens": "^4.0.0" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/highlight/node_modules/ansi-styles": { + "version": "3.2.1", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.1.tgz", + "integrity": "sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==", + "dev": true, + "dependencies": { + "color-convert": "^1.9.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/@babel/highlight/node_modules/chalk": { + "version": "2.4.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz", + "integrity": "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==", + "dev": true, + "dependencies": { + "ansi-styles": "^3.2.1", + "escape-string-regexp": "^1.0.5", + "supports-color": "^5.3.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/@babel/highlight/node_modules/color-convert": { + "version": "1.9.3", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-1.9.3.tgz", + "integrity": "sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg==", + "dev": true, + "dependencies": { + "color-name": "1.1.3" + } + }, + "node_modules/@babel/highlight/node_modules/color-name": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.3.tgz", + "integrity": "sha512-72fSenhMw2HZMTVHeCA9KCmpEIbzWiQsjN+BHcBbS9vr1mtt+vJjPdksIBNUmKAW8TFUDPJK5SUU3QhE9NEXDw==", + "dev": true + }, + "node_modules/@babel/highlight/node_modules/escape-string-regexp": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz", + "integrity": "sha512-vbRorB5FUQWvla16U8R/qgaFIya2qGzwDrNmCZuYKrbdSUMG6I1ZCGQRefkRVhuOkIGVne7BQ35DSfo1qvJqFg==", + "dev": true, + "engines": { + "node": ">=0.8.0" + } + }, + "node_modules/@babel/parser": { + "version": "7.23.0", + "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.23.0.tgz", + "integrity": "sha512-vvPKKdMemU85V9WE/l5wZEmImpCtLqbnTvqDS2U1fJ96KrxoW7KrXhNsNCblQlg8Ck4b85yxdTyelsMUgFUXiw==", + "dev": true, + "bin": { + "parser": "bin/babel-parser.js" + }, + "engines": { + "node": ">=6.0.0" + } + }, + "node_modules/@babel/template": { + "version": "7.22.15", + "resolved": "https://registry.npmjs.org/@babel/template/-/template-7.22.15.tgz", + "integrity": "sha512-QPErUVm4uyJa60rkI73qneDacvdvzxshT3kksGqlGWYdOTIUOwJ7RDUL8sGqslY1uXWSL6xMFKEXDS3ox2uF0w==", + "dev": true, + "dependencies": { + "@babel/code-frame": "^7.22.13", + "@babel/parser": "^7.22.15", + "@babel/types": "^7.22.15" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/template/node_modules/@babel/types": { + "version": "7.23.0", + "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.23.0.tgz", + "integrity": "sha512-0oIyUfKoI3mSqMvsxBdclDwxXKXAUA8v/apZbc+iSyARYou1o8ZGDxbUYyLFoW2arqS2jDGqJuZvv1d/io1axg==", + "dev": true, + "dependencies": { + "@babel/helper-string-parser": "^7.22.5", + "@babel/helper-validator-identifier": "^7.22.20", + "to-fast-properties": "^2.0.0" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/traverse": { + "version": "7.17.3", + "resolved": "https://registry.npmjs.org/@babel/traverse/-/traverse-7.17.3.tgz", + "integrity": "sha512-5irClVky7TxRWIRtxlh2WPUUOLhcPN06AGgaQSB8AEwuyEBgJVuJ5imdHm5zxk8w0QS5T+tDfnDxAlhWjpb7cw==", + "dev": true, + "dependencies": { + "@babel/code-frame": "^7.16.7", + "@babel/generator": "^7.17.3", + "@babel/helper-environment-visitor": "^7.16.7", + "@babel/helper-function-name": "^7.16.7", + "@babel/helper-hoist-variables": "^7.16.7", + "@babel/helper-split-export-declaration": "^7.16.7", + "@babel/parser": "^7.17.3", + "@babel/types": "^7.17.0", + "debug": "^4.1.0", + "globals": "^11.1.0" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/types": { + "version": "7.17.0", + "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.17.0.tgz", + "integrity": "sha512-TmKSNO4D5rzhL5bjWFcVHHLETzfQ/AmbKpKPOSjlP0WoHZ6L911fgoOKY4Alp/emzG4cHJdyN49zpgkbXFEHHw==", + "dev": true, + "dependencies": { + "@babel/helper-validator-identifier": "^7.16.7", + "to-fast-properties": "^2.0.0" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@es-joy/jsdoccomment": { + "version": "0.40.1", + "resolved": "https://registry.npmjs.org/@es-joy/jsdoccomment/-/jsdoccomment-0.40.1.tgz", + "integrity": "sha512-YORCdZSusAlBrFpZ77pJjc5r1bQs5caPWtAu+WWmiSo+8XaUzseapVrfAtiRFbQWnrBxxLLEwF6f6ZG/UgCQCg==", + "dev": true, + "dependencies": { + "comment-parser": "1.4.0", + "esquery": "^1.5.0", + "jsdoc-type-pratt-parser": "~4.0.0" + }, + "engines": { + "node": ">=16" + } + }, + "node_modules/@eslint-community/eslint-utils": { + "version": "4.4.0", + "resolved": "https://registry.npmjs.org/@eslint-community/eslint-utils/-/eslint-utils-4.4.0.tgz", + "integrity": "sha512-1/sA4dwrzBAyeUoQ6oxahHKmrZvsnLCg4RfxW3ZFGGmQkSNQPFNLV9CUEFQP1x9EYXHTo5p6xdhZM1Ne9p/AfA==", + "dev": true, + "dependencies": { + "eslint-visitor-keys": "^3.3.0" + }, + "engines": { + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + }, + "peerDependencies": { + "eslint": "^6.0.0 || ^7.0.0 || >=8.0.0" + } + }, + "node_modules/@eslint-community/regexpp": { + "version": "4.9.0", + "resolved": "https://registry.npmjs.org/@eslint-community/regexpp/-/regexpp-4.9.0.tgz", + "integrity": "sha512-zJmuCWj2VLBt4c25CfBIbMZLGLyhkvs7LznyVX5HfpzeocThgIj5XQK4L+g3U36mMcx8bPMhGyPpwCATamC4jQ==", + "dev": true, + "engines": { + "node": "^12.0.0 || ^14.0.0 || >=16.0.0" + } + }, + "node_modules/@eslint/eslintrc": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/@eslint/eslintrc/-/eslintrc-2.1.2.tgz", + "integrity": "sha512-+wvgpDsrB1YqAMdEUCcnTlpfVBH7Vqn6A/NT3D8WVXFIaKMlErPIZT3oCIAVCOtarRpMtelZLqJeU3t7WY6X6g==", + "dev": true, + "dependencies": { + "ajv": "^6.12.4", + "debug": "^4.3.2", + "espree": "^9.6.0", + "globals": "^13.19.0", + "ignore": "^5.2.0", + "import-fresh": "^3.2.1", + "js-yaml": "^4.1.0", + "minimatch": "^3.1.2", + "strip-json-comments": "^3.1.1" + }, + "engines": { + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + }, + "funding": { + "url": "https://opencollective.com/eslint" + } + }, + "node_modules/@eslint/eslintrc/node_modules/ajv": { + "version": "6.12.6", + "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.12.6.tgz", + "integrity": "sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g==", + "dev": true, + "dependencies": { + "fast-deep-equal": "^3.1.1", + "fast-json-stable-stringify": "^2.0.0", + "json-schema-traverse": "^0.4.1", + "uri-js": "^4.2.2" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/epoberezkin" + } + }, + "node_modules/@eslint/eslintrc/node_modules/globals": { + "version": "13.22.0", + "resolved": "https://registry.npmjs.org/globals/-/globals-13.22.0.tgz", + "integrity": "sha512-H1Ddc/PbZHTDVJSnj8kWptIRSD6AM3pK+mKytuIVF4uoBV7rshFlhhvA58ceJ5wp3Er58w6zj7bykMpYXt3ETw==", + "dev": true, + "dependencies": { + "type-fest": "^0.20.2" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/@eslint/eslintrc/node_modules/json-schema-traverse": { + "version": "0.4.1", + "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-0.4.1.tgz", + "integrity": "sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg==", + "dev": true + }, + "node_modules/@eslint/eslintrc/node_modules/type-fest": { + "version": "0.20.2", + "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.20.2.tgz", + "integrity": "sha512-Ne+eE4r0/iWnpAxD852z3A+N0Bt5RN//NjJwRd2VFHEmrywxf5vsZlh4R6lixl6B+wz/8d+maTSAkN1FIkI3LQ==", + "dev": true, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/@eslint/js": { + "version": "8.50.0", + "resolved": "https://registry.npmjs.org/@eslint/js/-/js-8.50.0.tgz", + "integrity": "sha512-NCC3zz2+nvYd+Ckfh87rA47zfu2QsQpvc6k1yzTk+b9KzRj0wkGa8LSoGOXN6Zv4lRf/EIoZ80biDh9HOI+RNQ==", + "dev": true, + "engines": { + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + } + }, + "node_modules/@humanwhocodes/config-array": { + "version": "0.11.11", + "resolved": "https://registry.npmjs.org/@humanwhocodes/config-array/-/config-array-0.11.11.tgz", + "integrity": "sha512-N2brEuAadi0CcdeMXUkhbZB84eskAc8MEX1By6qEchoVywSgXPIjou4rYsl0V3Hj0ZnuGycGCjdNgockbzeWNA==", + "dev": true, + "dependencies": { + "@humanwhocodes/object-schema": "^1.2.1", + "debug": "^4.1.1", + "minimatch": "^3.0.5" + }, + "engines": { + "node": ">=10.10.0" + } + }, + "node_modules/@humanwhocodes/module-importer": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/@humanwhocodes/module-importer/-/module-importer-1.0.1.tgz", + "integrity": "sha512-bxveV4V8v5Yb4ncFTT3rPSgZBOpCkjfK0y4oVVVJwIuDVBRMDXrPyXRL988i5ap9m9bnyEEjWfm5WkBmtffLfA==", + "dev": true, + "engines": { + "node": ">=12.22" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/nzakas" + } + }, + "node_modules/@humanwhocodes/object-schema": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/@humanwhocodes/object-schema/-/object-schema-1.2.1.tgz", + "integrity": "sha512-ZnQMnLV4e7hDlUvw8H+U8ASL02SS2Gn6+9Ac3wGGLIe7+je2AeAOxPY+izIPJDfFDb7eDjev0Us8MO1iFRN8hA==", + "dev": true + }, + "node_modules/@jridgewell/gen-mapping": { + "version": "0.3.3", + "resolved": "https://registry.npmjs.org/@jridgewell/gen-mapping/-/gen-mapping-0.3.3.tgz", + "integrity": "sha512-HLhSWOLRi875zjjMG/r+Nv0oCW8umGb0BgEhyX3dDX3egwZtB8PqLnjz3yedt8R5StBrzcg4aBpnh8UA9D1BoQ==", + "dev": true, + "dependencies": { + "@jridgewell/set-array": "^1.0.1", + "@jridgewell/sourcemap-codec": "^1.4.10", + "@jridgewell/trace-mapping": "^0.3.9" + }, + "engines": { + "node": ">=6.0.0" + } + }, + "node_modules/@jridgewell/resolve-uri": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/@jridgewell/resolve-uri/-/resolve-uri-3.1.1.tgz", + "integrity": "sha512-dSYZh7HhCDtCKm4QakX0xFpsRDqjjtZf/kjI/v3T3Nwt5r8/qz/M19F9ySyOqU94SXBmeG9ttTul+YnR4LOxFA==", + "dev": true, + "engines": { + "node": ">=6.0.0" + } + }, + "node_modules/@jridgewell/set-array": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/@jridgewell/set-array/-/set-array-1.1.2.tgz", + "integrity": "sha512-xnkseuNADM0gt2bs+BvhO0p78Mk762YnZdsuzFV018NoG1Sj1SCQvpSqa7XUaTam5vAGasABV9qXASMKnFMwMw==", + "dev": true, + "engines": { + "node": ">=6.0.0" + } + }, + "node_modules/@jridgewell/source-map": { + "version": "0.3.5", + "resolved": "https://registry.npmjs.org/@jridgewell/source-map/-/source-map-0.3.5.tgz", + "integrity": "sha512-UTYAUj/wviwdsMfzoSJspJxbkH5o1snzwX0//0ENX1u/55kkZZkcTZP6u9bwKGkv+dkk9at4m1Cpt0uY80kcpQ==", + "dev": true, + "dependencies": { + "@jridgewell/gen-mapping": "^0.3.0", + "@jridgewell/trace-mapping": "^0.3.9" + } + }, + "node_modules/@jridgewell/sourcemap-codec": { + "version": "1.4.15", + "resolved": "https://registry.npmjs.org/@jridgewell/sourcemap-codec/-/sourcemap-codec-1.4.15.tgz", + "integrity": "sha512-eF2rxCRulEKXHTRiDrDy6erMYWqNw4LPdQ8UQA4huuxaQsVeRPFl2oM8oDGxMFhJUWZf9McpLtJasDDZb/Bpeg==", + "dev": true + }, + "node_modules/@jridgewell/trace-mapping": { + "version": "0.3.19", + "resolved": "https://registry.npmjs.org/@jridgewell/trace-mapping/-/trace-mapping-0.3.19.tgz", + "integrity": "sha512-kf37QtfW+Hwx/buWGMPcR60iF9ziHa6r/CZJIHbmcm4+0qrXiVdxegAH0F6yddEVQ7zdkjcGCgCzUu+BcbhQxw==", + "dev": true, + "dependencies": { + "@jridgewell/resolve-uri": "^3.1.0", + "@jridgewell/sourcemap-codec": "^1.4.14" + } + }, + "node_modules/@ljharb/through": { + "version": "2.3.9", + "resolved": "https://registry.npmjs.org/@ljharb/through/-/through-2.3.9.tgz", + "integrity": "sha512-yN599ZBuMPPK4tdoToLlvgJB4CLK8fGl7ntfy0Wn7U6ttNvHYurd81bfUiK/6sMkiIwm65R6ck4L6+Y3DfVbNQ==", + "dev": true, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/@nodelib/fs.scandir": { + "version": "2.1.5", + "resolved": "https://registry.npmjs.org/@nodelib/fs.scandir/-/fs.scandir-2.1.5.tgz", + "integrity": "sha512-vq24Bq3ym5HEQm2NKCr3yXDwjc7vTsEThRDnkp2DK9p1uqLR+DHurm/NOTo0KG7HYHU7eppKZj3MyqYuMBf62g==", + "dev": true, + "dependencies": { + "@nodelib/fs.stat": "2.0.5", + "run-parallel": "^1.1.9" + }, + "engines": { + "node": ">= 8" + } + }, + "node_modules/@nodelib/fs.stat": { + "version": "2.0.5", + "resolved": "https://registry.npmjs.org/@nodelib/fs.stat/-/fs.stat-2.0.5.tgz", + "integrity": "sha512-RkhPPp2zrqDAQA/2jNhnztcPAlv64XdhIp7a7454A5ovI7Bukxgt7MX7udwAu3zg1DcpPU0rz3VV1SeaqvY4+A==", + "dev": true, + "engines": { + "node": ">= 8" + } + }, + "node_modules/@nodelib/fs.walk": { + "version": "1.2.8", + "resolved": "https://registry.npmjs.org/@nodelib/fs.walk/-/fs.walk-1.2.8.tgz", + "integrity": "sha512-oGB+UxlgWcgQkgwo8GcEGwemoTFt3FIO9ababBmaGwXIoBKZ+GTy0pP185beGg7Llih/NSHSV2XAs1lnznocSg==", + "dev": true, + "dependencies": { + "@nodelib/fs.scandir": "2.1.5", + "fastq": "^1.6.0" + }, + "engines": { + "node": ">= 8" + } + }, + "node_modules/@pkgr/utils": { + "version": "2.4.2", + "resolved": "https://registry.npmjs.org/@pkgr/utils/-/utils-2.4.2.tgz", + "integrity": "sha512-POgTXhjrTfbTV63DiFXav4lBHiICLKKwDeaKn9Nphwj7WH6m0hMMCaJkMyRWjgtPFyRKRVoMXXjczsTQRDEhYw==", + "dev": true, + "dependencies": { + "cross-spawn": "^7.0.3", + "fast-glob": "^3.3.0", + "is-glob": "^4.0.3", + "open": "^9.1.0", + "picocolors": "^1.0.0", + "tslib": "^2.6.0" + }, + "engines": { + "node": "^12.20.0 || ^14.18.0 || >=16.0.0" + }, + "funding": { + "url": "https://opencollective.com/unts" + } + }, + "node_modules/@rollup/plugin-commonjs": { + "version": "25.0.4", + "resolved": "https://registry.npmjs.org/@rollup/plugin-commonjs/-/plugin-commonjs-25.0.4.tgz", + "integrity": "sha512-L92Vz9WUZXDnlQQl3EwbypJR4+DM2EbsO+/KOcEkP4Mc6Ct453EeDB2uH9lgRwj4w5yflgNpq9pHOiY8aoUXBQ==", + "dev": true, + "dependencies": { + "@rollup/pluginutils": "^5.0.1", + "commondir": "^1.0.1", + "estree-walker": "^2.0.2", + "glob": "^8.0.3", + "is-reference": "1.2.1", + "magic-string": "^0.27.0" + }, + "engines": { + "node": ">=14.0.0" + }, + "peerDependencies": { + "rollup": "^2.68.0||^3.0.0" + }, + "peerDependenciesMeta": { + "rollup": { + "optional": true + } + } + }, + "node_modules/@rollup/plugin-json": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/@rollup/plugin-json/-/plugin-json-6.0.0.tgz", + "integrity": "sha512-i/4C5Jrdr1XUarRhVu27EEwjt4GObltD7c+MkCIpO2QIbojw8MUs+CCTqOphQi3Qtg1FLmYt+l+6YeoIf51J7w==", + "dev": true, + "dependencies": { + "@rollup/pluginutils": "^5.0.1" + }, + "engines": { + "node": ">=14.0.0" + }, + "peerDependencies": { + "rollup": "^1.20.0||^2.0.0||^3.0.0" + }, + "peerDependenciesMeta": { + "rollup": { + "optional": true + } + } + }, + "node_modules/@rollup/plugin-node-resolve": { + "version": "15.2.1", + "resolved": "https://registry.npmjs.org/@rollup/plugin-node-resolve/-/plugin-node-resolve-15.2.1.tgz", + "integrity": "sha512-nsbUg588+GDSu8/NS8T4UAshO6xeaOfINNuXeVHcKV02LJtoRaM1SiOacClw4kws1SFiNhdLGxlbMY9ga/zs/w==", + "dev": true, + "dependencies": { + "@rollup/pluginutils": "^5.0.1", + "@types/resolve": "1.20.2", + "deepmerge": "^4.2.2", + "is-builtin-module": "^3.2.1", + "is-module": "^1.0.0", + "resolve": "^1.22.1" + }, + "engines": { + "node": ">=14.0.0" + }, + "peerDependencies": { + "rollup": "^2.78.0||^3.0.0" + }, + "peerDependenciesMeta": { + "rollup": { + "optional": true + } + } + }, + "node_modules/@rollup/plugin-terser": { + "version": "0.4.3", + "resolved": "https://registry.npmjs.org/@rollup/plugin-terser/-/plugin-terser-0.4.3.tgz", + "integrity": "sha512-EF0oejTMtkyhrkwCdg0HJ0IpkcaVg1MMSf2olHb2Jp+1mnLM04OhjpJWGma4HobiDTF0WCyViWuvadyE9ch2XA==", + "dev": true, + "dependencies": { + "serialize-javascript": "^6.0.1", + "smob": "^1.0.0", + "terser": "^5.17.4" + }, + "engines": { + "node": ">=14.0.0" + }, + "peerDependencies": { + "rollup": "^2.x || ^3.x" + }, + "peerDependenciesMeta": { + "rollup": { + "optional": true + } + } + }, + "node_modules/@rollup/plugin-typescript": { + "version": "11.1.4", + "resolved": "https://registry.npmjs.org/@rollup/plugin-typescript/-/plugin-typescript-11.1.4.tgz", + "integrity": "sha512-WZRh5LBVLQXdKFICUId5J3eIpmjGURaBqntfg3GSZACgeOAFS+lOSMGTwfzDkELTaZVp/lWdMVNU3UkwCUBg/Q==", + "dev": true, + "dependencies": { + "@rollup/pluginutils": "^5.0.1", + "resolve": "^1.22.1" + }, + "engines": { + "node": ">=14.0.0" + }, + "peerDependencies": { + "rollup": "^2.14.0||^3.0.0", + "tslib": "*", + "typescript": ">=3.7.0" + }, + "peerDependenciesMeta": { + "rollup": { + "optional": true + }, + "tslib": { + "optional": true + } + } + }, + "node_modules/@rollup/pluginutils": { + "version": "5.0.4", + "resolved": "https://registry.npmjs.org/@rollup/pluginutils/-/pluginutils-5.0.4.tgz", + "integrity": "sha512-0KJnIoRI8A+a1dqOYLxH8vBf8bphDmty5QvIm2hqm7oFCFYKCAZWWd2hXgMibaPsNDhI0AtpYfQZJG47pt/k4g==", + "dev": true, + "dependencies": { + "@types/estree": "^1.0.0", + "estree-walker": "^2.0.2", + "picomatch": "^2.3.1" + }, + "engines": { + "node": ">=14.0.0" + }, + "peerDependencies": { + "rollup": "^1.20.0||^2.0.0||^3.0.0" + }, + "peerDependenciesMeta": { + "rollup": { + "optional": true + } + } + }, + "node_modules/@trivago/prettier-plugin-sort-imports": { + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/@trivago/prettier-plugin-sort-imports/-/prettier-plugin-sort-imports-4.2.0.tgz", + "integrity": "sha512-YBepjbt+ZNBVmN3ev1amQH3lWCmHyt5qTbLCp/syXJRu/Kw2koXh44qayB1gMRxcL/gV8egmjN5xWSrYyfUtyw==", + "dev": true, + "dependencies": { + "@babel/generator": "7.17.7", + "@babel/parser": "^7.20.5", + "@babel/traverse": "7.17.3", + "@babel/types": "7.17.0", + "javascript-natural-sort": "0.7.1", + "lodash": "^4.17.21" + }, + "peerDependencies": { + "@vue/compiler-sfc": "3.x", + "prettier": "2.x - 3.x" + }, + "peerDependenciesMeta": { + "@vue/compiler-sfc": { + "optional": true + } + } + }, + "node_modules/@tsconfig/node20": { + "version": "20.1.2", + "resolved": "https://registry.npmjs.org/@tsconfig/node20/-/node20-20.1.2.tgz", + "integrity": "sha512-madaWq2k+LYMEhmcp0fs+OGaLFk0OenpHa4gmI4VEmCKX4PJntQ6fnnGADVFrVkBj0wIdAlQnK/MrlYTHsa1gQ==", + "dev": true + }, + "node_modules/@types/ejs": { + "version": "3.1.3", + "resolved": "https://registry.npmjs.org/@types/ejs/-/ejs-3.1.3.tgz", + "integrity": "sha512-mv5T/JI/bu+pbfz1o+TLl1NF0NIBbjS0Vl6Ppz1YY9DkXfzZT0lelXpfS5i3ZS3U/p90it7uERQpBvLYoK8e4A==", + "dev": true + }, + "node_modules/@types/estree": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/@types/estree/-/estree-1.0.2.tgz", + "integrity": "sha512-VeiPZ9MMwXjO32/Xu7+OwflfmeoRwkE/qzndw42gGtgJwZopBnzy2gD//NN1+go1mADzkDcqf/KnFRSjTJ8xJA==", + "dev": true + }, + "node_modules/@types/inquirer": { + "version": "9.0.3", + "resolved": "https://registry.npmjs.org/@types/inquirer/-/inquirer-9.0.3.tgz", + "integrity": "sha512-CzNkWqQftcmk2jaCWdBTf9Sm7xSw4rkI1zpU/Udw3HX5//adEZUIm9STtoRP1qgWj0CWQtJ9UTvqmO2NNjhMJw==", + "dev": true, + "dependencies": { + "@types/through": "*", + "rxjs": "^7.2.0" + } + }, + "node_modules/@types/json-schema": { + "version": "7.0.13", + "resolved": "https://registry.npmjs.org/@types/json-schema/-/json-schema-7.0.13.tgz", + "integrity": "sha512-RbSSoHliUbnXj3ny0CNFOoxrIDV6SUGyStHsvDqosw6CkdPV8TtWGlfecuK4ToyMEAql6pzNxgCFKanovUzlgQ==", + "dev": true + }, + "node_modules/@types/lodash": { + "version": "4.14.199", + "resolved": "https://registry.npmjs.org/@types/lodash/-/lodash-4.14.199.tgz", + "integrity": "sha512-Vrjz5N5Ia4SEzWWgIVwnHNEnb1UE1XMkvY5DGXrAeOGE9imk0hgTHh5GyDjLDJi9OTCn9oo9dXH1uToK1VRfrg==", + "dev": true + }, + "node_modules/@types/node": { + "version": "20.1.7", + "resolved": "https://registry.npmjs.org/@types/node/-/node-20.1.7.tgz", + "integrity": "sha512-WCuw/o4GSwDGMoonES8rcvwsig77dGCMbZDrZr2x4ZZiNW4P/gcoZXe/0twgtobcTkmg9TuKflxYL/DuwDyJzg==", + "dev": true + }, + "node_modules/@types/resolve": { + "version": "1.20.2", + "resolved": "https://registry.npmjs.org/@types/resolve/-/resolve-1.20.2.tgz", + "integrity": "sha512-60BCwRFOZCQhDncwQdxxeOEEkbc5dIMccYLwbxsS4TUNeVECQ/pBJ0j09mrHOl/JJvpRPGwO9SvE4nR2Nb/a4Q==", + "dev": true + }, + "node_modules/@types/semver": { + "version": "7.5.3", + "resolved": "https://registry.npmjs.org/@types/semver/-/semver-7.5.3.tgz", + "integrity": "sha512-OxepLK9EuNEIPxWNME+C6WwbRAOOI2o2BaQEGzz5Lu2e4Z5eDnEo+/aVEDMIXywoJitJ7xWd641wrGLZdtwRyw==", + "dev": true + }, + "node_modules/@types/through": { + "version": "0.0.31", + "resolved": "https://registry.npmjs.org/@types/through/-/through-0.0.31.tgz", + "integrity": "sha512-LpKpmb7FGevYgXnBXYs6HWnmiFyVG07Pt1cnbgM1IhEacITTiUaBXXvOR3Y50ksaJWGSfhbEvQFivQEFGCC55w==", + "dev": true, + "dependencies": { + "@types/node": "*" + } + }, + "node_modules/@typescript-eslint/eslint-plugin": { + "version": "6.7.3", + "resolved": "https://registry.npmjs.org/@typescript-eslint/eslint-plugin/-/eslint-plugin-6.7.3.tgz", + "integrity": "sha512-vntq452UHNltxsaaN+L9WyuMch8bMd9CqJ3zhzTPXXidwbf5mqqKCVXEuvRZUqLJSTLeWE65lQwyXsRGnXkCTA==", + "dev": true, + "dependencies": { + "@eslint-community/regexpp": "^4.5.1", + "@typescript-eslint/scope-manager": "6.7.3", + "@typescript-eslint/type-utils": "6.7.3", + "@typescript-eslint/utils": "6.7.3", + "@typescript-eslint/visitor-keys": "6.7.3", + "debug": "^4.3.4", + "graphemer": "^1.4.0", + "ignore": "^5.2.4", + "natural-compare": "^1.4.0", + "semver": "^7.5.4", + "ts-api-utils": "^1.0.1" + }, + "engines": { + "node": "^16.0.0 || >=18.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" + }, + "peerDependencies": { + "@typescript-eslint/parser": "^6.0.0 || ^6.0.0-alpha", + "eslint": "^7.0.0 || ^8.0.0" + }, + "peerDependenciesMeta": { + "typescript": { + "optional": true + } + } + }, + "node_modules/@typescript-eslint/parser": { + "version": "6.7.3", + "resolved": "https://registry.npmjs.org/@typescript-eslint/parser/-/parser-6.7.3.tgz", + "integrity": "sha512-TlutE+iep2o7R8Lf+yoer3zU6/0EAUc8QIBB3GYBc1KGz4c4TRm83xwXUZVPlZ6YCLss4r77jbu6j3sendJoiQ==", + "dev": true, + "dependencies": { + "@typescript-eslint/scope-manager": "6.7.3", + "@typescript-eslint/types": "6.7.3", + "@typescript-eslint/typescript-estree": "6.7.3", + "@typescript-eslint/visitor-keys": "6.7.3", + "debug": "^4.3.4" + }, + "engines": { + "node": "^16.0.0 || >=18.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" + }, + "peerDependencies": { + "eslint": "^7.0.0 || ^8.0.0" + }, + "peerDependenciesMeta": { + "typescript": { + "optional": true + } + } + }, + "node_modules/@typescript-eslint/scope-manager": { + "version": "6.7.3", + "resolved": "https://registry.npmjs.org/@typescript-eslint/scope-manager/-/scope-manager-6.7.3.tgz", + "integrity": "sha512-wOlo0QnEou9cHO2TdkJmzF7DFGvAKEnB82PuPNHpT8ZKKaZu6Bm63ugOTn9fXNJtvuDPanBc78lGUGGytJoVzQ==", + "dev": true, + "dependencies": { + "@typescript-eslint/types": "6.7.3", + "@typescript-eslint/visitor-keys": "6.7.3" + }, + "engines": { + "node": "^16.0.0 || >=18.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" + } + }, + "node_modules/@typescript-eslint/type-utils": { + "version": "6.7.3", + "resolved": "https://registry.npmjs.org/@typescript-eslint/type-utils/-/type-utils-6.7.3.tgz", + "integrity": "sha512-Fc68K0aTDrKIBvLnKTZ5Pf3MXK495YErrbHb1R6aTpfK5OdSFj0rVN7ib6Tx6ePrZ2gsjLqr0s98NG7l96KSQw==", + "dev": true, + "dependencies": { + "@typescript-eslint/typescript-estree": "6.7.3", + "@typescript-eslint/utils": "6.7.3", + "debug": "^4.3.4", + "ts-api-utils": "^1.0.1" + }, + "engines": { + "node": "^16.0.0 || >=18.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" + }, + "peerDependencies": { + "eslint": "^7.0.0 || ^8.0.0" + }, + "peerDependenciesMeta": { + "typescript": { + "optional": true + } + } + }, + "node_modules/@typescript-eslint/types": { + "version": "6.7.3", + "resolved": "https://registry.npmjs.org/@typescript-eslint/types/-/types-6.7.3.tgz", + "integrity": "sha512-4g+de6roB2NFcfkZb439tigpAMnvEIg3rIjWQ+EM7IBaYt/CdJt6em9BJ4h4UpdgaBWdmx2iWsafHTrqmgIPNw==", + "dev": true, + "engines": { + "node": "^16.0.0 || >=18.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" + } + }, + "node_modules/@typescript-eslint/typescript-estree": { + "version": "6.7.3", + "resolved": "https://registry.npmjs.org/@typescript-eslint/typescript-estree/-/typescript-estree-6.7.3.tgz", + "integrity": "sha512-YLQ3tJoS4VxLFYHTw21oe1/vIZPRqAO91z6Uv0Ss2BKm/Ag7/RVQBcXTGcXhgJMdA4U+HrKuY5gWlJlvoaKZ5g==", + "dev": true, + "dependencies": { + "@typescript-eslint/types": "6.7.3", + "@typescript-eslint/visitor-keys": "6.7.3", + "debug": "^4.3.4", + "globby": "^11.1.0", + "is-glob": "^4.0.3", + "semver": "^7.5.4", + "ts-api-utils": "^1.0.1" + }, + "engines": { + "node": "^16.0.0 || >=18.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" + }, + "peerDependenciesMeta": { + "typescript": { + "optional": true + } + } + }, + "node_modules/@typescript-eslint/utils": { + "version": "6.7.3", + "resolved": "https://registry.npmjs.org/@typescript-eslint/utils/-/utils-6.7.3.tgz", + "integrity": "sha512-vzLkVder21GpWRrmSR9JxGZ5+ibIUSudXlW52qeKpzUEQhRSmyZiVDDj3crAth7+5tmN1ulvgKaCU2f/bPRCzg==", + "dev": true, + "dependencies": { + "@eslint-community/eslint-utils": "^4.4.0", + "@types/json-schema": "^7.0.12", + "@types/semver": "^7.5.0", + "@typescript-eslint/scope-manager": "6.7.3", + "@typescript-eslint/types": "6.7.3", + "@typescript-eslint/typescript-estree": "6.7.3", + "semver": "^7.5.4" + }, + "engines": { + "node": "^16.0.0 || >=18.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" + }, + "peerDependencies": { + "eslint": "^7.0.0 || ^8.0.0" + } + }, + "node_modules/@typescript-eslint/visitor-keys": { + "version": "6.7.3", + "resolved": "https://registry.npmjs.org/@typescript-eslint/visitor-keys/-/visitor-keys-6.7.3.tgz", + "integrity": "sha512-HEVXkU9IB+nk9o63CeICMHxFWbHWr3E1mpilIQBe9+7L/lH97rleFLVtYsfnWB+JVMaiFnEaxvknvmIzX+CqVg==", + "dev": true, + "dependencies": { + "@typescript-eslint/types": "6.7.3", + "eslint-visitor-keys": "^3.4.1" + }, + "engines": { + "node": "^16.0.0 || >=18.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" + } + }, + "node_modules/acorn": { + "version": "8.10.0", + "resolved": "https://registry.npmjs.org/acorn/-/acorn-8.10.0.tgz", + "integrity": "sha512-F0SAmZ8iUtS//m8DmCTA0jlh6TDKkHQyK6xc6V4KDTyZKA9dnvX9/3sRTVQrWm79glUAZbnmmNcdYwUIHWVybw==", + "dev": true, + "bin": { + "acorn": "bin/acorn" + }, + "engines": { + "node": ">=0.4.0" + } + }, + "node_modules/acorn-jsx": { + "version": "5.3.2", + "resolved": "https://registry.npmjs.org/acorn-jsx/-/acorn-jsx-5.3.2.tgz", + "integrity": "sha512-rq9s+JNhf0IChjtDXxllJ7g41oZk5SlXtp0LHwyA5cejwn7vKmKp4pPri6YEePv2PU65sAsegbXtIinmDFDXgQ==", + "dev": true, + "peerDependencies": { + "acorn": "^6.0.0 || ^7.0.0 || ^8.0.0" + } + }, + "node_modules/ajv": { + "version": "8.12.0", + "resolved": "https://registry.npmjs.org/ajv/-/ajv-8.12.0.tgz", + "integrity": "sha512-sRu1kpcO9yLtYxBKvqfTeh9KzZEwO3STyX1HT+4CaDzC6HpTGYhIhPIzj9XuKU7KYDwnaeh5hcOwjy1QuJzBPA==", + "dev": true, + "dependencies": { + "fast-deep-equal": "^3.1.1", + "json-schema-traverse": "^1.0.0", + "require-from-string": "^2.0.2", + "uri-js": "^4.2.2" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/epoberezkin" + } + }, + "node_modules/ansi-escapes": { + "version": "4.3.2", + "resolved": "https://registry.npmjs.org/ansi-escapes/-/ansi-escapes-4.3.2.tgz", + "integrity": "sha512-gKXj5ALrKWQLsYG9jlTRmR/xKluxHV+Z9QEwNIgCfM1/uwPMCuzVVnh5mwTd+OuBZcwSIMbqssNWRm1lE51QaQ==", + "dev": true, + "dependencies": { + "type-fest": "^0.21.3" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/ansi-regex": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.1.tgz", + "integrity": "sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/ansi-styles": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", + "dev": true, + "dependencies": { + "color-convert": "^2.0.1" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" + } + }, + "node_modules/are-docs-informative": { + "version": "0.0.2", + "resolved": "https://registry.npmjs.org/are-docs-informative/-/are-docs-informative-0.0.2.tgz", + "integrity": "sha512-ixiS0nLNNG5jNQzgZJNoUpBKdo9yTYZMGJ+QgT2jmjR7G7+QHRCc4v6LQ3NgE7EBJq+o0ams3waJwkrlBom8Ig==", + "dev": true, + "engines": { + "node": ">=14" + } + }, + "node_modules/argparse": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/argparse/-/argparse-2.0.1.tgz", + "integrity": "sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q==", + "dev": true + }, + "node_modules/array-union": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/array-union/-/array-union-2.1.0.tgz", + "integrity": "sha512-HGyxoOTYUyCM6stUe6EJgnd4EoewAI7zMdfqO+kGjnlZmBDz/cR5pf8r/cR4Wq60sL/p0IkcjUEEPwS3GFrIyw==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/async": { + "version": "3.2.4", + "resolved": "https://registry.npmjs.org/async/-/async-3.2.4.tgz", + "integrity": "sha512-iAB+JbDEGXhyIUavoDl9WP/Jj106Kz9DEn1DPgYw5ruDn0e3Wgi3sKFm55sASdGBNOQB8F59d9qQ7deqrHA8wQ==", + "dev": true + }, + "node_modules/balanced-match": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.2.tgz", + "integrity": "sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==", + "dev": true + }, + "node_modules/base64-js": { + "version": "1.5.1", + "resolved": "https://registry.npmjs.org/base64-js/-/base64-js-1.5.1.tgz", + "integrity": "sha512-AKpaYlHn8t4SVbOHCy+b5+KKgvR4vrsD8vbvrbiQJps7fKDTkjkDry6ji0rUJjC0kzbNePLwzxq8iypo41qeWA==", + "dev": true, + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/feross" + }, + { + "type": "patreon", + "url": "https://www.patreon.com/feross" + }, + { + "type": "consulting", + "url": "https://feross.org/support" + } + ] + }, + "node_modules/big-integer": { + "version": "1.6.51", + "resolved": "https://registry.npmjs.org/big-integer/-/big-integer-1.6.51.tgz", + "integrity": "sha512-GPEid2Y9QU1Exl1rpO9B2IPJGHPSupF5GnVIP0blYvNOMer2bTvSWs1jGOUg04hTmu67nmLsQ9TBo1puaotBHg==", + "dev": true, + "engines": { + "node": ">=0.6" + } + }, + "node_modules/bl": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/bl/-/bl-4.1.0.tgz", + "integrity": "sha512-1W07cM9gS6DcLperZfFSj+bWLtaPGSOHWhPiGzXmvVJbRLdG82sH/Kn8EtW1VqWVA54AKf2h5k5BbnIbwF3h6w==", + "dev": true, + "dependencies": { + "buffer": "^5.5.0", + "inherits": "^2.0.4", + "readable-stream": "^3.4.0" + } + }, + "node_modules/bplist-parser": { + "version": "0.2.0", + "resolved": "https://registry.npmjs.org/bplist-parser/-/bplist-parser-0.2.0.tgz", + "integrity": "sha512-z0M+byMThzQmD9NILRniCUXYsYpjwnlO8N5uCFaCqIOpqRsJCrQL9NK3JsD67CN5a08nF5oIL2bD6loTdHOuKw==", + "dev": true, + "dependencies": { + "big-integer": "^1.6.44" + }, + "engines": { + "node": ">= 5.10.0" + } + }, + "node_modules/brace-expansion": { + "version": "1.1.11", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz", + "integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==", + "dev": true, + "dependencies": { + "balanced-match": "^1.0.0", + "concat-map": "0.0.1" + } + }, + "node_modules/braces": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/braces/-/braces-3.0.2.tgz", + "integrity": "sha512-b8um+L1RzM3WDSzvhm6gIz1yfTbBt6YTlcEKAvsmqCZZFw46z626lVj9j1yEPW33H5H+lBQpZMP1k8l+78Ha0A==", + "dev": true, + "dependencies": { + "fill-range": "^7.0.1" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/buffer": { + "version": "5.7.1", + "resolved": "https://registry.npmjs.org/buffer/-/buffer-5.7.1.tgz", + "integrity": "sha512-EHcyIPBQ4BSGlvjB16k5KgAJ27CIsHY/2JBmCRReo48y9rQ3MaUzWX3KVlBa4U7MyX02HdVj0K7C3WaB3ju7FQ==", + "dev": true, + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/feross" + }, + { + "type": "patreon", + "url": "https://www.patreon.com/feross" + }, + { + "type": "consulting", + "url": "https://feross.org/support" + } + ], + "dependencies": { + "base64-js": "^1.3.1", + "ieee754": "^1.1.13" + } + }, + "node_modules/buffer-from": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/buffer-from/-/buffer-from-1.1.2.tgz", + "integrity": "sha512-E+XQCRwSbaaiChtv6k6Dwgc+bx+Bs6vuKJHHl5kox/BaKbhiXzqQOwK4cO22yElGp2OCmjwVhT3HmxgyPGnJfQ==", + "dev": true + }, + "node_modules/builtin-modules": { + "version": "3.3.0", + "resolved": "https://registry.npmjs.org/builtin-modules/-/builtin-modules-3.3.0.tgz", + "integrity": "sha512-zhaCDicdLuWN5UbN5IMnFqNMhNfo919sH85y2/ea+5Yg9TsTkeZxpL+JLbp6cgYFS4sRLp3YV4S6yDuqVWHYOw==", + "dev": true, + "engines": { + "node": ">=6" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/bundle-name": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/bundle-name/-/bundle-name-3.0.0.tgz", + "integrity": "sha512-PKA4BeSvBpQKQ8iPOGCSiell+N8P+Tf1DlwqmYhpe2gAhKPHn8EYOxVT+ShuGmhg8lN8XiSlS80yiExKXrURlw==", + "dev": true, + "dependencies": { + "run-applescript": "^5.0.0" + }, + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/callsites": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/callsites/-/callsites-3.1.0.tgz", + "integrity": "sha512-P8BjAsXvZS+VIDUI11hHCQEv74YT67YUi5JJFNWIqL235sBmjX4+qx9Muvls5ivyNENctx46xQLQ3aTuE7ssaQ==", + "dev": true, + "engines": { + "node": ">=6" + } + }, + "node_modules/chalk": { + "version": "5.3.0", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-5.3.0.tgz", + "integrity": "sha512-dLitG79d+GV1Nb/VYcCDFivJeK1hiukt9QjRNVOsUtTy1rR1YJsmpGGTZ3qJos+uw7WmWF4wUwBd9jxjocFC2w==", + "dev": true, + "engines": { + "node": "^12.17.0 || ^14.13 || >=16.0.0" + }, + "funding": { + "url": "https://github.com/chalk/chalk?sponsor=1" + } + }, + "node_modules/chardet": { + "version": "0.7.0", + "resolved": "https://registry.npmjs.org/chardet/-/chardet-0.7.0.tgz", + "integrity": "sha512-mT8iDcrh03qDGRRmoA2hmBJnxpllMR+0/0qlzjqZES6NdiWDcZkCNAk4rPFZ9Q85r27unkiNNg8ZOiwZXBHwcA==", + "dev": true + }, + "node_modules/cli-cursor": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/cli-cursor/-/cli-cursor-3.1.0.tgz", + "integrity": "sha512-I/zHAwsKf9FqGoXM4WWRACob9+SNukZTd94DWF57E4toouRulbCxcUh6RKUEOQlYTHJnzkPMySvPNaaSLNfLZw==", + "dev": true, + "dependencies": { + "restore-cursor": "^3.1.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/cli-spinners": { + "version": "2.9.1", + "resolved": "https://registry.npmjs.org/cli-spinners/-/cli-spinners-2.9.1.tgz", + "integrity": "sha512-jHgecW0pxkonBJdrKsqxgRX9AcG+u/5k0Q7WPDfi8AogLAdwxEkyYYNWwZ5GvVFoFx2uiY1eNcSK00fh+1+FyQ==", + "dev": true, + "engines": { + "node": ">=6" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/cli-width": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/cli-width/-/cli-width-4.1.0.tgz", + "integrity": "sha512-ouuZd4/dm2Sw5Gmqy6bGyNNNe1qt9RpmxveLSO7KcgsTnU7RXfsw+/bukWGo1abgBiMAic068rclZsO4IWmmxQ==", + "dev": true, + "engines": { + "node": ">= 12" + } + }, + "node_modules/clone": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/clone/-/clone-1.0.4.tgz", + "integrity": "sha512-JQHZ2QMW6l3aH/j6xCqQThY/9OH4D/9ls34cgkUBiEeocRTU04tHfKPBsUK1PqZCUQM7GiA0IIXJSuXHI64Kbg==", + "dev": true, + "engines": { + "node": ">=0.8" + } + }, + "node_modules/color-convert": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", + "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", + "dev": true, + "dependencies": { + "color-name": "~1.1.4" + }, + "engines": { + "node": ">=7.0.0" + } + }, + "node_modules/color-name": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", + "dev": true + }, + "node_modules/commander": { + "version": "11.0.0", + "resolved": "https://registry.npmjs.org/commander/-/commander-11.0.0.tgz", + "integrity": "sha512-9HMlXtt/BNoYr8ooyjjNRdIilOTkVJXB+GhxMTtOKwk0R4j4lS4NpjuqmRxroBfnfTSHQIHQB7wryHhXarNjmQ==", + "dev": true, + "engines": { + "node": ">=16" + } + }, + "node_modules/comment-parser": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/comment-parser/-/comment-parser-1.4.0.tgz", + "integrity": "sha512-QLyTNiZ2KDOibvFPlZ6ZngVsZ/0gYnE6uTXi5aoDg8ed3AkJAz4sEje3Y8a29hQ1s6A99MZXe47fLAXQ1rTqaw==", + "dev": true, + "engines": { + "node": ">= 12.0.0" + } + }, + "node_modules/commondir": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/commondir/-/commondir-1.0.1.tgz", + "integrity": "sha512-W9pAhw0ja1Edb5GVdIF1mjZw/ASI0AlShXM83UUGe2DVr5TdAPEA1OA8m/g8zWp9x6On7gqufY+FatDbC3MDQg==", + "dev": true + }, + "node_modules/concat-map": { + "version": "0.0.1", + "resolved": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz", + "integrity": "sha512-/Srv4dswyQNBfohGpz9o6Yb3Gz3SrUDqBH5rTuhGR7ahtlbYKnVxw2bCFMRljaA7EXHaXZ8wsHdodFvbkhKmqg==", + "dev": true + }, + "node_modules/cross-spawn": { + "version": "7.0.3", + "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-7.0.3.tgz", + "integrity": "sha512-iRDPJKUPVEND7dHPO8rkbOnPpyDygcDFtWjpeWNCgy8WP2rXcxXL8TskReQl6OrB2G7+UJrags1q15Fudc7G6w==", + "dev": true, + "dependencies": { + "path-key": "^3.1.0", + "shebang-command": "^2.0.0", + "which": "^2.0.1" + }, + "engines": { + "node": ">= 8" + } + }, + "node_modules/debug": { + "version": "4.3.4", + "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.4.tgz", + "integrity": "sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ==", + "dev": true, + "dependencies": { + "ms": "2.1.2" + }, + "engines": { + "node": ">=6.0" + }, + "peerDependenciesMeta": { + "supports-color": { + "optional": true + } + } + }, + "node_modules/deep-is": { + "version": "0.1.4", + "resolved": "https://registry.npmjs.org/deep-is/-/deep-is-0.1.4.tgz", + "integrity": "sha512-oIPzksmTg4/MriiaYGO+okXDT7ztn/w3Eptv/+gSIdMdKsJo0u4CfYNFJPy+4SKMuCqGw2wxnA+URMg3t8a/bQ==", + "dev": true + }, + "node_modules/deepmerge": { + "version": "4.3.1", + "resolved": "https://registry.npmjs.org/deepmerge/-/deepmerge-4.3.1.tgz", + "integrity": "sha512-3sUqbMEc77XqpdNO7FRyRog+eW3ph+GYCbj+rK+uYyRMuwsVy0rMiVtPn+QJlKFvWP/1PYpapqYn0Me2knFn+A==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/default-browser": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/default-browser/-/default-browser-4.0.0.tgz", + "integrity": "sha512-wX5pXO1+BrhMkSbROFsyxUm0i/cJEScyNhA4PPxc41ICuv05ZZB/MX28s8aZx6xjmatvebIapF6hLEKEcpneUA==", + "dev": true, + "dependencies": { + "bundle-name": "^3.0.0", + "default-browser-id": "^3.0.0", + "execa": "^7.1.1", + "titleize": "^3.0.0" + }, + "engines": { + "node": ">=14.16" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/default-browser-id": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/default-browser-id/-/default-browser-id-3.0.0.tgz", + "integrity": "sha512-OZ1y3y0SqSICtE8DE4S8YOE9UZOJ8wO16fKWVP5J1Qz42kV9jcnMVFrEE/noXb/ss3Q4pZIH79kxofzyNNtUNA==", + "dev": true, + "dependencies": { + "bplist-parser": "^0.2.0", + "untildify": "^4.0.0" + }, + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/defaults": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/defaults/-/defaults-1.0.4.tgz", + "integrity": "sha512-eFuaLoy/Rxalv2kr+lqMlUnrDWV+3j4pljOIJgLIhI058IQfWJ7vXhyEIHu+HtC738klGALYxOKDO0bQP3tg8A==", + "dev": true, + "dependencies": { + "clone": "^1.0.2" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/define-lazy-prop": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/define-lazy-prop/-/define-lazy-prop-3.0.0.tgz", + "integrity": "sha512-N+MeXYoqr3pOgn8xfyRPREN7gHakLYjhsHhWGT3fWAiL4IkAt0iDw14QiiEm2bE30c5XX5q0FtAA3CK5f9/BUg==", + "dev": true, + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/dir-glob": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/dir-glob/-/dir-glob-3.0.1.tgz", + "integrity": "sha512-WkrWp9GR4KXfKGYzOLmTuGVi1UWFfws377n9cc55/tb6DuqyF6pcQ5AbiHEshaDpY9v6oaSr2XCDidGmMwdzIA==", + "dev": true, + "dependencies": { + "path-type": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/doctrine": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/doctrine/-/doctrine-3.0.0.tgz", + "integrity": "sha512-yS+Q5i3hBf7GBkd4KG8a7eBNNWNGLTaEwwYWUijIYM7zrlYDM0BFXHjjPWlWZ1Rg7UaddZeIDmi9jF3HmqiQ2w==", + "dev": true, + "dependencies": { + "esutils": "^2.0.2" + }, + "engines": { + "node": ">=6.0.0" + } + }, + "node_modules/dotenv": { + "version": "16.3.1", + "resolved": "https://registry.npmjs.org/dotenv/-/dotenv-16.3.1.tgz", + "integrity": "sha512-IPzF4w4/Rd94bA9imS68tZBaYyBWSCE47V1RGuMrB94iyTOIEwRmVL2x/4An+6mETpLrKJ5hQkB8W4kFAadeIQ==", + "dev": true, + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/motdotla/dotenv?sponsor=1" + } + }, + "node_modules/ejs": { + "version": "3.1.9", + "resolved": "https://registry.npmjs.org/ejs/-/ejs-3.1.9.tgz", + "integrity": "sha512-rC+QVNMJWv+MtPgkt0y+0rVEIdbtxVADApW9JXrUVlzHetgcyczP/E7DJmWJ4fJCZF2cPcBk0laWO9ZHMG3DmQ==", + "dev": true, + "dependencies": { + "jake": "^10.8.5" + }, + "bin": { + "ejs": "bin/cli.js" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/emoji-regex": { + "version": "8.0.0", + "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-8.0.0.tgz", + "integrity": "sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==", + "dev": true + }, + "node_modules/escape-string-regexp": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-4.0.0.tgz", + "integrity": "sha512-TtpcNJ3XAzx3Gq8sWRzJaVajRs0uVxA2YAkdb1jm2YkPz4G6egUFAyA3n5vtEIZefPk5Wa4UXbKuS5fKkJWdgA==", + "dev": true, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/eslint": { + "version": "8.50.0", + "resolved": "https://registry.npmjs.org/eslint/-/eslint-8.50.0.tgz", + "integrity": "sha512-FOnOGSuFuFLv/Sa+FDVRZl4GGVAAFFi8LecRsI5a1tMO5HIE8nCm4ivAlzt4dT3ol/PaaGC0rJEEXQmHJBGoOg==", + "dev": true, + "dependencies": { + "@eslint-community/eslint-utils": "^4.2.0", + "@eslint-community/regexpp": "^4.6.1", + "@eslint/eslintrc": "^2.1.2", + "@eslint/js": "8.50.0", + "@humanwhocodes/config-array": "^0.11.11", + "@humanwhocodes/module-importer": "^1.0.1", + "@nodelib/fs.walk": "^1.2.8", + "ajv": "^6.12.4", + "chalk": "^4.0.0", + "cross-spawn": "^7.0.2", + "debug": "^4.3.2", + "doctrine": "^3.0.0", + "escape-string-regexp": "^4.0.0", + "eslint-scope": "^7.2.2", + "eslint-visitor-keys": "^3.4.3", + "espree": "^9.6.1", + "esquery": "^1.4.2", + "esutils": "^2.0.2", + "fast-deep-equal": "^3.1.3", + "file-entry-cache": "^6.0.1", + "find-up": "^5.0.0", + "glob-parent": "^6.0.2", + "globals": "^13.19.0", + "graphemer": "^1.4.0", + "ignore": "^5.2.0", + "imurmurhash": "^0.1.4", + "is-glob": "^4.0.0", + "is-path-inside": "^3.0.3", + "js-yaml": "^4.1.0", + "json-stable-stringify-without-jsonify": "^1.0.1", + "levn": "^0.4.1", + "lodash.merge": "^4.6.2", + "minimatch": "^3.1.2", + "natural-compare": "^1.4.0", + "optionator": "^0.9.3", + "strip-ansi": "^6.0.1", + "text-table": "^0.2.0" + }, + "bin": { + "eslint": "bin/eslint.js" + }, + "engines": { + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + }, + "funding": { + "url": "https://opencollective.com/eslint" + } + }, + "node_modules/eslint-config-prettier": { + "version": "9.0.0", + "resolved": "https://registry.npmjs.org/eslint-config-prettier/-/eslint-config-prettier-9.0.0.tgz", + "integrity": "sha512-IcJsTkJae2S35pRsRAwoCE+925rJJStOdkKnLVgtE+tEpqU0EVVM7OqrwxqgptKdX29NUwC82I5pXsGFIgSevw==", + "dev": true, + "bin": { + "eslint-config-prettier": "bin/cli.js" + }, + "peerDependencies": { + "eslint": ">=7.0.0" + } + }, + "node_modules/eslint-plugin-jsdoc": { + "version": "46.8.2", + "resolved": "https://registry.npmjs.org/eslint-plugin-jsdoc/-/eslint-plugin-jsdoc-46.8.2.tgz", + "integrity": "sha512-5TSnD018f3tUJNne4s4gDWQflbsgOycIKEUBoCLn6XtBMgNHxQFmV8vVxUtiPxAQq8lrX85OaSG/2gnctxw9uQ==", + "dev": true, + "dependencies": { + "@es-joy/jsdoccomment": "~0.40.1", + "are-docs-informative": "^0.0.2", + "comment-parser": "1.4.0", + "debug": "^4.3.4", + "escape-string-regexp": "^4.0.0", + "esquery": "^1.5.0", + "is-builtin-module": "^3.2.1", + "semver": "^7.5.4", + "spdx-expression-parse": "^3.0.1" + }, + "engines": { + "node": ">=16" + }, + "peerDependencies": { + "eslint": "^7.0.0 || ^8.0.0" + } + }, + "node_modules/eslint-plugin-prettier": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/eslint-plugin-prettier/-/eslint-plugin-prettier-5.0.0.tgz", + "integrity": "sha512-AgaZCVuYDXHUGxj/ZGu1u8H8CYgDY3iG6w5kUFw4AzMVXzB7VvbKgYR4nATIN+OvUrghMbiDLeimVjVY5ilq3w==", + "dev": true, + "dependencies": { + "prettier-linter-helpers": "^1.0.0", + "synckit": "^0.8.5" + }, + "engines": { + "node": "^14.18.0 || >=16.0.0" + }, + "funding": { + "url": "https://opencollective.com/prettier" + }, + "peerDependencies": { + "@types/eslint": ">=8.0.0", + "eslint": ">=8.0.0", + "prettier": ">=3.0.0" + }, + "peerDependenciesMeta": { + "@types/eslint": { + "optional": true + }, + "eslint-config-prettier": { + "optional": true + } + } + }, + "node_modules/eslint-scope": { + "version": "7.2.2", + "resolved": "https://registry.npmjs.org/eslint-scope/-/eslint-scope-7.2.2.tgz", + "integrity": "sha512-dOt21O7lTMhDM+X9mB4GX+DZrZtCUJPL/wlcTqxyrx5IvO0IYtILdtrQGQp+8n5S0gwSVmOf9NQrjMOgfQZlIg==", + "dev": true, + "dependencies": { + "esrecurse": "^4.3.0", + "estraverse": "^5.2.0" + }, + "engines": { + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + }, + "funding": { + "url": "https://opencollective.com/eslint" + } + }, + "node_modules/eslint-visitor-keys": { + "version": "3.4.3", + "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-3.4.3.tgz", + "integrity": "sha512-wpc+LXeiyiisxPlEkUzU6svyS1frIO3Mgxj1fdy7Pm8Ygzguax2N3Fa/D/ag1WqbOprdI+uY6wMUl8/a2G+iag==", + "dev": true, + "engines": { + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + }, + "funding": { + "url": "https://opencollective.com/eslint" + } + }, + "node_modules/eslint/node_modules/ajv": { + "version": "6.12.6", + "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.12.6.tgz", + "integrity": "sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g==", + "dev": true, + "dependencies": { + "fast-deep-equal": "^3.1.1", + "fast-json-stable-stringify": "^2.0.0", + "json-schema-traverse": "^0.4.1", + "uri-js": "^4.2.2" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/epoberezkin" + } + }, + "node_modules/eslint/node_modules/chalk": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", + "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", + "dev": true, + "dependencies": { + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/chalk?sponsor=1" + } + }, + "node_modules/eslint/node_modules/globals": { + "version": "13.22.0", + "resolved": "https://registry.npmjs.org/globals/-/globals-13.22.0.tgz", + "integrity": "sha512-H1Ddc/PbZHTDVJSnj8kWptIRSD6AM3pK+mKytuIVF4uoBV7rshFlhhvA58ceJ5wp3Er58w6zj7bykMpYXt3ETw==", + "dev": true, + "dependencies": { + "type-fest": "^0.20.2" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/eslint/node_modules/has-flag": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/eslint/node_modules/json-schema-traverse": { + "version": "0.4.1", + "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-0.4.1.tgz", + "integrity": "sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg==", + "dev": true + }, + "node_modules/eslint/node_modules/supports-color": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", + "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", + "dev": true, + "dependencies": { + "has-flag": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/eslint/node_modules/type-fest": { + "version": "0.20.2", + "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.20.2.tgz", + "integrity": "sha512-Ne+eE4r0/iWnpAxD852z3A+N0Bt5RN//NjJwRd2VFHEmrywxf5vsZlh4R6lixl6B+wz/8d+maTSAkN1FIkI3LQ==", + "dev": true, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/espree": { + "version": "9.6.1", + "resolved": "https://registry.npmjs.org/espree/-/espree-9.6.1.tgz", + "integrity": "sha512-oruZaFkjorTpF32kDSI5/75ViwGeZginGGy2NoOSg3Q9bnwlnmDm4HLnkl0RE3n+njDXR037aY1+x58Z/zFdwQ==", + "dev": true, + "dependencies": { + "acorn": "^8.9.0", + "acorn-jsx": "^5.3.2", + "eslint-visitor-keys": "^3.4.1" + }, + "engines": { + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + }, + "funding": { + "url": "https://opencollective.com/eslint" + } + }, + "node_modules/esquery": { + "version": "1.5.0", + "resolved": "https://registry.npmjs.org/esquery/-/esquery-1.5.0.tgz", + "integrity": "sha512-YQLXUplAwJgCydQ78IMJywZCceoqk1oH01OERdSAJc/7U2AylwjhSCLDEtqwg811idIS/9fIU5GjG73IgjKMVg==", + "dev": true, + "dependencies": { + "estraverse": "^5.1.0" + }, + "engines": { + "node": ">=0.10" + } + }, + "node_modules/esrecurse": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/esrecurse/-/esrecurse-4.3.0.tgz", + "integrity": "sha512-KmfKL3b6G+RXvP8N1vr3Tq1kL/oCFgn2NYXEtqP8/L3pKapUA4G8cFVaoF3SU323CD4XypR/ffioHmkti6/Tag==", + "dev": true, + "dependencies": { + "estraverse": "^5.2.0" + }, + "engines": { + "node": ">=4.0" + } + }, + "node_modules/estraverse": { + "version": "5.3.0", + "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-5.3.0.tgz", + "integrity": "sha512-MMdARuVEQziNTeJD8DgMqmhwR11BRQ/cBP+pLtYdSTnf3MIO8fFeiINEbX36ZdNlfU/7A9f3gUw49B3oQsvwBA==", + "dev": true, + "engines": { + "node": ">=4.0" + } + }, + "node_modules/estree-walker": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/estree-walker/-/estree-walker-2.0.2.tgz", + "integrity": "sha512-Rfkk/Mp/DL7JVje3u18FxFujQlTNR2q6QfMSMB7AvCBx91NGj/ba3kCfza0f6dVDbw7YlRf/nDrn7pQrCCyQ/w==", + "dev": true + }, + "node_modules/esutils": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/esutils/-/esutils-2.0.3.tgz", + "integrity": "sha512-kVscqXk4OCp68SZ0dkgEKVi6/8ij300KBWTJq32P/dYeWTSwK41WyTxalN1eRmA5Z9UU/LX9D7FWSmV9SAYx6g==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/execa": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/execa/-/execa-7.2.0.tgz", + "integrity": "sha512-UduyVP7TLB5IcAQl+OzLyLcS/l32W/GLg+AhHJ+ow40FOk2U3SAllPwR44v4vmdFwIWqpdwxxpQbF1n5ta9seA==", + "dev": true, + "dependencies": { + "cross-spawn": "^7.0.3", + "get-stream": "^6.0.1", + "human-signals": "^4.3.0", + "is-stream": "^3.0.0", + "merge-stream": "^2.0.0", + "npm-run-path": "^5.1.0", + "onetime": "^6.0.0", + "signal-exit": "^3.0.7", + "strip-final-newline": "^3.0.0" + }, + "engines": { + "node": "^14.18.0 || ^16.14.0 || >=18.0.0" + }, + "funding": { + "url": "https://github.com/sindresorhus/execa?sponsor=1" + } + }, + "node_modules/execa/node_modules/mimic-fn": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/mimic-fn/-/mimic-fn-4.0.0.tgz", + "integrity": "sha512-vqiC06CuhBTUdZH+RYl8sFrL096vA45Ok5ISO6sE/Mr1jRbGH4Csnhi8f3wKVl7x8mO4Au7Ir9D3Oyv1VYMFJw==", + "dev": true, + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/execa/node_modules/onetime": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/onetime/-/onetime-6.0.0.tgz", + "integrity": "sha512-1FlR+gjXK7X+AsAHso35MnyN5KqGwJRi/31ft6x0M194ht7S+rWAvd7PHss9xSKMzE0asv1pyIHaJYq+BbacAQ==", + "dev": true, + "dependencies": { + "mimic-fn": "^4.0.0" + }, + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/external-editor": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/external-editor/-/external-editor-3.1.0.tgz", + "integrity": "sha512-hMQ4CX1p1izmuLYyZqLMO/qGNw10wSv9QDCPfzXfyFrOaCSSoRfqE1Kf1s5an66J5JZC62NewG+mK49jOCtQew==", + "dev": true, + "dependencies": { + "chardet": "^0.7.0", + "iconv-lite": "^0.4.24", + "tmp": "^0.0.33" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/fast-deep-equal": { + "version": "3.1.3", + "resolved": "https://registry.npmjs.org/fast-deep-equal/-/fast-deep-equal-3.1.3.tgz", + "integrity": "sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q==", + "dev": true + }, + "node_modules/fast-diff": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/fast-diff/-/fast-diff-1.3.0.tgz", + "integrity": "sha512-VxPP4NqbUjj6MaAOafWeUn2cXWLcCtljklUtZf0Ind4XQ+QPtmA0b18zZy0jIQx+ExRVCR/ZQpBmik5lXshNsw==", + "dev": true + }, + "node_modules/fast-glob": { + "version": "3.3.1", + "resolved": "https://registry.npmjs.org/fast-glob/-/fast-glob-3.3.1.tgz", + "integrity": "sha512-kNFPyjhh5cKjrUltxs+wFx+ZkbRaxxmZ+X0ZU31SOsxCEtP9VPgtq2teZw1DebupL5GmDaNQ6yKMMVcM41iqDg==", + "dev": true, + "dependencies": { + "@nodelib/fs.stat": "^2.0.2", + "@nodelib/fs.walk": "^1.2.3", + "glob-parent": "^5.1.2", + "merge2": "^1.3.0", + "micromatch": "^4.0.4" + }, + "engines": { + "node": ">=8.6.0" + } + }, + "node_modules/fast-glob/node_modules/glob-parent": { + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-5.1.2.tgz", + "integrity": "sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==", + "dev": true, + "dependencies": { + "is-glob": "^4.0.1" + }, + "engines": { + "node": ">= 6" + } + }, + "node_modules/fast-json-stable-stringify": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/fast-json-stable-stringify/-/fast-json-stable-stringify-2.1.0.tgz", + "integrity": "sha512-lhd/wF+Lk98HZoTCtlVraHtfh5XYijIjalXck7saUtuanSDyLMxnHhSXEDJqHxD7msR8D0uCmqlkwjCV8xvwHw==", + "dev": true + }, + "node_modules/fast-levenshtein": { + "version": "2.0.6", + "resolved": "https://registry.npmjs.org/fast-levenshtein/-/fast-levenshtein-2.0.6.tgz", + "integrity": "sha512-DCXu6Ifhqcks7TZKY3Hxp3y6qphY5SJZmrWMDrKcERSOXWQdMhU9Ig/PYrzyw/ul9jOIyh0N4M0tbC5hodg8dw==", + "dev": true + }, + "node_modules/fastq": { + "version": "1.15.0", + "resolved": "https://registry.npmjs.org/fastq/-/fastq-1.15.0.tgz", + "integrity": "sha512-wBrocU2LCXXa+lWBt8RoIRD89Fi8OdABODa/kEnyeyjS5aZO5/GNvI5sEINADqP/h8M29UHTHUb53sUu5Ihqdw==", + "dev": true, + "dependencies": { + "reusify": "^1.0.4" + } + }, + "node_modules/figures": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/figures/-/figures-5.0.0.tgz", + "integrity": "sha512-ej8ksPF4x6e5wvK9yevct0UCXh8TTFlWGVLlgjZuoBH1HwjIfKE/IdL5mq89sFA7zELi1VhKpmtDnrs7zWyeyg==", + "dev": true, + "dependencies": { + "escape-string-regexp": "^5.0.0", + "is-unicode-supported": "^1.2.0" + }, + "engines": { + "node": ">=14" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/figures/node_modules/escape-string-regexp": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-5.0.0.tgz", + "integrity": "sha512-/veY75JbMK4j1yjvuUxuVsiS/hr/4iHs9FTT6cgTexxdE0Ly/glccBAkloH/DofkjRbZU3bnoj38mOmhkZ0lHw==", + "dev": true, + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/file-entry-cache": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/file-entry-cache/-/file-entry-cache-6.0.1.tgz", + "integrity": "sha512-7Gps/XWymbLk2QLYK4NzpMOrYjMhdIxXuIvy2QBsLE6ljuodKvdkWs/cpyJJ3CVIVpH0Oi1Hvg1ovbMzLdFBBg==", + "dev": true, + "dependencies": { + "flat-cache": "^3.0.4" + }, + "engines": { + "node": "^10.12.0 || >=12.0.0" + } + }, + "node_modules/filelist": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/filelist/-/filelist-1.0.4.tgz", + "integrity": "sha512-w1cEuf3S+DrLCQL7ET6kz+gmlJdbq9J7yXCSjK/OZCPA+qEN1WyF4ZAf0YYJa4/shHJra2t/d/r8SV4Ji+x+8Q==", + "dev": true, + "dependencies": { + "minimatch": "^5.0.1" + } + }, + "node_modules/filelist/node_modules/brace-expansion": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-2.0.1.tgz", + "integrity": "sha512-XnAIvQ8eM+kC6aULx6wuQiwVsnzsi9d3WxzV3FpWTGA19F621kwdbsAcFKXgKUHZWsy+mY6iL1sHTxWEFCytDA==", + "dev": true, + "dependencies": { + "balanced-match": "^1.0.0" + } + }, + "node_modules/filelist/node_modules/minimatch": { + "version": "5.1.6", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-5.1.6.tgz", + "integrity": "sha512-lKwV/1brpG6mBUFHtb7NUmtABCb2WZZmm2wNiOA5hAb8VdCS4B3dtMWyvcoViccwAW/COERjXLt0zP1zXUN26g==", + "dev": true, + "dependencies": { + "brace-expansion": "^2.0.1" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/fill-range": { + "version": "7.0.1", + "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-7.0.1.tgz", + "integrity": "sha512-qOo9F+dMUmC2Lcb4BbVvnKJxTPjCm+RRpe4gDuGrzkL7mEVl/djYSu2OdQ2Pa302N4oqkSg9ir6jaLWJ2USVpQ==", + "dev": true, + "dependencies": { + "to-regex-range": "^5.0.1" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/find-process": { + "version": "1.4.7", + "resolved": "https://registry.npmjs.org/find-process/-/find-process-1.4.7.tgz", + "integrity": "sha512-/U4CYp1214Xrp3u3Fqr9yNynUrr5Le4y0SsJh2lMDDSbpwYSz3M2SMWQC+wqcx79cN8PQtHQIL8KnuY9M66fdg==", + "dev": true, + "dependencies": { + "chalk": "^4.0.0", + "commander": "^5.1.0", + "debug": "^4.1.1" + }, + "bin": { + "find-process": "bin/find-process.js" + } + }, + "node_modules/find-process/node_modules/chalk": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", + "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", + "dev": true, + "dependencies": { + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/chalk?sponsor=1" + } + }, + "node_modules/find-process/node_modules/commander": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/commander/-/commander-5.1.0.tgz", + "integrity": "sha512-P0CysNDQ7rtVw4QIQtm+MRxV66vKFSvlsQvGYXZWR3qFU0jlMKHZZZgw8e+8DSah4UDKMqnknRDQz+xuQXQ/Zg==", + "dev": true, + "engines": { + "node": ">= 6" + } + }, + "node_modules/find-process/node_modules/has-flag": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/find-process/node_modules/supports-color": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", + "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", + "dev": true, + "dependencies": { + "has-flag": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/find-up": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/find-up/-/find-up-5.0.0.tgz", + "integrity": "sha512-78/PXT1wlLLDgTzDs7sjq9hzz0vXD+zn+7wypEe4fXQxCmdmqfGsEPQxmiCSQI3ajFV91bVSsvNtrJRiW6nGng==", + "dev": true, + "dependencies": { + "locate-path": "^6.0.0", + "path-exists": "^4.0.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/flat-cache": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/flat-cache/-/flat-cache-3.1.0.tgz", + "integrity": "sha512-OHx4Qwrrt0E4jEIcI5/Xb+f+QmJYNj2rrK8wiIdQOIrB9WrrJL8cjZvXdXuBTkkEwEqLycb5BeZDV1o2i9bTew==", + "dev": true, + "dependencies": { + "flatted": "^3.2.7", + "keyv": "^4.5.3", + "rimraf": "^3.0.2" + }, + "engines": { + "node": ">=12.0.0" + } + }, + "node_modules/flatted": { + "version": "3.2.9", + "resolved": "https://registry.npmjs.org/flatted/-/flatted-3.2.9.tgz", + "integrity": "sha512-36yxDn5H7OFZQla0/jFJmbIKTdZAQHngCedGxiMmpNfEZM0sdEeT+WczLQrjK6D7o2aiyLYDnkw0R3JK0Qv1RQ==", + "dev": true + }, + "node_modules/fs.realpath": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/fs.realpath/-/fs.realpath-1.0.0.tgz", + "integrity": "sha512-OO0pH2lK6a0hZnAdau5ItzHPI6pUlvI7jMVnxUQRtw4owF2wk8lOSabtGDCTP4Ggrg2MbGnWO9X8K1t4+fGMDw==", + "dev": true + }, + "node_modules/fsevents": { + "version": "2.3.3", + "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-2.3.3.tgz", + "integrity": "sha512-5xoDfX+fL7faATnagmWPpbFtwh/R77WmMMqqHGS65C3vvB0YHrgF+B1YmZ3441tMj5n63k0212XNoJwzlhffQw==", + "dev": true, + "hasInstallScript": true, + "optional": true, + "os": [ + "darwin" + ], + "engines": { + "node": "^8.16.0 || ^10.6.0 || >=11.0.0" + } + }, + "node_modules/function-bind": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/function-bind/-/function-bind-1.1.1.tgz", + "integrity": "sha512-yIovAzMX49sF8Yl58fSCWJ5svSLuaibPxXQJFLmBObTuCr0Mf1KiPopGM9NiFjiYBCbfaa2Fh6breQ6ANVTI0A==", + "dev": true + }, + "node_modules/get-stream": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-6.0.1.tgz", + "integrity": "sha512-ts6Wi+2j3jQjqi70w5AlN8DFnkSwC+MqmxEzdEALB2qXZYV3X/b1CTfgPLGJNMeAWxdPfU8FO1ms3NUfaHCPYg==", + "dev": true, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/glob": { + "version": "8.1.0", + "resolved": "https://registry.npmjs.org/glob/-/glob-8.1.0.tgz", + "integrity": "sha512-r8hpEjiQEYlF2QU0df3dS+nxxSIreXQS1qRhMJM0Q5NDdR386C7jb7Hwwod8Fgiuex+k0GFjgft18yvxm5XoCQ==", + "dev": true, + "dependencies": { + "fs.realpath": "^1.0.0", + "inflight": "^1.0.4", + "inherits": "2", + "minimatch": "^5.0.1", + "once": "^1.3.0" + }, + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, + "node_modules/glob-parent": { + "version": "6.0.2", + "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-6.0.2.tgz", + "integrity": "sha512-XxwI8EOhVQgWp6iDL+3b0r86f4d6AX6zSU55HfB4ydCEuXLXc5FcYeOu+nnGftS4TEju/11rt4KJPTMgbfmv4A==", + "dev": true, + "dependencies": { + "is-glob": "^4.0.3" + }, + "engines": { + "node": ">=10.13.0" + } + }, + "node_modules/glob/node_modules/brace-expansion": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-2.0.1.tgz", + "integrity": "sha512-XnAIvQ8eM+kC6aULx6wuQiwVsnzsi9d3WxzV3FpWTGA19F621kwdbsAcFKXgKUHZWsy+mY6iL1sHTxWEFCytDA==", + "dev": true, + "dependencies": { + "balanced-match": "^1.0.0" + } + }, + "node_modules/glob/node_modules/minimatch": { + "version": "5.1.6", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-5.1.6.tgz", + "integrity": "sha512-lKwV/1brpG6mBUFHtb7NUmtABCb2WZZmm2wNiOA5hAb8VdCS4B3dtMWyvcoViccwAW/COERjXLt0zP1zXUN26g==", + "dev": true, + "dependencies": { + "brace-expansion": "^2.0.1" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/globals": { + "version": "11.12.0", + "resolved": "https://registry.npmjs.org/globals/-/globals-11.12.0.tgz", + "integrity": "sha512-WOBp/EEGUiIsJSp7wcv/y6MO+lV9UoncWqxuFfm8eBwzWNgyfBd6Gz+IeKQ9jCmyhoH99g15M3T+QaVHFjizVA==", + "dev": true, + "engines": { + "node": ">=4" + } + }, + "node_modules/globby": { + "version": "11.1.0", + "resolved": "https://registry.npmjs.org/globby/-/globby-11.1.0.tgz", + "integrity": "sha512-jhIXaOzy1sb8IyocaruWSn1TjmnBVs8Ayhcy83rmxNJ8q2uWKCAj3CnJY+KpGSXCueAPc0i05kVvVKtP1t9S3g==", + "dev": true, + "dependencies": { + "array-union": "^2.1.0", + "dir-glob": "^3.0.1", + "fast-glob": "^3.2.9", + "ignore": "^5.2.0", + "merge2": "^1.4.1", + "slash": "^3.0.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/graphemer": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/graphemer/-/graphemer-1.4.0.tgz", + "integrity": "sha512-EtKwoO6kxCL9WO5xipiHTZlSzBm7WLT627TqC/uVRd0HKmq8NXyebnNYxDoBi7wt8eTWrUrKXCOVaFq9x1kgag==", + "dev": true + }, + "node_modules/has": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/has/-/has-1.0.3.tgz", + "integrity": "sha512-f2dvO0VU6Oej7RkWJGrehjbzMAjFp5/VKPp5tTpWIV4JHHZK1/BxbFRtf/siA2SWTe09caDmVtYYzWEIbBS4zw==", + "dev": true, + "dependencies": { + "function-bind": "^1.1.1" + }, + "engines": { + "node": ">= 0.4.0" + } + }, + "node_modules/has-flag": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz", + "integrity": "sha512-sKJf1+ceQBr4SMkvQnBDNDtf4TXpVhVGateu0t918bl30FnbE2m4vNLX+VWe/dpjlb+HugGYzW7uQXH98HPEYw==", + "dev": true, + "engines": { + "node": ">=4" + } + }, + "node_modules/human-signals": { + "version": "4.3.1", + "resolved": "https://registry.npmjs.org/human-signals/-/human-signals-4.3.1.tgz", + "integrity": "sha512-nZXjEF2nbo7lIw3mgYjItAfgQXog3OjJogSbKa2CQIIvSGWcKgeJnQlNXip6NglNzYH45nSRiEVimMvYL8DDqQ==", + "dev": true, + "engines": { + "node": ">=14.18.0" + } + }, + "node_modules/iconv-lite": { + "version": "0.4.24", + "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.4.24.tgz", + "integrity": "sha512-v3MXnZAcvnywkTUEZomIActle7RXXeedOR31wwl7VlyoXO4Qi9arvSenNQWne1TcRwhCL1HwLI21bEqdpj8/rA==", + "dev": true, + "dependencies": { + "safer-buffer": ">= 2.1.2 < 3" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/ieee754": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/ieee754/-/ieee754-1.2.1.tgz", + "integrity": "sha512-dcyqhDvX1C46lXZcVqCpK+FtMRQVdIMN6/Df5js2zouUsqG7I6sFxitIC+7KYK29KdXOLHdu9zL4sFnoVQnqaA==", + "dev": true, + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/feross" + }, + { + "type": "patreon", + "url": "https://www.patreon.com/feross" + }, + { + "type": "consulting", + "url": "https://feross.org/support" + } + ] + }, + "node_modules/ignore": { + "version": "5.2.4", + "resolved": "https://registry.npmjs.org/ignore/-/ignore-5.2.4.tgz", + "integrity": "sha512-MAb38BcSbH0eHNBxn7ql2NH/kX33OkB3lZ1BNdh7ENeRChHTYsTvWrMubiIAMNS2llXEEgZ1MUOBtXChP3kaFQ==", + "dev": true, + "engines": { + "node": ">= 4" + } + }, + "node_modules/import-fresh": { + "version": "3.3.0", + "resolved": "https://registry.npmjs.org/import-fresh/-/import-fresh-3.3.0.tgz", + "integrity": "sha512-veYYhQa+D1QBKznvhUHxb8faxlrwUnxseDAbAp457E0wLNio2bOSKnjYDhMj+YiAq61xrMGhQk9iXVk5FzgQMw==", + "dev": true, + "dependencies": { + "parent-module": "^1.0.0", + "resolve-from": "^4.0.0" + }, + "engines": { + "node": ">=6" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/imurmurhash": { + "version": "0.1.4", + "resolved": "https://registry.npmjs.org/imurmurhash/-/imurmurhash-0.1.4.tgz", + "integrity": "sha512-JmXMZ6wuvDmLiHEml9ykzqO6lwFbof0GG4IkcGaENdCRDDmMVnny7s5HsIgHCbaq0w2MyPhDqkhTUgS2LU2PHA==", + "dev": true, + "engines": { + "node": ">=0.8.19" + } + }, + "node_modules/inflight": { + "version": "1.0.6", + "resolved": "https://registry.npmjs.org/inflight/-/inflight-1.0.6.tgz", + "integrity": "sha512-k92I/b08q4wvFscXCLvqfsHCrjrF7yiXsQuIVvVE7N82W3+aqpzuUdBbfhWcy/FZR3/4IgflMgKLOsvPDrGCJA==", + "dev": true, + "dependencies": { + "once": "^1.3.0", + "wrappy": "1" + } + }, + "node_modules/inherits": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.4.tgz", + "integrity": "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==", + "dev": true + }, + "node_modules/inquirer": { + "version": "9.2.11", + "resolved": "https://registry.npmjs.org/inquirer/-/inquirer-9.2.11.tgz", + "integrity": "sha512-B2LafrnnhbRzCWfAdOXisUzL89Kg8cVJlYmhqoi3flSiV/TveO+nsXwgKr9h9PIo+J1hz7nBSk6gegRIMBBf7g==", + "dev": true, + "dependencies": { + "@ljharb/through": "^2.3.9", + "ansi-escapes": "^4.3.2", + "chalk": "^5.3.0", + "cli-cursor": "^3.1.0", + "cli-width": "^4.1.0", + "external-editor": "^3.1.0", + "figures": "^5.0.0", + "lodash": "^4.17.21", + "mute-stream": "1.0.0", + "ora": "^5.4.1", + "run-async": "^3.0.0", + "rxjs": "^7.8.1", + "string-width": "^4.2.3", + "strip-ansi": "^6.0.1", + "wrap-ansi": "^6.2.0" + }, + "engines": { + "node": ">=14.18.0" + } + }, + "node_modules/is-builtin-module": { + "version": "3.2.1", + "resolved": "https://registry.npmjs.org/is-builtin-module/-/is-builtin-module-3.2.1.tgz", + "integrity": "sha512-BSLE3HnV2syZ0FK0iMA/yUGplUeMmNz4AW5fnTunbCIqZi4vG3WjJT9FHMy5D69xmAYBHXQhJdALdpwVxV501A==", + "dev": true, + "dependencies": { + "builtin-modules": "^3.3.0" + }, + "engines": { + "node": ">=6" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/is-core-module": { + "version": "2.13.0", + "resolved": "https://registry.npmjs.org/is-core-module/-/is-core-module-2.13.0.tgz", + "integrity": "sha512-Z7dk6Qo8pOCp3l4tsX2C5ZVas4V+UxwQodwZhLopL91TX8UyyHEXafPcyoeeWuLrwzHcr3igO78wNLwHJHsMCQ==", + "dev": true, + "dependencies": { + "has": "^1.0.3" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-docker": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/is-docker/-/is-docker-3.0.0.tgz", + "integrity": "sha512-eljcgEDlEns/7AXFosB5K/2nCM4P7FQPkGc/DWLy5rmFEWvZayGrik1d9/QIY5nJ4f9YsVvBkA6kJpHn9rISdQ==", + "dev": true, + "bin": { + "is-docker": "cli.js" + }, + "engines": { + "node": "^12.20.0 || ^14.13.1 || >=16.0.0" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/is-extglob": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/is-extglob/-/is-extglob-2.1.1.tgz", + "integrity": "sha512-SbKbANkN603Vi4jEZv49LeVJMn4yGwsbzZworEoyEiutsN3nJYdbO36zfhGJ6QEDpOZIFkDtnq5JRxmvl3jsoQ==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/is-fullwidth-code-point": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz", + "integrity": "sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/is-glob": { + "version": "4.0.3", + "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-4.0.3.tgz", + "integrity": "sha512-xelSayHH36ZgE7ZWhli7pW34hNbNl8Ojv5KVmkJD4hBdD3th8Tfk9vYasLM+mXWOZhFkgZfxhLSnrwRr4elSSg==", + "dev": true, + "dependencies": { + "is-extglob": "^2.1.1" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/is-inside-container": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-inside-container/-/is-inside-container-1.0.0.tgz", + "integrity": "sha512-KIYLCCJghfHZxqjYBE7rEy0OBuTd5xCHS7tHVgvCLkx7StIoaxwNW3hCALgEUjFfeRk+MG/Qxmp/vtETEF3tRA==", + "dev": true, + "dependencies": { + "is-docker": "^3.0.0" + }, + "bin": { + "is-inside-container": "cli.js" + }, + "engines": { + "node": ">=14.16" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/is-interactive": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/is-interactive/-/is-interactive-2.0.0.tgz", + "integrity": "sha512-qP1vozQRI+BMOPcjFzrjXuQvdak2pHNUMZoeG2eRbiSqyvbEf/wQtEOTOX1guk6E3t36RkaqiSt8A/6YElNxLQ==", + "dev": true, + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/is-module": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-module/-/is-module-1.0.0.tgz", + "integrity": "sha512-51ypPSPCoTEIN9dy5Oy+h4pShgJmPCygKfyRCISBI+JoWT/2oJvK8QPxmwv7b/p239jXrm9M1mlQbyKJ5A152g==", + "dev": true + }, + "node_modules/is-number": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/is-number/-/is-number-7.0.0.tgz", + "integrity": "sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==", + "dev": true, + "engines": { + "node": ">=0.12.0" + } + }, + "node_modules/is-path-inside": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/is-path-inside/-/is-path-inside-3.0.3.tgz", + "integrity": "sha512-Fd4gABb+ycGAmKou8eMftCupSir5lRxqf4aD/vd0cD2qc4HL07OjCeuHMr8Ro4CoMaeCKDB0/ECBOVWjTwUvPQ==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/is-reference": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/is-reference/-/is-reference-1.2.1.tgz", + "integrity": "sha512-U82MsXXiFIrjCK4otLT+o2NA2Cd2g5MLoOVXUZjIOhLurrRxpEXzI8O0KZHr3IjLvlAH1kTPYSuqer5T9ZVBKQ==", + "dev": true, + "dependencies": { + "@types/estree": "*" + } + }, + "node_modules/is-stream": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/is-stream/-/is-stream-3.0.0.tgz", + "integrity": "sha512-LnQR4bZ9IADDRSkvpqMGvt/tEJWclzklNgSw48V5EAaAeDd6qGvN8ei6k5p0tvxSR171VmGyHuTiAOfxAbr8kA==", + "dev": true, + "engines": { + "node": "^12.20.0 || ^14.13.1 || >=16.0.0" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/is-unicode-supported": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/is-unicode-supported/-/is-unicode-supported-1.3.0.tgz", + "integrity": "sha512-43r2mRvz+8JRIKnWJ+3j8JtjRKZ6GmjzfaE/qiBJnikNnYv/6bagRJ1kUhNk8R5EX/GkobD+r+sfxCPJsiKBLQ==", + "dev": true, + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/is-wsl": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/is-wsl/-/is-wsl-2.2.0.tgz", + "integrity": "sha512-fKzAra0rGJUUBwGBgNkHZuToZcn+TtXHpeCgmkMJMMYx1sQDYaCSyjJBSCa2nH1DGm7s3n1oBnohoVTBaN7Lww==", + "dev": true, + "dependencies": { + "is-docker": "^2.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/is-wsl/node_modules/is-docker": { + "version": "2.2.1", + "resolved": "https://registry.npmjs.org/is-docker/-/is-docker-2.2.1.tgz", + "integrity": "sha512-F+i2BKsFrH66iaUFc0woD8sLy8getkwTwtOBjvs56Cx4CgJDeKQeqfz8wAYiSb8JOprWhHH5p77PbmYCvvUuXQ==", + "dev": true, + "bin": { + "is-docker": "cli.js" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/isexe": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/isexe/-/isexe-2.0.0.tgz", + "integrity": "sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw==", + "dev": true + }, + "node_modules/jake": { + "version": "10.8.7", + "resolved": "https://registry.npmjs.org/jake/-/jake-10.8.7.tgz", + "integrity": "sha512-ZDi3aP+fG/LchyBzUM804VjddnwfSfsdeYkwt8NcbKRvo4rFkjhs456iLFn3k2ZUWvNe4i48WACDbza8fhq2+w==", + "dev": true, + "dependencies": { + "async": "^3.2.3", + "chalk": "^4.0.2", + "filelist": "^1.0.4", + "minimatch": "^3.1.2" + }, + "bin": { + "jake": "bin/cli.js" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/jake/node_modules/chalk": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", + "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", + "dev": true, + "dependencies": { + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/chalk?sponsor=1" + } + }, + "node_modules/jake/node_modules/has-flag": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/jake/node_modules/supports-color": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", + "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", + "dev": true, + "dependencies": { + "has-flag": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/javascript-natural-sort": { + "version": "0.7.1", + "resolved": "https://registry.npmjs.org/javascript-natural-sort/-/javascript-natural-sort-0.7.1.tgz", + "integrity": "sha512-nO6jcEfZWQXDhOiBtG2KvKyEptz7RVbpGP4vTD2hLBdmNQSsCiicO2Ioinv6UI4y9ukqnBpy+XZ9H6uLNgJTlw==", + "dev": true + }, + "node_modules/js-tokens": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/js-tokens/-/js-tokens-4.0.0.tgz", + "integrity": "sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ==", + "dev": true + }, + "node_modules/js-yaml": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-4.1.0.tgz", + "integrity": "sha512-wpxZs9NoxZaJESJGIZTyDEaYpl0FKSA+FB9aJiyemKhMwkxQg63h4T1KJgUGHpTqPDNRcmmYLugrRjJlBtWvRA==", + "dev": true, + "dependencies": { + "argparse": "^2.0.1" + }, + "bin": { + "js-yaml": "bin/js-yaml.js" + } + }, + "node_modules/jsdoc-type-pratt-parser": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/jsdoc-type-pratt-parser/-/jsdoc-type-pratt-parser-4.0.0.tgz", + "integrity": "sha512-YtOli5Cmzy3q4dP26GraSOeAhqecewG04hoO8DY56CH4KJ9Fvv5qKWUCCo3HZob7esJQHCv6/+bnTy72xZZaVQ==", + "dev": true, + "engines": { + "node": ">=12.0.0" + } + }, + "node_modules/jsesc": { + "version": "2.5.2", + "resolved": "https://registry.npmjs.org/jsesc/-/jsesc-2.5.2.tgz", + "integrity": "sha512-OYu7XEzjkCQ3C5Ps3QIZsQfNpqoJyZZA99wd9aWd05NCtC5pWOkShK2mkL6HXQR6/Cy2lbNdPlZBpuQHXE63gA==", + "dev": true, + "bin": { + "jsesc": "bin/jsesc" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/json-buffer": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/json-buffer/-/json-buffer-3.0.1.tgz", + "integrity": "sha512-4bV5BfR2mqfQTJm+V5tPPdf+ZpuhiIvTuAB5g8kcrXOZpTT/QwwVRWBywX1ozr6lEuPdbHxwaJlm9G6mI2sfSQ==", + "dev": true + }, + "node_modules/json-schema-traverse": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-1.0.0.tgz", + "integrity": "sha512-NM8/P9n3XjXhIZn1lLhkFaACTOURQXjWhV4BA/RnOv8xvgqtqpAX9IO4mRQxSx1Rlo4tqzeqb0sOlruaOy3dug==", + "dev": true + }, + "node_modules/json-stable-stringify-without-jsonify": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/json-stable-stringify-without-jsonify/-/json-stable-stringify-without-jsonify-1.0.1.tgz", + "integrity": "sha512-Bdboy+l7tA3OGW6FjyFHWkP5LuByj1Tk33Ljyq0axyzdk9//JSi2u3fP1QSmd1KNwq6VOKYGlAu87CisVir6Pw==", + "dev": true + }, + "node_modules/keyv": { + "version": "4.5.3", + "resolved": "https://registry.npmjs.org/keyv/-/keyv-4.5.3.tgz", + "integrity": "sha512-QCiSav9WaX1PgETJ+SpNnx2PRRapJ/oRSXM4VO5OGYGSjrxbKPVFVhB3l2OCbLCk329N8qyAtsJjSjvVBWzEug==", + "dev": true, + "dependencies": { + "json-buffer": "3.0.1" + } + }, + "node_modules/levn": { + "version": "0.4.1", + "resolved": "https://registry.npmjs.org/levn/-/levn-0.4.1.tgz", + "integrity": "sha512-+bT2uH4E5LGE7h/n3evcS/sQlJXCpIp6ym8OWJ5eV6+67Dsql/LaaT7qJBAt2rzfoa/5QBGBhxDix1dMt2kQKQ==", + "dev": true, + "dependencies": { + "prelude-ls": "^1.2.1", + "type-check": "~0.4.0" + }, + "engines": { + "node": ">= 0.8.0" + } + }, + "node_modules/locate-path": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-6.0.0.tgz", + "integrity": "sha512-iPZK6eYjbxRu3uB4/WZ3EsEIMJFMqAoopl3R+zuq0UjcAm/MO6KCweDgPfP3elTztoKP3KtnVHxTn2NHBSDVUw==", + "dev": true, + "dependencies": { + "p-locate": "^5.0.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/lodash": { + "version": "4.17.21", + "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.21.tgz", + "integrity": "sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg==", + "dev": true + }, + "node_modules/lodash.merge": { + "version": "4.6.2", + "resolved": "https://registry.npmjs.org/lodash.merge/-/lodash.merge-4.6.2.tgz", + "integrity": "sha512-0KpjqXRVvrYyCsX1swR/XTK0va6VQkQM6MNo7PqW77ByjAhoARA8EfrP1N4+KlKj8YS0ZUCtRT/YUuhyYDujIQ==", + "dev": true + }, + "node_modules/log-symbols": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/log-symbols/-/log-symbols-5.1.0.tgz", + "integrity": "sha512-l0x2DvrW294C9uDCoQe1VSU4gf529FkSZ6leBl4TiqZH/e+0R7hSfHQBNut2mNygDgHwvYHfFLn6Oxb3VWj2rA==", + "dev": true, + "dependencies": { + "chalk": "^5.0.0", + "is-unicode-supported": "^1.1.0" + }, + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/lru-cache": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-6.0.0.tgz", + "integrity": "sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==", + "dev": true, + "dependencies": { + "yallist": "^4.0.0" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/magic-string": { + "version": "0.27.0", + "resolved": "https://registry.npmjs.org/magic-string/-/magic-string-0.27.0.tgz", + "integrity": "sha512-8UnnX2PeRAPZuN12svgR9j7M1uWMovg/CEnIwIG0LFkXSJJe4PdfUGiTGl8V9bsBHFUtfVINcSyYxd7q+kx9fA==", + "dev": true, + "dependencies": { + "@jridgewell/sourcemap-codec": "^1.4.13" + }, + "engines": { + "node": ">=12" + } + }, + "node_modules/merge-stream": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/merge-stream/-/merge-stream-2.0.0.tgz", + "integrity": "sha512-abv/qOcuPfk3URPfDzmZU1LKmuw8kT+0nIHvKrKgFrwifol/doWcdA4ZqsWQ8ENrFKkd67Mfpo/LovbIUsbt3w==", + "dev": true + }, + "node_modules/merge2": { + "version": "1.4.1", + "resolved": "https://registry.npmjs.org/merge2/-/merge2-1.4.1.tgz", + "integrity": "sha512-8q7VEgMJW4J8tcfVPy8g09NcQwZdbwFEqhe/WZkoIzjn/3TGDwtOCYtXGxA3O8tPzpczCCDgv+P2P5y00ZJOOg==", + "dev": true, + "engines": { + "node": ">= 8" + } + }, + "node_modules/micromatch": { + "version": "4.0.5", + "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-4.0.5.tgz", + "integrity": "sha512-DMy+ERcEW2q8Z2Po+WNXuw3c5YaUSFjAO5GsJqfEl7UjvtIuFKO6ZrKvcItdy98dwFI2N1tg3zNIdKaQT+aNdA==", + "dev": true, + "dependencies": { + "braces": "^3.0.2", + "picomatch": "^2.3.1" + }, + "engines": { + "node": ">=8.6" + } + }, + "node_modules/mimic-fn": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/mimic-fn/-/mimic-fn-2.1.0.tgz", + "integrity": "sha512-OqbOk5oEQeAZ8WXWydlu9HJjz9WVdEIvamMCcXmuqUYjTknH/sqsWvhQ3vgwKFRR1HpjvNBKQ37nbJgYzGqGcg==", + "dev": true, + "engines": { + "node": ">=6" + } + }, + "node_modules/minimatch": { + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz", + "integrity": "sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==", + "dev": true, + "dependencies": { + "brace-expansion": "^1.1.7" + }, + "engines": { + "node": "*" + } + }, + "node_modules/ms": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", + "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==", + "dev": true + }, + "node_modules/mute-stream": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/mute-stream/-/mute-stream-1.0.0.tgz", + "integrity": "sha512-avsJQhyd+680gKXyG/sQc0nXaC6rBkPOfyHYcFb9+hdkqQkR9bdnkJ0AMZhke0oesPqIO+mFFJ+IdBc7mst4IA==", + "dev": true, + "engines": { + "node": "^14.17.0 || ^16.13.0 || >=18.0.0" + } + }, + "node_modules/natural-compare": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/natural-compare/-/natural-compare-1.4.0.tgz", + "integrity": "sha512-OWND8ei3VtNC9h7V60qff3SVobHr996CTwgxubgyQYEpg290h9J0buyECNNJexkFm5sOajh5G116RYA1c8ZMSw==", + "dev": true + }, + "node_modules/npm-run-path": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/npm-run-path/-/npm-run-path-5.1.0.tgz", + "integrity": "sha512-sJOdmRGrY2sjNTRMbSvluQqg+8X7ZK61yvzBEIDhz4f8z1TZFYABsqjjCBd/0PUNE9M6QDgHJXQkGUEm7Q+l9Q==", + "dev": true, + "dependencies": { + "path-key": "^4.0.0" + }, + "engines": { + "node": "^12.20.0 || ^14.13.1 || >=16.0.0" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/npm-run-path/node_modules/path-key": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/path-key/-/path-key-4.0.0.tgz", + "integrity": "sha512-haREypq7xkM7ErfgIyA0z+Bj4AGKlMSdlQE2jvJo6huWD1EdkKYV+G/T4nq0YEF2vgTT8kqMFKo1uHn950r4SQ==", + "dev": true, + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/once": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/once/-/once-1.4.0.tgz", + "integrity": "sha512-lNaJgI+2Q5URQBkccEKHTQOPaXdUxnZZElQTZY0MFUAuaEqe1E+Nyvgdz/aIyNi6Z9MzO5dv1H8n58/GELp3+w==", + "dev": true, + "dependencies": { + "wrappy": "1" + } + }, + "node_modules/onetime": { + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/onetime/-/onetime-5.1.2.tgz", + "integrity": "sha512-kbpaSSGJTWdAY5KPVeMOKXSrPtr8C8C7wodJbcsd51jRnmD+GZu8Y0VoU6Dm5Z4vWr0Ig/1NKuWRKf7j5aaYSg==", + "dev": true, + "dependencies": { + "mimic-fn": "^2.1.0" + }, + "engines": { + "node": ">=6" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/open": { + "version": "9.1.0", + "resolved": "https://registry.npmjs.org/open/-/open-9.1.0.tgz", + "integrity": "sha512-OS+QTnw1/4vrf+9hh1jc1jnYjzSG4ttTBB8UxOwAnInG3Uo4ssetzC1ihqaIHjLJnA5GGlRl6QlZXOTQhRBUvg==", + "dev": true, + "dependencies": { + "default-browser": "^4.0.0", + "define-lazy-prop": "^3.0.0", + "is-inside-container": "^1.0.0", + "is-wsl": "^2.2.0" + }, + "engines": { + "node": ">=14.16" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/optionator": { + "version": "0.9.3", + "resolved": "https://registry.npmjs.org/optionator/-/optionator-0.9.3.tgz", + "integrity": "sha512-JjCoypp+jKn1ttEFExxhetCKeJt9zhAgAve5FXHixTvFDW/5aEktX9bufBKLRRMdU7bNtpLfcGu94B3cdEJgjg==", + "dev": true, + "dependencies": { + "@aashutoshrathi/word-wrap": "^1.2.3", + "deep-is": "^0.1.3", + "fast-levenshtein": "^2.0.6", + "levn": "^0.4.1", + "prelude-ls": "^1.2.1", + "type-check": "^0.4.0" + }, + "engines": { + "node": ">= 0.8.0" + } + }, + "node_modules/ora": { + "version": "5.4.1", + "resolved": "https://registry.npmjs.org/ora/-/ora-5.4.1.tgz", + "integrity": "sha512-5b6Y85tPxZZ7QytO+BQzysW31HJku27cRIlkbAXaNx+BdcVi+LlRFmVXzeF6a7JCwJpyw5c4b+YSVImQIrBpuQ==", + "dev": true, + "dependencies": { + "bl": "^4.1.0", + "chalk": "^4.1.0", + "cli-cursor": "^3.1.0", + "cli-spinners": "^2.5.0", + "is-interactive": "^1.0.0", + "is-unicode-supported": "^0.1.0", + "log-symbols": "^4.1.0", + "strip-ansi": "^6.0.0", + "wcwidth": "^1.0.1" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/ora/node_modules/chalk": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", + "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", + "dev": true, + "dependencies": { + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/chalk?sponsor=1" + } + }, + "node_modules/ora/node_modules/has-flag": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/ora/node_modules/is-interactive": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-interactive/-/is-interactive-1.0.0.tgz", + "integrity": "sha512-2HvIEKRoqS62guEC+qBjpvRubdX910WCMuJTZ+I9yvqKU2/12eSL549HMwtabb4oupdj2sMP50k+XJfB/8JE6w==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/ora/node_modules/is-unicode-supported": { + "version": "0.1.0", + "resolved": "https://registry.npmjs.org/is-unicode-supported/-/is-unicode-supported-0.1.0.tgz", + "integrity": "sha512-knxG2q4UC3u8stRGyAVJCOdxFmv5DZiRcdlIaAQXAbSfJya+OhopNotLQrstBhququ4ZpuKbDc/8S6mgXgPFPw==", + "dev": true, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/ora/node_modules/log-symbols": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/log-symbols/-/log-symbols-4.1.0.tgz", + "integrity": "sha512-8XPvpAA8uyhfteu8pIvQxpJZ7SYYdpUivZpGy6sFsBuKRY/7rQGavedeB8aK+Zkyq6upMFVL/9AW6vOYzfRyLg==", + "dev": true, + "dependencies": { + "chalk": "^4.1.0", + "is-unicode-supported": "^0.1.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/ora/node_modules/supports-color": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", + "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", + "dev": true, + "dependencies": { + "has-flag": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/os-tmpdir": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/os-tmpdir/-/os-tmpdir-1.0.2.tgz", + "integrity": "sha512-D2FR03Vir7FIu45XBY20mTb+/ZSWB00sjU9jdQXt83gDrI4Ztz5Fs7/yy74g2N5SVQY4xY1qDr4rNddwYRVX0g==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/p-limit": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-3.1.0.tgz", + "integrity": "sha512-TYOanM3wGwNGsZN2cVTYPArw454xnXj5qmWF1bEoAc4+cU/ol7GVh7odevjp1FNHduHc3KZMcFduxU5Xc6uJRQ==", + "dev": true, + "dependencies": { + "yocto-queue": "^0.1.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/p-locate": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-5.0.0.tgz", + "integrity": "sha512-LaNjtRWUBY++zB5nE/NwcaoMylSPk+S+ZHNB1TzdbMJMny6dynpAGt7X/tl/QYq3TIeE6nxHppbo2LGymrG5Pw==", + "dev": true, + "dependencies": { + "p-limit": "^3.0.2" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/parent-module": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/parent-module/-/parent-module-1.0.1.tgz", + "integrity": "sha512-GQ2EWRpQV8/o+Aw8YqtfZZPfNRWZYkbidE9k5rpl/hC3vtHHBfGm2Ifi6qWV+coDGkrUKZAxE3Lot5kcsRlh+g==", + "dev": true, + "dependencies": { + "callsites": "^3.0.0" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/path-exists": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-4.0.0.tgz", + "integrity": "sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/path-is-absolute": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/path-is-absolute/-/path-is-absolute-1.0.1.tgz", + "integrity": "sha512-AVbw3UJ2e9bq64vSaS9Am0fje1Pa8pbGqTTsmXfaIiMpnr5DlDhfJOuLj9Sf95ZPVDAUerDfEk88MPmPe7UCQg==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/path-key": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/path-key/-/path-key-3.1.1.tgz", + "integrity": "sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/path-parse": { + "version": "1.0.7", + "resolved": "https://registry.npmjs.org/path-parse/-/path-parse-1.0.7.tgz", + "integrity": "sha512-LDJzPVEEEPR+y48z93A0Ed0yXb8pAByGWo/k5YYdYgpY2/2EsOsksJrq7lOHxryrVOn1ejG6oAp8ahvOIQD8sw==", + "dev": true + }, + "node_modules/path-type": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/path-type/-/path-type-4.0.0.tgz", + "integrity": "sha512-gDKb8aZMDeD/tZWs9P6+q0J9Mwkdl6xMV8TjnGP3qJVJ06bdMgkbBlLU8IdfOsIsFz2BW1rNVT3XuNEl8zPAvw==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/picocolors": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/picocolors/-/picocolors-1.0.0.tgz", + "integrity": "sha512-1fygroTLlHu66zi26VoTDv8yRgm0Fccecssto+MhsZ0D/DGW2sm8E8AjW7NU5VVTRt5GxbeZ5qBuJr+HyLYkjQ==", + "dev": true + }, + "node_modules/picomatch": { + "version": "2.3.1", + "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-2.3.1.tgz", + "integrity": "sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA==", + "dev": true, + "engines": { + "node": ">=8.6" + }, + "funding": { + "url": "https://github.com/sponsors/jonschlinkert" + } + }, + "node_modules/prelude-ls": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/prelude-ls/-/prelude-ls-1.2.1.tgz", + "integrity": "sha512-vkcDPrRZo1QZLbn5RLGPpg/WmIQ65qoWWhcGKf/b5eplkkarX0m9z8ppCat4mlOqUsWpyNuYgO3VRyrYHSzX5g==", + "dev": true, + "engines": { + "node": ">= 0.8.0" + } + }, + "node_modules/prettier": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/prettier/-/prettier-3.0.3.tgz", + "integrity": "sha512-L/4pUDMxcNa8R/EthV08Zt42WBO4h1rarVtK0K+QJG0X187OLo7l699jWw0GKuwzkPQ//jMFA/8Xm6Fh3J/DAg==", + "dev": true, + "bin": { + "prettier": "bin/prettier.cjs" + }, + "engines": { + "node": ">=14" + }, + "funding": { + "url": "https://github.com/prettier/prettier?sponsor=1" + } + }, + "node_modules/prettier-linter-helpers": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/prettier-linter-helpers/-/prettier-linter-helpers-1.0.0.tgz", + "integrity": "sha512-GbK2cP9nraSSUF9N2XwUwqfzlAFlMNYYl+ShE/V+H8a9uNl/oUqB1w2EL54Jh0OlyRSd8RfWYJ3coVS4TROP2w==", + "dev": true, + "dependencies": { + "fast-diff": "^1.1.2" + }, + "engines": { + "node": ">=6.0.0" + } + }, + "node_modules/punycode": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/punycode/-/punycode-2.3.0.tgz", + "integrity": "sha512-rRV+zQD8tVFys26lAGR9WUuS4iUAngJScM+ZRSKtvl5tKeZ2t5bvdNFdNHBW9FWR4guGHlgmsZ1G7BSm2wTbuA==", + "dev": true, + "engines": { + "node": ">=6" + } + }, + "node_modules/queue-microtask": { + "version": "1.2.3", + "resolved": "https://registry.npmjs.org/queue-microtask/-/queue-microtask-1.2.3.tgz", + "integrity": "sha512-NuaNSa6flKT5JaSYQzJok04JzTL1CA6aGhv5rfLW3PgqA+M2ChpZQnAC8h8i4ZFkBS8X5RqkDBHA7r4hej3K9A==", + "dev": true, + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/feross" + }, + { + "type": "patreon", + "url": "https://www.patreon.com/feross" + }, + { + "type": "consulting", + "url": "https://feross.org/support" + } + ] + }, + "node_modules/rage-edit": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/rage-edit/-/rage-edit-1.2.0.tgz", + "integrity": "sha512-0RspBRc2s6We4g7hRCvT5mu7YPEnfjvQK8Tt354a2uUNJCMC7MKLvo/1mLvHUCQ/zbP6siQyp5VRZN7UCpMFZg==", + "dev": true + }, + "node_modules/randombytes": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/randombytes/-/randombytes-2.1.0.tgz", + "integrity": "sha512-vYl3iOX+4CKUWuxGi9Ukhie6fsqXqS9FE2Zaic4tNFD2N2QQaXOMFbuKK4QmDHC0JO6B1Zp41J0LpT0oR68amQ==", + "dev": true, + "dependencies": { + "safe-buffer": "^5.1.0" + } + }, + "node_modules/readable-stream": { + "version": "3.6.2", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-3.6.2.tgz", + "integrity": "sha512-9u/sniCrY3D5WdsERHzHE4G2YCXqoG5FTHUiCC4SIbr6XcLZBY05ya9EKjYek9O5xOAwjGq+1JdGBAS7Q9ScoA==", + "dev": true, + "dependencies": { + "inherits": "^2.0.3", + "string_decoder": "^1.1.1", + "util-deprecate": "^1.0.1" + }, + "engines": { + "node": ">= 6" + } + }, + "node_modules/require-from-string": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/require-from-string/-/require-from-string-2.0.2.tgz", + "integrity": "sha512-Xf0nWe6RseziFMu+Ap9biiUbmplq6S9/p+7w7YXP/JBHhrUDDUhwa+vANyubuqfZWTveU//DYVGsDG7RKL/vEw==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/resolve": { + "version": "1.22.6", + "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.22.6.tgz", + "integrity": "sha512-njhxM7mV12JfufShqGy3Rz8j11RPdLy4xi15UurGJeoHLfJpVXKdh3ueuOqbYUcDZnffr6X739JBo5LzyahEsw==", + "dev": true, + "dependencies": { + "is-core-module": "^2.13.0", + "path-parse": "^1.0.7", + "supports-preserve-symlinks-flag": "^1.0.0" + }, + "bin": { + "resolve": "bin/resolve" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/resolve-from": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-4.0.0.tgz", + "integrity": "sha512-pb/MYmXstAkysRFx8piNI1tGFNQIFA3vkE3Gq4EuA1dF6gHp/+vgZqsCGJapvy8N3Q+4o7FwvquPJcnZ7RYy4g==", + "dev": true, + "engines": { + "node": ">=4" + } + }, + "node_modules/restore-cursor": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/restore-cursor/-/restore-cursor-3.1.0.tgz", + "integrity": "sha512-l+sSefzHpj5qimhFSE5a8nufZYAM3sBSVMAPtYkmC+4EH2anSGaEMXSD0izRQbu9nfyQ9y5JrVmp7E8oZrUjvA==", + "dev": true, + "dependencies": { + "onetime": "^5.1.0", + "signal-exit": "^3.0.2" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/reusify": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/reusify/-/reusify-1.0.4.tgz", + "integrity": "sha512-U9nH88a3fc/ekCF1l0/UP1IosiuIjyTh7hBvXVMHYgVcfGvt897Xguj2UOLDeI5BG2m7/uwyaLVT6fbtCwTyzw==", + "dev": true, + "engines": { + "iojs": ">=1.0.0", + "node": ">=0.10.0" + } + }, + "node_modules/rimraf": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-3.0.2.tgz", + "integrity": "sha512-JZkJMZkAGFFPP2YqXZXPbMlMBgsxzE8ILs4lMIX/2o0L9UBw9O/Y3o6wFw/i9YLapcUJWwqbi3kdxIPdC62TIA==", + "dev": true, + "dependencies": { + "glob": "^7.1.3" + }, + "bin": { + "rimraf": "bin.js" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, + "node_modules/rimraf/node_modules/glob": { + "version": "7.2.3", + "resolved": "https://registry.npmjs.org/glob/-/glob-7.2.3.tgz", + "integrity": "sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q==", + "dev": true, + "dependencies": { + "fs.realpath": "^1.0.0", + "inflight": "^1.0.4", + "inherits": "2", + "minimatch": "^3.1.1", + "once": "^1.3.0", + "path-is-absolute": "^1.0.0" + }, + "engines": { + "node": "*" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, + "node_modules/rollup": { + "version": "3.29.4", + "resolved": "https://registry.npmjs.org/rollup/-/rollup-3.29.4.tgz", + "integrity": "sha512-oWzmBZwvYrU0iJHtDmhsm662rC15FRXmcjCk1xD771dFDx5jJ02ufAQQTn0etB2emNk4J9EZg/yWKpsn9BWGRw==", + "dev": true, + "bin": { + "rollup": "dist/bin/rollup" + }, + "engines": { + "node": ">=14.18.0", + "npm": ">=8.0.0" + }, + "optionalDependencies": { + "fsevents": "~2.3.2" + } + }, + "node_modules/run-applescript": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/run-applescript/-/run-applescript-5.0.0.tgz", + "integrity": "sha512-XcT5rBksx1QdIhlFOCtgZkB99ZEouFZ1E2Kc2LHqNW13U3/74YGdkQRmThTwxy4QIyookibDKYZOPqX//6BlAg==", + "dev": true, + "dependencies": { + "execa": "^5.0.0" + }, + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/run-applescript/node_modules/execa": { + "version": "5.1.1", + "resolved": "https://registry.npmjs.org/execa/-/execa-5.1.1.tgz", + "integrity": "sha512-8uSpZZocAZRBAPIEINJj3Lo9HyGitllczc27Eh5YYojjMFMn8yHMDMaUHE2Jqfq05D/wucwI4JGURyXt1vchyg==", + "dev": true, + "dependencies": { + "cross-spawn": "^7.0.3", + "get-stream": "^6.0.0", + "human-signals": "^2.1.0", + "is-stream": "^2.0.0", + "merge-stream": "^2.0.0", + "npm-run-path": "^4.0.1", + "onetime": "^5.1.2", + "signal-exit": "^3.0.3", + "strip-final-newline": "^2.0.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sindresorhus/execa?sponsor=1" + } + }, + "node_modules/run-applescript/node_modules/human-signals": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/human-signals/-/human-signals-2.1.0.tgz", + "integrity": "sha512-B4FFZ6q/T2jhhksgkbEW3HBvWIfDW85snkQgawt07S7J5QXTk6BkNV+0yAeZrM5QpMAdYlocGoljn0sJ/WQkFw==", + "dev": true, + "engines": { + "node": ">=10.17.0" + } + }, + "node_modules/run-applescript/node_modules/is-stream": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/is-stream/-/is-stream-2.0.1.tgz", + "integrity": "sha512-hFoiJiTl63nn+kstHGBtewWSKnQLpyb155KHheA1l39uvtO9nWIop1p3udqPcUd/xbF1VLMO4n7OI6p7RbngDg==", + "dev": true, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/run-applescript/node_modules/npm-run-path": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/npm-run-path/-/npm-run-path-4.0.1.tgz", + "integrity": "sha512-S48WzZW777zhNIrn7gxOlISNAqi9ZC/uQFnRdbeIHhZhCA6UqpkOT8T1G7BvfdgP4Er8gF4sUbaS0i7QvIfCWw==", + "dev": true, + "dependencies": { + "path-key": "^3.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/run-applescript/node_modules/strip-final-newline": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/strip-final-newline/-/strip-final-newline-2.0.0.tgz", + "integrity": "sha512-BrpvfNAE3dcvq7ll3xVumzjKjZQ5tI1sEUIKr3Uoks0XUl45St3FlatVqef9prk4jRDzhW6WZg+3bk93y6pLjA==", + "dev": true, + "engines": { + "node": ">=6" + } + }, + "node_modules/run-async": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/run-async/-/run-async-3.0.0.tgz", + "integrity": "sha512-540WwVDOMxA6dN6We19EcT9sc3hkXPw5mzRNGM3FkdN/vtE9NFvj5lFAPNwUDmJjXidm3v7TC1cTE7t17Ulm1Q==", + "dev": true, + "engines": { + "node": ">=0.12.0" + } + }, + "node_modules/run-parallel": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/run-parallel/-/run-parallel-1.2.0.tgz", + "integrity": "sha512-5l4VyZR86LZ/lDxZTR6jqL8AFE2S0IFLMP26AbjsLVADxHdhB/c0GUsH+y39UfCi3dzz8OlQuPmnaJOMoDHQBA==", + "dev": true, + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/feross" + }, + { + "type": "patreon", + "url": "https://www.patreon.com/feross" + }, + { + "type": "consulting", + "url": "https://feross.org/support" + } + ], + "dependencies": { + "queue-microtask": "^1.2.2" + } + }, + "node_modules/rxjs": { + "version": "7.8.1", + "resolved": "https://registry.npmjs.org/rxjs/-/rxjs-7.8.1.tgz", + "integrity": "sha512-AA3TVj+0A2iuIoQkWEK/tqFjBq2j+6PO6Y0zJcvzLAFhEFIO3HL0vls9hWLncZbAAbK0mar7oZ4V079I/qPMxg==", + "dev": true, + "dependencies": { + "tslib": "^2.1.0" + } + }, + "node_modules/safe-buffer": { + "version": "5.2.1", + "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.2.1.tgz", + "integrity": "sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ==", + "dev": true, + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/feross" + }, + { + "type": "patreon", + "url": "https://www.patreon.com/feross" + }, + { + "type": "consulting", + "url": "https://feross.org/support" + } + ] + }, + "node_modules/safer-buffer": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/safer-buffer/-/safer-buffer-2.1.2.tgz", + "integrity": "sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg==", + "dev": true + }, + "node_modules/semver": { + "version": "7.5.4", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.5.4.tgz", + "integrity": "sha512-1bCSESV6Pv+i21Hvpxp3Dx+pSD8lIPt8uVjRrxAUt/nbswYc+tK6Y2btiULjd4+fnq15PX+nqQDC7Oft7WkwcA==", + "dev": true, + "dependencies": { + "lru-cache": "^6.0.0" + }, + "bin": { + "semver": "bin/semver.js" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/serialize-javascript": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/serialize-javascript/-/serialize-javascript-6.0.1.tgz", + "integrity": "sha512-owoXEFjWRllis8/M1Q+Cw5k8ZH40e3zhp/ovX+Xr/vi1qj6QesbyXXViFbpNvWvPNAD62SutwEXavefrLJWj7w==", + "dev": true, + "dependencies": { + "randombytes": "^2.1.0" + } + }, + "node_modules/shebang-command": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/shebang-command/-/shebang-command-2.0.0.tgz", + "integrity": "sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA==", + "dev": true, + "dependencies": { + "shebang-regex": "^3.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/shebang-regex": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/shebang-regex/-/shebang-regex-3.0.0.tgz", + "integrity": "sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/signal-exit": { + "version": "3.0.7", + "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-3.0.7.tgz", + "integrity": "sha512-wnD2ZE+l+SPC/uoS0vXeE9L1+0wuaMqKlfz9AMUo38JsyLSBWSFcHR1Rri62LZc12vLr1gb3jl7iwQhgwpAbGQ==", + "dev": true + }, + "node_modules/slash": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/slash/-/slash-3.0.0.tgz", + "integrity": "sha512-g9Q1haeby36OSStwb4ntCGGGaKsaVSjQ68fBxoQcutl5fS1vuY18H3wSt3jFyFtrkx+Kz0V1G85A4MyAdDMi2Q==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/smob": { + "version": "1.4.1", + "resolved": "https://registry.npmjs.org/smob/-/smob-1.4.1.tgz", + "integrity": "sha512-9LK+E7Hv5R9u4g4C3p+jjLstaLe11MDsL21UpYaCNmapvMkYhqCV4A/f/3gyH8QjMyh6l68q9xC85vihY9ahMQ==", + "dev": true + }, + "node_modules/source-map": { + "version": "0.5.7", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.5.7.tgz", + "integrity": "sha512-LbrmJOMUSdEVxIKvdcJzQC+nQhe8FUZQTXQy6+I75skNgn3OoQ0DZA8YnFa7gp8tqtL3KPf1kmo0R5DoApeSGQ==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/source-map-support": { + "version": "0.5.21", + "resolved": "https://registry.npmjs.org/source-map-support/-/source-map-support-0.5.21.tgz", + "integrity": "sha512-uBHU3L3czsIyYXKX88fdrGovxdSCoTGDRZ6SYXtSRxLZUzHg5P/66Ht6uoUlHu9EZod+inXhKo3qQgwXUT/y1w==", + "dev": true, + "dependencies": { + "buffer-from": "^1.0.0", + "source-map": "^0.6.0" + } + }, + "node_modules/source-map-support/node_modules/source-map": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", + "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/spdx-exceptions": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/spdx-exceptions/-/spdx-exceptions-2.3.0.tgz", + "integrity": "sha512-/tTrYOC7PPI1nUAgx34hUpqXuyJG+DTHJTnIULG4rDygi4xu/tfgmq1e1cIRwRzwZgo4NLySi+ricLkZkw4i5A==", + "dev": true + }, + "node_modules/spdx-expression-parse": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/spdx-expression-parse/-/spdx-expression-parse-3.0.1.tgz", + "integrity": "sha512-cbqHunsQWnJNE6KhVSMsMeH5H/L9EpymbzqTQ3uLwNCLZ1Q481oWaofqH7nO6V07xlXwY6PhQdQ2IedWx/ZK4Q==", + "dev": true, + "dependencies": { + "spdx-exceptions": "^2.1.0", + "spdx-license-ids": "^3.0.0" + } + }, + "node_modules/spdx-license-ids": { + "version": "3.0.15", + "resolved": "https://registry.npmjs.org/spdx-license-ids/-/spdx-license-ids-3.0.15.tgz", + "integrity": "sha512-lpT8hSQp9jAKp9mhtBU4Xjon8LPGBvLIuBiSVhMEtmLecTh2mO0tlqrAMp47tBXzMr13NJMQ2lf7RpQGLJ3HsQ==", + "dev": true + }, + "node_modules/string_decoder": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.3.0.tgz", + "integrity": "sha512-hkRX8U1WjJFd8LsDJ2yQ/wWWxaopEsABU1XfkM8A+j0+85JAGppt16cr1Whg6KIbb4okU6Mql6BOj+uup/wKeA==", + "dev": true, + "dependencies": { + "safe-buffer": "~5.2.0" + } + }, + "node_modules/string-width": { + "version": "4.2.3", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.3.tgz", + "integrity": "sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==", + "dev": true, + "dependencies": { + "emoji-regex": "^8.0.0", + "is-fullwidth-code-point": "^3.0.0", + "strip-ansi": "^6.0.1" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/strip-ansi": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz", + "integrity": "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==", + "dev": true, + "dependencies": { + "ansi-regex": "^5.0.1" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/strip-final-newline": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/strip-final-newline/-/strip-final-newline-3.0.0.tgz", + "integrity": "sha512-dOESqjYr96iWYylGObzd39EuNTa5VJxyvVAEm5Jnh7KGo75V43Hk1odPQkNDyXNmUR6k+gEiDVXnjB8HJ3crXw==", + "dev": true, + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/strip-json-comments": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/strip-json-comments/-/strip-json-comments-3.1.1.tgz", + "integrity": "sha512-6fPc+R4ihwqP6N/aIv2f1gMH8lOVtWQHoqC4yK6oSDVVocumAsfCqjkXnqiYMhmMwS/mEHLp7Vehlt3ql6lEig==", + "dev": true, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/supports-color": { + "version": "5.5.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz", + "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==", + "dev": true, + "dependencies": { + "has-flag": "^3.0.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/supports-preserve-symlinks-flag": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/supports-preserve-symlinks-flag/-/supports-preserve-symlinks-flag-1.0.0.tgz", + "integrity": "sha512-ot0WnXS9fgdkgIcePe6RHNk1WA8+muPa6cSjeR3V8K27q9BB1rTE3R1p7Hv0z1ZyAc8s6Vvv8DIyWf681MAt0w==", + "dev": true, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/synckit": { + "version": "0.8.5", + "resolved": "https://registry.npmjs.org/synckit/-/synckit-0.8.5.tgz", + "integrity": "sha512-L1dapNV6vu2s/4Sputv8xGsCdAVlb5nRDMFU/E27D44l5U6cw1g0dGd45uLc+OXjNMmF4ntiMdCimzcjFKQI8Q==", + "dev": true, + "dependencies": { + "@pkgr/utils": "^2.3.1", + "tslib": "^2.5.0" + }, + "engines": { + "node": "^14.18.0 || >=16.0.0" + }, + "funding": { + "url": "https://opencollective.com/unts" + } + }, + "node_modules/terser": { + "version": "5.20.0", + "resolved": "https://registry.npmjs.org/terser/-/terser-5.20.0.tgz", + "integrity": "sha512-e56ETryaQDyebBwJIWYB2TT6f2EZ0fL0sW/JRXNMN26zZdKi2u/E/5my5lG6jNxym6qsrVXfFRmOdV42zlAgLQ==", + "dev": true, + "dependencies": { + "@jridgewell/source-map": "^0.3.3", + "acorn": "^8.8.2", + "commander": "^2.20.0", + "source-map-support": "~0.5.20" + }, + "bin": { + "terser": "bin/terser" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/terser/node_modules/commander": { + "version": "2.20.3", + "resolved": "https://registry.npmjs.org/commander/-/commander-2.20.3.tgz", + "integrity": "sha512-GpVkmM8vF2vQUkj2LvZmD35JxeJOLCwJ9cUkugyk2nuhbv3+mJvpLYYt+0+USMxE+oj+ey/lJEnhZw75x/OMcQ==", + "dev": true + }, + "node_modules/text-table": { + "version": "0.2.0", + "resolved": "https://registry.npmjs.org/text-table/-/text-table-0.2.0.tgz", + "integrity": "sha512-N+8UisAXDGk8PFXP4HAzVR9nbfmVJ3zYLAWiTIoqC5v5isinhr+r5uaO8+7r3BMfuNIufIsA7RdpVgacC2cSpw==", + "dev": true + }, + "node_modules/titleize": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/titleize/-/titleize-3.0.0.tgz", + "integrity": "sha512-KxVu8EYHDPBdUYdKZdKtU2aj2XfEx9AfjXxE/Aj0vT06w2icA09Vus1rh6eSu1y01akYg6BjIK/hxyLJINoMLQ==", + "dev": true, + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/tmp": { + "version": "0.0.33", + "resolved": "https://registry.npmjs.org/tmp/-/tmp-0.0.33.tgz", + "integrity": "sha512-jRCJlojKnZ3addtTOjdIqoRuPEKBvNXcGYqzO6zWZX8KfKEpnGY5jfggJQ3EjKuu8D4bJRr0y+cYJFmYbImXGw==", + "dev": true, + "dependencies": { + "os-tmpdir": "~1.0.2" + }, + "engines": { + "node": ">=0.6.0" + } + }, + "node_modules/to-fast-properties": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/to-fast-properties/-/to-fast-properties-2.0.0.tgz", + "integrity": "sha512-/OaKK0xYrs3DmxRYqL/yDc+FxFUVYhDlXMhRmv3z915w2HF1tnN1omB354j8VUGO/hbRzyD6Y3sA7v7GS/ceog==", + "dev": true, + "engines": { + "node": ">=4" + } + }, + "node_modules/to-regex-range": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/to-regex-range/-/to-regex-range-5.0.1.tgz", + "integrity": "sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ==", + "dev": true, + "dependencies": { + "is-number": "^7.0.0" + }, + "engines": { + "node": ">=8.0" + } + }, + "node_modules/ts-api-utils": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/ts-api-utils/-/ts-api-utils-1.0.3.tgz", + "integrity": "sha512-wNMeqtMz5NtwpT/UZGY5alT+VoKdSsOOP/kqHFcUW1P/VRhH2wJ48+DN2WwUliNbQ976ETwDL0Ifd2VVvgonvg==", + "dev": true, + "engines": { + "node": ">=16.13.0" + }, + "peerDependencies": { + "typescript": ">=4.2.0" + } + }, + "node_modules/tslib": { + "version": "2.6.2", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.6.2.tgz", + "integrity": "sha512-AEYxH93jGFPn/a2iVAwW87VuUIkR1FVUKB77NwMF7nBTDkDrrT/Hpt/IrCJ0QXhW27jTBDcf5ZY7w6RiqTMw2Q==", + "dev": true + }, + "node_modules/type-check": { + "version": "0.4.0", + "resolved": "https://registry.npmjs.org/type-check/-/type-check-0.4.0.tgz", + "integrity": "sha512-XleUoc9uwGXqjWwXaUTZAmzMcFZ5858QA2vvx1Ur5xIcixXIP+8LnFDgRplU30us6teqdlskFfu+ae4K79Ooew==", + "dev": true, + "dependencies": { + "prelude-ls": "^1.2.1" + }, + "engines": { + "node": ">= 0.8.0" + } + }, + "node_modules/type-fest": { + "version": "0.21.3", + "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.21.3.tgz", + "integrity": "sha512-t0rzBq87m3fVcduHDUFhKmyyX+9eo6WQjZvf51Ea/M0Q7+T374Jp1aUiyUl0GKxp8M/OETVHSDvmkyPgvX+X2w==", + "dev": true, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/typescript": { + "version": "5.2.2", + "resolved": "https://registry.npmjs.org/typescript/-/typescript-5.2.2.tgz", + "integrity": "sha512-mI4WrpHsbCIcwT9cF4FZvr80QUeKvsUsUvKDoR+X/7XHQH98xYD8YHZg7ANtz2GtZt/CBq2QJ0thkGJMHfqc1w==", + "dev": true, + "bin": { + "tsc": "bin/tsc", + "tsserver": "bin/tsserver" + }, + "engines": { + "node": ">=14.17" + } + }, + "node_modules/untildify": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/untildify/-/untildify-4.0.0.tgz", + "integrity": "sha512-KK8xQ1mkzZeg9inewmFVDNkg3l5LUhoq9kN6iWYB/CC9YMG8HA+c1Q8HwDe6dEX7kErrEVNVBO3fWsVq5iDgtw==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/uri-js": { + "version": "4.4.1", + "resolved": "https://registry.npmjs.org/uri-js/-/uri-js-4.4.1.tgz", + "integrity": "sha512-7rKUyy33Q1yc98pQ1DAmLtwX109F7TIfWlW1Ydo8Wl1ii1SeHieeh0HHfPeL2fMXK6z0s8ecKs9frCuLJvndBg==", + "dev": true, + "dependencies": { + "punycode": "^2.1.0" + } + }, + "node_modules/util-deprecate": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/util-deprecate/-/util-deprecate-1.0.2.tgz", + "integrity": "sha512-EPD5q1uXyFxJpCrLnCc1nHnq3gOa6DZBocAIiI2TaSCA7VCJ1UJDMagCzIkXNsUYfD1daK//LTEQ8xiIbrHtcw==", + "dev": true + }, + "node_modules/wcwidth": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/wcwidth/-/wcwidth-1.0.1.tgz", + "integrity": "sha512-XHPEwS0q6TaxcvG85+8EYkbiCux2XtWG2mkc47Ng2A77BQu9+DqIOJldST4HgPkuea7dvKSj5VgX3P1d4rW8Tg==", + "dev": true, + "dependencies": { + "defaults": "^1.0.3" + } + }, + "node_modules/which": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/which/-/which-2.0.2.tgz", + "integrity": "sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==", + "dev": true, + "dependencies": { + "isexe": "^2.0.0" + }, + "bin": { + "node-which": "bin/node-which" + }, + "engines": { + "node": ">= 8" + } + }, + "node_modules/wrap-ansi": { + "version": "6.2.0", + "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-6.2.0.tgz", + "integrity": "sha512-r6lPcBGxZXlIcymEu7InxDMhdW0KDxpLgoFLcguasxCaJ/SOIZwINatK9KY/tf+ZrlywOKU0UDj3ATXUBfxJXA==", + "dev": true, + "dependencies": { + "ansi-styles": "^4.0.0", + "string-width": "^4.1.0", + "strip-ansi": "^6.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/wrappy": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz", + "integrity": "sha512-l4Sp/DRseor9wL6EvV2+TuQn63dMkPjZ/sp9XkghTEbV9KlPS1xUsZ3u7/IQO4wxtcFB4bgpQPRcR3QCvezPcQ==", + "dev": true + }, + "node_modules/yallist": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz", + "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==", + "dev": true + }, + "node_modules/yocto-queue": { + "version": "0.1.0", + "resolved": "https://registry.npmjs.org/yocto-queue/-/yocto-queue-0.1.0.tgz", + "integrity": "sha512-rVksvsnNCdJ/ohGc6xgPwyN8eheCxsiLM8mxuE/t/mOVqJewPuO1miLpTHQiRgTKCLexL4MeAFVagts7HmNZ2Q==", + "dev": true, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + } + } +} diff --git a/package.json b/package.json new file mode 100644 index 0000000..ca43426 --- /dev/null +++ b/package.json @@ -0,0 +1,79 @@ +{ + "name": "@elgato/cli", + "version": "0.1.0-beta.0", + "description": "The official CLI for building Node.js Stream Deck plugins.", + "bin": { + "streamdeck": "bin/streamdeck.mjs", + "sd": "bin/streamdeck.mjs" + }, + "files": [ + "bin/streamdeck.mjs", + "template" + ], + "type": "module", + "engines": { + "node": "^20.1.0" + }, + "scripts": { + "build": "rollup --config rollup.config.ts --configPlugin typescript", + "watch": "rollup --config rollup.config.ts --configPlugin typescript --watch", + "lint": "eslint . --ext .ts --max-warnings 0", + "lint:fix": "prettier --config .prettierrc \"./src/**/*.ts\" --write", + "preversion": "npm run build && npm run lint" + }, + "repository": { + "type": "git", + "url": "git+https://github.com/elgatosf/cli.git" + }, + "keywords": [ + "elgato", + "stream-deck", + "plugin", + "cli", + "marketplace", + "maker" + ], + "author": { + "name": "Elgato", + "url": "https://www.elgato.com" + }, + "license": "MIT", + "bugs": { + "url": "https://github.com/elgatosf/cli/issues" + }, + "homepage": "https://github.com/elgatosf/cli#readme", + "devDependencies": { + "@rollup/plugin-commonjs": "^25.0.4", + "@rollup/plugin-json": "^6.0.0", + "@rollup/plugin-node-resolve": "^15.2.1", + "@rollup/plugin-terser": "^0.4.3", + "@rollup/plugin-typescript": "^11.1.4", + "@trivago/prettier-plugin-sort-imports": "^4.2.0", + "@tsconfig/node20": "^20.1.2", + "@types/ejs": "^3.1.3", + "@types/inquirer": "^9.0.3", + "@types/lodash": "^4.14.199", + "@types/node": "20.1.7", + "@typescript-eslint/eslint-plugin": "^6.7.3", + "@typescript-eslint/parser": "^6.7.3", + "ajv": "^8.12.0", + "chalk": "^5.3.0", + "commander": "^11.0.0", + "dotenv": "^16.3.1", + "ejs": "^3.1.9", + "eslint": "^8.50.0", + "eslint-config-prettier": "^9.0.0", + "eslint-plugin-jsdoc": "^46.8.2", + "eslint-plugin-prettier": "^5.0.0", + "find-process": "^1.4.7", + "inquirer": "^9.2.11", + "is-interactive": "^2.0.0", + "lodash": "^4.17.21", + "log-symbols": "^5.1.0", + "prettier": "^3.0.3", + "rage-edit": "^1.2.0", + "rollup": "^3.29.4", + "tslib": "^2.6.2", + "typescript": "^5.2.2" + } +} diff --git a/rollup.config.ts b/rollup.config.ts new file mode 100644 index 0000000..b3d4a38 --- /dev/null +++ b/rollup.config.ts @@ -0,0 +1,46 @@ +import commonjs from "@rollup/plugin-commonjs"; +import json from "@rollup/plugin-json"; +import nodeResolve from "@rollup/plugin-node-resolve"; +import terser from "@rollup/plugin-terser"; +import typescript from "@rollup/plugin-typescript"; +import path from "node:path"; +import url from "node:url"; +import { RollupOptions } from "rollup"; + +const isWatching = !!process.env.ROLLUP_WATCH; + +const config: RollupOptions = { + input: "src/index.ts", + output: { + banner: "#!/usr/bin/env node", + file: "bin/streamdeck.mjs", + sourcemap: isWatching, + sourcemapPathTransform: (relativeSourcePath: string, sourcemapPath: string): string => { + return url.pathToFileURL(path.resolve(path.dirname(sourcemapPath), relativeSourcePath)).href; + } + }, + plugins: [ + typescript({ + sourceMap: isWatching, + inlineSources: isWatching, + mapRoot: isWatching ? "./" : undefined + }), + json(), + commonjs({ + sourceMap: false + }), + nodeResolve({ + browser: false, + exportConditions: ["node"], + preferBuiltins: true + }), + !isWatching && + terser({ + format: { + comments: false + } + }) + ] +}; + +export default config; diff --git a/src/commands/config.ts b/src/commands/config.ts new file mode 100644 index 0000000..db17c98 --- /dev/null +++ b/src/commands/config.ts @@ -0,0 +1,147 @@ +import chalk from "chalk"; +import { existsSync, rmSync } from "fs"; +import _ from "lodash"; + +import { command } from "../common/command"; +import { defaultConfig, getFilePath, getLocalConfig, updateConfig } from "../config"; + +/** + * Lists the configuration. + */ +export const list = command((options, output) => { + const format = (value: unknown): string => { + switch (typeof value) { + case "boolean": + case "bigint": + case "number": + return chalk.yellow(value); + case "string": + return chalk.green(value); + default: + return chalk.gray(value); + } + }; + + const log = (value: unknown, key = "", indent = -2): void => { + if (value instanceof Object) { + if (key !== "") { + output.log(`${" ".repeat(indent)}${key}:`); + } + + Object.entries(value).forEach(([key, value]) => log(value, key, indent + 2)); + } else { + output.log(`${" ".repeat(indent)}${key}: ${format(value)}`); + } + }; + + const config = getLocalConfig(); + if (config === undefined) { + output.info("No local configuration found."); + } else { + log(config); + } +}); + +/** + * Resets the local configuration. + */ +export const reset = command((options, output) => { + const filePath = getFilePath(); + if (existsSync(filePath)) { + rmSync(filePath); + } + + output.success("Configuration cleared"); +}); + +/** + * Sets the configuration for the collection of entries. + */ +export const set = command((options, output) => { + let changed = false; + updateConfig((config, defaultConfig) => { + [options.entry].concat(options.entries).forEach((entry) => { + const [path, value] = entry.split("="); + + if (value === undefined) { + output.warn(`Ignoring undefined value for key ${chalk.yellow(path)}`); + } else if (typeof _.get(defaultConfig, path) !== "object") { + _.set(config, path, cast(value, path)); + changed = true; + } else { + output.warn(`Ignoring invalid key ${chalk.yellow(path)}`); + } + }); + + return config; + }); + + if (changed) { + output.success("Updated configuration"); + } +}); + +/** + * Un-sets the configuration entries for the specified keys, resetting to their default values. + */ +export const unset = command((options, output) => { + let changed = false; + updateConfig((config, defaultConfig) => { + new Set(options.keys.concat([options.key])).forEach((path) => { + if (_.has(defaultConfig, path)) { + _.unset(config, path); + changed = true; + } else { + output.warn(`Ignoring invalid key ${chalk.yellow(path)}`); + } + }); + }); + + if (changed) { + output.success("Updated configuration"); + } +}); + +/** + * Attempts cast the specified {@link value} to the correct type. **NB.** only `boolean` are supported as custom types. + * @param value The value. + * @param path Path the {@link value} represents. + * @returns Casted value. + */ +function cast(value: string, path: string): unknown { + if (typeof _.get(defaultConfig, path) === "boolean") { + return value.toLowerCase() === "true" || value === "1"; + } else { + return value; + } +} + +/** + * Options available to {@link unset}. + */ +type UnsetOptions = { + /** + * Key that identifies the configuration entry. + */ + key: string; + + /** + * Keys that identify a collection of configuration entries. + */ + keys: string[]; +}; + +/** + * Options available to {@link set}. + */ +type SetOptions = { + /** + * Configuration entry denoted as a key-value-pair separated by an equals sign. + */ + entry: string; + + /** + * Collection of configuration entries denoted as a key-value-pair separated by an equals sign. + */ + entries: string[]; +}; diff --git a/src/commands/create.ts b/src/commands/create.ts new file mode 100644 index 0000000..6cb4974 --- /dev/null +++ b/src/commands/create.ts @@ -0,0 +1,294 @@ +import chalk from "chalk"; +import inquirer from "inquirer"; +import fs from "node:fs"; +import path from "node:path"; +import { fileURLToPath } from "node:url"; + +import { command } from "../common/command"; +import { createCopier } from "../common/file-copier"; +import { invalidCharacters, isSafeBaseName } from "../common/path"; +import { run } from "../common/runner"; +import { StdOut } from "../common/stdout"; +import { getConfig } from "../config"; +import { generatePluginId, getPlugins, isValidPluginId } from "../stream-deck"; +import { setDeveloperMode } from "./dev"; +import { link } from "./link"; + +const TEMPLATE_PLUGIN_UUID = "com.elgato.template"; + +// Defines the production dependencies to be used when creating plugins. +const npm = { + streamDeck: "0.1.0-beta.1" +}; + +/** + * Guides the user through a creation wizard, scaffolding a Stream Deck plugin. + */ +export const create = command(async (options, stdout) => { + // Show the welcome, and gather all of the required input from the user. + showWelcome(stdout); + const pluginInfo = await promptForPluginInfo(); + const destination = await validateDestination(pluginInfo.uuid.split(".")[2] || "", stdout); + + // Prompt the user to confirm the information. + if (!(await isPluginInfoCorrect(stdout))) { + return stdout.info("Aborted").exit(); + } + + // Run final pre-checks. + validateFinalPreChecks(pluginInfo, destination, stdout); + + // Begin. + stdout.log(); + stdout.log(`Creating ${chalk.blue(pluginInfo.name)}...`); + + // Enable developer mode, and generate the plugin from the template. + await stdout.spin("Enabling developer mode", () => setDeveloperMode({ quiet: true })); + await stdout.spin("Generating plugin", () => renderTemplate(destination, pluginInfo)); + + // Install npm dependencies and build the plugin. + await stdout.spin("Installing dependencies", () => run("npm", ["i"], { cwd: destination })); + await stdout.spin("Building plugin", () => run("npm", ["run", "build"], { cwd: destination })); + + // Link the plugin to Stream Deck. + await stdout.spin("Finalizing setup", () => + link({ + path: path.join(destination, `${pluginInfo.uuid}.sdPlugin`), + quiet: true + }) + ); + + stdout.log().log(chalk.green("Successfully created plugin!")); + await tryOpenVSCode(destination, stdout); +}); + +/** + * Shows the welcome message. + * @param stdout The stream where messages, and termination results, will be output. + */ +function showWelcome(stdout: StdOut): void { + stdout + .log(" ___ _ ___ _ ") + .log("/ __| |_ _ _ ___ __ _ _ __ | \\ ___ __| |__") + .log("\\__ \\ _| '_/ -_) _` | ' \\ | |) / -_) _| / /") + .log("|___/\\__|_| \\___\\__,_|_|_|_| |___/\\___\\__|_\\_\\") + .log() + .log(`Welcome to the ${chalk.green("Stream Deck Plugin")} creation wizard.`) + .log() + .log("This utility will guide you through creating a local development environment for a plugin.") + .log(`For more information on building plugins see ${chalk.blue("https://docs.elgato.com")}.`) + .log() + .log(chalk.grey("Press ^C at any time to quit.")) + .log(); +} + +/** + * Prompts the user for the plugin information. + * @returns User input that provides required information to build a plugin. + */ +async function promptForPluginInfo(): Promise { + return await inquirer.prompt([ + { + name: "author", + message: "Author:", + validate: required("Please enter the author."), + type: "input" + }, + { + name: "name", + message: "Plugin Name:", + validate: required("Please enter the name of the plugin."), + type: "input" + }, + { + name: "uuid", + message: "Plugin UUID:", + default: ({ author, name }: PluginInfo): string | undefined => generatePluginId(author, name), + validate: (uuid: string): boolean | string => { + if (!isValidPluginId(uuid)) { + return "UUID can only contain lowercase alphanumeric characters (a-z, 0-9), hyphens (-), underscores (_), or periods (.)."; + } + + if (getPlugins().some((p) => p.uuid === uuid)) { + return "Another plugin with this UUID is already installed."; + } + + return true; + }, + type: "input" + }, + { + name: "description", + message: "Description:", + validate: required("Please enter a brief description of what the plugin will do."), + type: "input" + } + ]); +} + +/** + * Validates the destination where the plugin will be generated. + * @param dirName The default name of the directory. + * @param stdout The stream where messages, and termination results, will be output. + * @returns The destination, as a full path. + */ +async function validateDestination(dirName: string, stdout: StdOut): Promise { + // Validate the default directory name; when invalid, prompt for another. + const validation = validate(dirName); + if (validation !== true) { + stdout.log(); + stdout.log(validation); + const { directory } = await inquirer.prompt({ + name: "directory", + message: "Directory:", + validate, + type: "input" + }); + + dirName = directory; + } + + return path.join(process.cwd(), dirName); + + /** + * Validates the specified {@link value} is a valid directory name, and the directory does not exist. + * @param value Value to validate. + * @returns `true` when the directory name is valid, and the directory does not exist; otherwise a `string` representing the error. + */ + function validate(value: string | undefined): boolean | string { + if (value === undefined || value.trim() === "") { + return "Please specify a directory name."; + } else if (!isSafeBaseName(value)) { + return `Directory name cannot contain ${invalidCharacters.join(" ")} and must not begin with a period (.).`; + } else if (fs.existsSync(path.join(process.cwd(), value))) { + return `Directory ${chalk.yellow(value)} already exists. Please specify a different directory name.`; + } + + return true; + } +} + +/** + * Validates the final pre-checks prior to a plugin being scaffolded. + * @param param0 The plugin information. + * @param param0.uuid Unique identifier that identifies the plugin. + * @param destination Destination where the plugin will be scaffolded. + * @param stdout The stream where messages, and termination results, will be output. + * @returns Returns when the pre-checks pass validation. + */ +function validateFinalPreChecks({ uuid }: PluginInfo, destination: string, stdout: StdOut): never | void { + if (getPlugins().some((p) => p.uuid === uuid)) { + return stdout.error(`Another plugin with the UUID ${chalk.yellow(uuid)} is already installed.`).exit(1); + } + + if (fs.existsSync(destination)) { + return stdout.error(`Directory ${chalk.yellow(destination)} already exists.`).exit(1); + } +} + +/** + * Prompts the user to confirm they're happy with the input information. + * @param stdout The stream where messages, and termination results, will be output. + * @returns `true` when the user is happy with the information; otherwise `false`. + */ +async function isPluginInfoCorrect(stdout: StdOut): Promise { + stdout.log(); + return ( + await inquirer.prompt({ + name: "confirm", + message: "Create Stream Deck plugin from information above?", + default: true, + type: "confirm" + }) + ).confirm; +} + +/** + * Renders the template, copying the output to the destination directory. + * @param destination Destination where the plugin was created. + * @param pluginInfo Information about the plugin. + */ +function renderTemplate(destination: string, pluginInfo: PluginInfo): void { + const config = getConfig(); + const template = createCopier({ + dest: destination, + source: path.resolve(path.dirname(fileURLToPath(import.meta.url)), "../template"), + data: { + ...pluginInfo, + streamDeckPackage: config.create.mode === "dev" && config.npm.streamDeck ? config.npm.streamDeck : npm.streamDeck + } + }); + + template.copy(".vscode"); + template.copy(`${TEMPLATE_PLUGIN_UUID}.sdPlugin/imgs`, `${pluginInfo.uuid}.sdPlugin/imgs`); + template.copy(`${TEMPLATE_PLUGIN_UUID}.sdPlugin/manifest.json.ejs`, `${pluginInfo.uuid}.sdPlugin/manifest.json`); + template.copy("src"); + template.copy(".gitignore"); + template.copy("package.json.ejs"); + template.copy("rollup.config.mjs"); + template.copy("tsconfig.json.ejs"); +} + +/** + * Determines if the user has VS Code installed, and if so, prompts them to open the plugin. + * @param destination Destination where the plugin was created. + * @param stdout The stream where messages, and termination results, will be output. + */ +async function tryOpenVSCode(destination: string, stdout: StdOut): Promise { + const paths = process.env.PATH?.split(":") ?? []; + if (!paths.some((p) => p.includes("Microsoft VS Code"))) { + return; + } + + stdout.log(); + const vsCode = await inquirer.prompt({ + name: "confirm", + message: "Would you like to open the plugin in VS Code?", + default: true, + type: "confirm" + }); + + if (vsCode.confirm) { + run("code", ["./", "--goto", "src/plugin.ts"], { cwd: destination }); + } +} + +/** + * Gets a function that accepts a single value; when that value is null, empty, or whitespace, the {@link error} is returned. + * @param error Error message to display when a value was not specified. + * @returns Function that can be used to validate an question's answer. + */ +function required(error: string) { + return (value: unknown): boolean | string => { + if (value && value?.toString().replaceAll(" ", "") != "") { + return true; + } + + return error; + }; +} + +/** + * Provides information about the plugin. + */ +type PluginInfo = { + /** + * Author of the plugin; this can be a user, or an organization. + */ + author: string; + + /** + * General description of what the plugin does. + */ + description: string; + + /** + * Name of the plugin; this is displayed to user's in the Marketplace, and is used to easily identify the plugin. + */ + name: string; + + /** + * Plugin's unique identifier. + */ + uuid: string; +}; diff --git a/src/commands/dev.ts b/src/commands/dev.ts new file mode 100644 index 0000000..e36cb8e --- /dev/null +++ b/src/commands/dev.ts @@ -0,0 +1,36 @@ +import childProcess from "node:child_process"; +import os from "node:os"; +import { Registry } from "rage-edit"; + +import { command } from "../common/command"; + +/** + * Sets developer mode, enabling / disabling the local development of Stream Deck plugins. + */ +export const setDeveloperMode = command( + async (options, output) => { + output.spin(`${options.disable ? "Disabling" : "Enabling"} developer mode`); + + const flagName = "developer_mode"; + if (os.platform() === "darwin") { + childProcess.spawnSync("defaults", ["write", "com.elgato.StreamDeck", flagName, "-bool", options.disable ? "NO" : "YES"]); + } else { + Registry.set("HKEY_CURRENT_USER\\Software\\Elgato Systems GmbH\\StreamDeck", flagName, options.disable ? 0 : 1); + } + + output.success(`Developer mode ${options.disable ? "disabled" : "enabled"}`); + }, + { + disable: false + } +); + +/** + * Options available to {@link setDeveloperMode}. + */ +type DeveloperModeOptions = { + /** + * Determines whether to disable developer mode; default `false`. + */ + disable?: boolean; +}; diff --git a/src/commands/index.ts b/src/commands/index.ts new file mode 100644 index 0000000..490f147 --- /dev/null +++ b/src/commands/index.ts @@ -0,0 +1,6 @@ +export * as config from "./config"; +export { create } from "./create"; +export { setDeveloperMode } from "./dev"; +export { link } from "./link"; +export { restart } from "./restart"; +export { stop } from "./stop"; diff --git a/src/commands/link.ts b/src/commands/link.ts new file mode 100644 index 0000000..10e7c53 --- /dev/null +++ b/src/commands/link.ts @@ -0,0 +1,68 @@ +import chalk from "chalk"; +import { lstatSync, symlinkSync } from "node:fs"; +import { basename, resolve } from "node:path"; + +import { command } from "../common/command"; +import { getPluginId, getPlugins, getPluginsPath } from "../stream-deck"; + +/** + * Attempts to create a symbolic-link for the given path within the Stream Deck plugin's folder; this will effectively install the plugin to Stream Deck. + */ +export const link = command( + (options, feedback) => { + feedback.spin("Linking plugin"); + + // Validate the path is a directory that exists. + options.path = resolve(options.path); + if (lstatSync(options.path, { throwIfNoEntry: false })?.isDirectory() !== true) { + return feedback + .error("Linking failed") + .log(`Directory not found: ${basename(options.path)}`) + .exit(1); + } + + // Validate the directory name is the correct format. + const uuid = getPluginId(options.path); + if (uuid === undefined) { + return feedback + .error("Linking failed") + .log(`Invalid directory name: ${basename(options.path)}`) + .log( + 'Name should represent a reverse DNS format and have a suffix of ".sdPlugin". Name must only contain lowercase alphanumeric characters (a-z, 0-9), hyphens (-), underscores (_), and periods (.).' + ) + .log(`Examples: ${chalk.green("com.elgato.wave-link.sdPlugin")}, ${chalk.green("tv.twitch.studio.sdPlugin")}`) + .exit(1); + } + + // Check if there is a conflict with an already installed plugin. + const existing = getPlugins().find((p) => p.uuid === uuid); + if (existing) { + if (existing.sourcePath !== null && resolve(existing.sourcePath) === resolve(options.path)) { + feedback.success("Linked successfully"); + return; + } else { + return feedback + .error("Linking failed") + .log(`Plugin already installed: ${uuid}`) + .log(`Another plugin with this UUID is already installed. Please uninstall the plugin, or rename the directory being linked, and try again.`) + .exit(1); + } + } + + symlinkSync(resolve(options.path), resolve(getPluginsPath(), basename(options.path)), "junction"); + feedback.success("Linked successfully"); + }, + { + path: process.cwd() + } +); + +/** + * Options available to {@link link}. + */ +type LinkOptions = { + /** + * Path to the plugin. + */ + path?: string; +}; diff --git a/src/commands/restart.ts b/src/commands/restart.ts new file mode 100644 index 0000000..ecf978f --- /dev/null +++ b/src/commands/restart.ts @@ -0,0 +1,39 @@ +import chalk from "chalk"; + +import { command } from "../common/command"; +import { run } from "../common/runner"; +import { getStreamDeckPath, isPluginInstalled, isStreamDeckRunning } from "../stream-deck"; + +/** + * Restarts the first plugin that matches the given {@link RestartOptions.uuid}. + */ +export const restart = command(async ({ uuid }, output) => { + output.spin(`Restarting ${uuid}`); + + // Check we have a plugin installed that matches the uuid. + if (!isPluginInstalled(uuid)) { + return output.error("Restarting failed").log(`Plugin not found: ${uuid}`).exit(1); + } + + const appPath = `"${getStreamDeckPath()}"`; + + // When Stream Deck isn't running, start it. + if (!(await isStreamDeckRunning())) { + await run(appPath, [], { detached: true }); + return output.info("Stream Deck is not running. Starting Stream Deck.").exit(); + } + + // Restart the plugin. + await run(appPath, ["-r", uuid]); + output.success(`Restarted ${chalk.green(uuid)}`); +}); + +/** + * Options available to {@link restart}. + */ +type RestartOptions = { + /** + * Identifies the plugin. + */ + uuid: string; +}; diff --git a/src/commands/stop.ts b/src/commands/stop.ts new file mode 100644 index 0000000..1ed6045 --- /dev/null +++ b/src/commands/stop.ts @@ -0,0 +1,36 @@ +import chalk from "chalk"; + +import { command } from "../common/command"; +import { run } from "../common/runner"; +import { getStreamDeckPath, isPluginInstalled, isStreamDeckRunning } from "../stream-deck"; + +/** + * Stops the first plugin that matches the given {@link StopOptions.uuid}. + */ +export const stop = command(async ({ uuid }, output) => { + output.spin(`Stopping ${uuid}`); + + // Check we have a plugin installed that matches the uuid. + if (!isPluginInstalled(uuid)) { + return output.error("Stopping failed").log(`Plugin not found: ${uuid}`).exit(1); + } + + // When Stream Deck isn't running, warn the user. + if (!(await isStreamDeckRunning())) { + return output.info("Stream Deck is not running.").exit(); + } + + // Stop the plugin. + await run(`"${getStreamDeckPath()}"`, ["-s", uuid]); + output.success(`Stopped ${chalk.green(uuid)}`); +}); + +/** + * Options available to {@link stop}. + */ +type StopOptions = { + /** + * Identifies the plugin. + */ + uuid: string; +}; diff --git a/src/common/command.ts b/src/common/command.ts new file mode 100644 index 0000000..96e44dc --- /dev/null +++ b/src/common/command.ts @@ -0,0 +1,68 @@ +/* eslint-disable jsdoc/check-param-names */ +import _ from "lodash"; + +import { getConfig } from "../config"; +import { createConsole, createQuietConsole, StdOut } from "./stdout"; + +// eslint-disable-next-line jsdoc/require-param +/** + * Wraps a command delegate; when invoked all options are provided, and the output and logger are constructed based on {@link GlobalOptions.quiet} global option. + * @param fn The command function to execute. + * @param defaultOptions Fallback options supplied to the command when optional-options are not specified by the caller. + * @returns The command. + */ +export function command( + fn: (options: Options, output: StdOut) => Promise | void, + ...[defaultOptions]: OptionalWhenEmpty, never, Required>> +): (...[options]: OptionalWhenEmpty, GlobalOptions & T>) => void { + return async (...[options]: OptionalWhenEmpty, GlobalOptions & T>) => { + const opts = _.merge({ quiet: false }, defaultOptions as Required>, options as GlobalOptions & PickRequired); + + const { reduceMotion } = getConfig(); + const output = opts.quiet ? createQuietConsole() : createConsole(reduceMotion); + + try { + await fn(opts, output); + if (output.isLoading) { + output.success(); + } + } catch (err) { + if (output.isLoading) { + output.error(); + } + + throw err; + } + }; +} + +/** + * Global options that apply to all commands. + */ +type GlobalOptions = { + /** + * When `true`, only errors and warnings will be output. When successful, the command will be quiet. + */ + quiet?: boolean; +}; + +/** + * Determines whether {@template T} contains any properties, when it does not, {@template TOptional} is returned as an optional; otherwise {@template TRequired} is returned. + */ +type OptionalWhenEmpty = T extends Record ? [TOptional?] : [TRequired]; + +/** + * Defines the complete set of (merged) options sent to a command. + */ +type Options = GlobalOptions & PickRequired & Required>; + +/** + * Picks all optional properties from the specified type. + */ +// eslint-disable-next-line @typescript-eslint/ban-types +type PickOptional = Pick ? K : never }[keyof T]>; + +/** + * Picks all required properties from the specified type. + */ +type PickRequired = Pick ? never : K }[keyof T]>; diff --git a/src/common/file-copier.ts b/src/common/file-copier.ts new file mode 100644 index 0000000..65b089b --- /dev/null +++ b/src/common/file-copier.ts @@ -0,0 +1,113 @@ +import ejs from "ejs"; +import fs from "node:fs"; +import { dirname, extname, resolve } from "path"; + +/** + * Creates a new {@link FileCopier}. + * @param options The source and destination paths. + * @returns The {@link FileCopier}. + */ +export function createCopier(options: Options): FileCopier { + return new FileCopier({ + data: {}, + ...options + }); +} + +/** + * File copier capable of copying, and rendering, files and directories from a source, to a destination. + */ +class FileCopier { + /** + * Initializes a new instance of the {@link FileCopier} class. + * @param options The options. + */ + constructor(private readonly options: Required) {} + + /** + * Copies the {@link path}, relative to the {@link FileOrDirectoryPath.source}, renders all templates, and outputs the contents to the {@link path} relative to the {@link FileOrDirectoryPath.dest}. + * @param path The relative path to render and copy. + * @param destination Optional path, relative destination, whereby the items will be copied to. + */ + public async copy(path: string, destination?: string): Promise { + const opts = { + source: resolve(this.options.source, path), + dest: resolve(this.options.dest, destination || path) + }; + + if (fs.lstatSync(opts.source).isDirectory()) { + this.copyDir(opts); + } else { + this.copyFile(opts); + } + } + + /** + * Copies the directory to the destination; all templates are rendered prior to output. + * @param param0 The options that determine what items are being copied. + * @param param0.source Source to copy from. + * @param param0.dest Destination to copy to. + */ + private copyDir({ source, dest }: FileOrDirectoryPath): void { + const templates: Options[] = []; + const filter = (source: string, dest: string): boolean => { + if (fs.lstatSync(source).isFile() && extname(source) === ".ejs") { + templates.push({ source, dest, data: this.options.data }); + return false; + } + + return true; + }; + + fs.cpSync(source, dest, { + filter, + recursive: true + }); + + templates.forEach((opts) => this.copyFile(opts)); + } + + /** + * Copies the file to the destination; when the file is a template, is rendered prior to output. + * @param param0 The options that determine what items are being copied. + * @param param0.source Source to copy from. + * @param param0.dest Destination to copy to. + */ + private copyFile({ source, dest }: FileOrDirectoryPath): void { + fs.mkdirSync(dirname(dest), { recursive: true }); + + if (extname(source) === ".ejs") { + ejs.renderFile(source, this.options.data, (_, contents: string) => { + const target = extname(dest) === ".ejs" ? dest.substring(0, dest.length - 4) : dest; + fs.writeFileSync(target, contents); + }); + } else { + fs.copyFileSync(source, dest); + } + } +} + +/** + * Options used to copy and to render EJS template file or directory. + */ +type Options = FileOrDirectoryPath & { + /** + * The data to be injected into the templates. + */ + data?: ejs.Data; +}; + +/** + * Provides a source and destination path to a file or directory. + */ +type FileOrDirectoryPath = { + /** + * The source path. + */ + dest: string; + + /** + * The source path. + */ + source: string; +}; diff --git a/src/common/path.ts b/src/common/path.ts new file mode 100644 index 0000000..7df1fec --- /dev/null +++ b/src/common/path.ts @@ -0,0 +1,24 @@ +/** + * Validates the specified {@link value} represents a valid directory name. + * @param value Value to validate. + * @returns `true` when the {@link value} represents a valid directory name; otherwise `false`. + */ +export function isSafeBaseName(value: string): boolean { + // Check the name is defined. + if (value.trim().length === 0) { + return false; + } + + // Check the name does not begin with a period. + if (value.trim().startsWith(".")) { + return false; + } + + // Check the name does not contain an invalid character. + return !invalidCharacters.some((invalid) => value.includes(invalid)); +} + +/** + * Collection of characters that are considered invalid when part of a directory name. + */ +export const invalidCharacters = ["\\", "/", ":", "*", "?", '"', "<", ">", "|"]; diff --git a/src/common/runner.ts b/src/common/runner.ts new file mode 100644 index 0000000..50b61cf --- /dev/null +++ b/src/common/runner.ts @@ -0,0 +1,86 @@ +import child_process, { ChildProcessByStdio, SpawnOptionsWithStdioTuple, StdioNull, StdioPipe } from "node:child_process"; +import { Readable } from "node:stream"; + +/** + * Runs the specified {@link command} with the give {@link args}. + * @param command Command to run. + * @param args Supporting arguments to be supplied to the {@link command}. + * @param options Options used to determine how the {@link command} should be run. + * @returns The result of running the command. **NB.** when the command is detached, the result is always 0. + */ +export function run(command: string, args: string[], options?: RunOptions): Promise { + if (options?.detached) { + return forget(command, args, options); + } + + return new Promise((resolve, reject) => { + const opts = mergeOptions(options || {}, "pipe"); + const child = child_process.spawn(command, args, opts); + + // Begin gathering the stderr, and wait for the child process to finish. + const stderr = stderrReader(child); + child.on("exit", (code: number) => { + if (code > 0) { + stderr.then((value) => { + console.log(value); + reject(code); + }); + } else { + resolve(0); + } + }); + }); +} + +/** + * Spawns the command in a child process and detaches from the process. + * @param command Command to run. + * @param args Supporting arguments to be supplied to the {@link command}. + * @param options Options used to determine how the {@link command} should be run. + * @returns Always 0 as the command is run in isolation. + */ +function forget(command: string, args: string[], options: RunOptions): Promise { + const opts = mergeOptions(options, "ignore"); + + const child = child_process.spawn(command, args, opts); + child.unref(); + + return Promise.resolve(0); +} + +/** + * Merges the {@link options} with the default options required to spawn the child process. + * @param options Options supplied to the {@link run} function. + * @param stderr The desired stderr of the child process. + * @returns The merged options. + */ +function mergeOptions(options: RunOptions, stderr: T): SpawnOptionsWithStdioTuple { + return { + ...{ + shell: true, + windowsHide: true + }, + ...options, + ...{ + stdio: ["ignore", "ignore", stderr] + } + }; +} + +/** + * Reads the stderr to a buffer, and resolves the promise once it closes. + * @param process The process whose stderr should be monitored. + * @returns Buffered stderr as a string. + */ +async function stderrReader(process: ChildProcessByStdio): Promise { + return new Promise((resolve) => { + let stderr: ReadonlyArray = []; + process.stderr.on("data", (data) => (stderr = stderr.concat(data))); + process.stderr.once("close", () => resolve(Buffer.concat(stderr).toString())); + }); +} + +/** + * Defines the options that support running a command via {@link run}. + */ +export type RunOptions = Omit, "stdio">; diff --git a/src/common/stdout.ts b/src/common/stdout.ts new file mode 100644 index 0000000..18dee03 --- /dev/null +++ b/src/common/stdout.ts @@ -0,0 +1,374 @@ +import chalk from "chalk"; +import isInteractive from "is-interactive"; +import logSymbols from "log-symbols"; + +/** + * Symbols that denote a spinner. + */ +const SPIN_SYMBOLS = ["|", "/", "-", "\\"]; + +/** + * Creates a new {@link ConsoleStdOut}. + * @param reduceMotion Determines whether the standard output stream should display non-essential motion, e.g. spinning bars. + * @returns The {@link ConsoleStdOut}. + */ +export function createConsole(reduceMotion: boolean): StdOut { + const interactive = isInteractive(); + return new ConsoleStdOut({ + interactive, + level: MessageLevel.LOG, + reduceMotion: reduceMotion || !interactive + }); +} + +/** + * Creates a new {@link ConsoleStdOut} that is only capable of outputting important messages. + * @returns The {@link ConsoleStdOut}. + */ +export function createQuietConsole(): StdOut { + return new ConsoleStdOut({ + interactive: false, + level: MessageLevel.WARN, + reduceMotion: true + }); +} + +/** + * Options associated with a {@link ConsoleStdOut}. + */ +type ConsoleStdOutOptions = { + /** + * Determines whether the standard output stream is interactive. + */ + interactive: boolean; + + /** + * The minimum {@link MessageLevel} to write. + */ + level: MessageLevel; + + /** + * Determines whether the standard output stream should display non-essential motion, e.g. spinning bars. + */ + reduceMotion: boolean; +}; + +/** + * Provides interactive console writer that writes to the stdout, including a spinner and status results. + */ +export type StdOut = ConsoleStdOut; + +/** + * Provides interactive console writer that writes to the stdout, including a spinner and status results. + */ +class ConsoleStdOut { + /** + * Private backing field for {@link ConsoleStdOut.isLoading}. + */ + private _isLoading = false; + + /** + * Current symbol index. + */ + private index = -1; + + /** + * The active message associated with the task denoted by the spinner. + */ + private message = ""; + + /** + * Identifies the timer responsible for displaying the spinning symbol. + */ + private timerId?: NodeJS.Timer; + + /** + * Initializes a new instance of the {@link ConsoleStdOut} class. + * @param options Options associated with this instance. + */ + constructor(private readonly options: ConsoleStdOutOptions) {} + + /** + * Gets a value that determines whether there is active loading-feedback, e.g. spinning ({@link ConsoleStdOut.spin}) due to a task running. + * @returns `true` when the feedback is spinning; otherwise `false`. + */ + public get isLoading(): boolean { + return this._isLoading; + } + + /** + * Display the {@link message} as an error message, and stops any current interactive feedback (spinners). + * @param message Optional text to display. + * @returns An error reporter capable of outputting more detailed information. + */ + public error(message: string = this.message): ErrorReporter { + this.stopAndWrite({ level: MessageLevel.ERROR, text: message }); + return new ErrorReporter(); + } + + /** + * Exits the process. + * @param code Optional exit code. + */ + public exit(code?: number): never { + process.exit(code); + } + + /** + * Display the {@link message} as an informational message, and stops any current interactive feedback (spinners). + * @param message Optional text to display. + * @returns This instance for chaining. + */ + public info(message: string = this.message): this { + return this.stopAndWrite({ level: MessageLevel.INFO, text: message }); + } + + /** + * Logs the specified {@link message} to the console. + * @param message Message to write. + * @returns This instance for chaining. + */ + public log(message?: unknown): this { + if (MessageLevel.LOG > this.options.level) { + return this; + } + + // When interactive, the loading message should always be the last message. + if (this.isLoading && this.options.interactive) { + process.stdout.cursorTo(0); + process.stdout.clearLine(1); + } + + if (message === undefined) { + console.log(); + } else { + console.log(message); + } + + // When loading, we must check if we can rely on the timer to re-write the message. When reduce motion is active, re-write the message ourselves. + if (this.isLoading && this.options.reduceMotion && this.options.interactive) { + process.stdout.write(`- ${this.message}`); + } + + return this; + } + + /** + * Displays an interactive spinner and the {@link message}. + * @param message Text to show next to the spinner. + */ + public spin(message: string): void; + /** + * Displays an interactive spinner and the {@link message}. + * @param message Text to show next to the spinner. + * @param task Task that the spinner represents. + * @returns A promise fulfilled when the {@link task} completes. + */ + public spin(message: string, task: (writer: ConsoleStdOut) => Promise | void): Promise; + /** + * Displays an interactive spinner and the {@link message}. + * @param message Text to show next to the spinner. + * @param task Task that the spinner represents. + * @returns A promise fulfilled when the {@link task} completes. + */ + public async spin(message: string, task?: (writer: ConsoleStdOut) => Promise | void): Promise { + // Confirm we can spin. + if (this.options.level < MessageLevel.LOG) { + return; + } + + // Ensure only a single operation displays live-feedback. + if (this.isLoading) { + throw new Error("An operation is already occupying the busy indicator."); + } + + // Start the spinner; when there is a task, we should wait for it. + this.message = message; + if (task === undefined) { + this.startSpinner(); + } else { + try { + this.startSpinner(); + await task(this); + + if (this.isLoading) { + this.success(); + } + } catch (err) { + if (this.isLoading) { + this.error(); + } + + throw err; + } + } + } + + /** + * Display the {@link message} as a success message, and stops any current interactive feedback (spinners). + * @param message Optional text to display. + * @returns This instance for chaining. + */ + public success(message: string = this.message): this { + return this.stopAndWrite({ level: MessageLevel.SUCCESS, text: message }); + } + + /** + * Display the {@link message} as a warning message, and stops any current interactive feedback (spinners). + * @param message Optional text to display. + * @returns This instance for chaining. + */ + public warn(message: string = this.message): this { + return this.stopAndWrite({ level: MessageLevel.WARN, text: message }); + } + + /** + * Gets the symbol associated with the {@link level}. + * @param level Message level. + * @returns Associated symbol that denotes the {@link level} as an icon. + */ + private getSymbol(level: MessageLevel): string { + switch (level) { + case MessageLevel.ERROR: + return logSymbols.error; + case MessageLevel.WARN: + return logSymbols.warning; + case MessageLevel.SUCCESS: + return logSymbols.success; + case MessageLevel.INFO: + return logSymbols.info; + default: + return "logSymbols.error"; + } + } + + /** + * Starts the spinner. + */ + private startSpinner(): void { + const write = (symbol: string): void => { + process.stdout.clearLine(1); // Prevent flickering + process.stdout.cursorTo(0); + process.stdout.write(`${symbol} ${this.message}`); + }; + + if (this.options.reduceMotion) { + write("-"); + } else if (this.options.interactive) { + this.timerId = setInterval(() => write(SPIN_SYMBOLS[++this.index % SPIN_SYMBOLS.length]), 150); + } else { + console.log(`- ${this.message}`); + } + + this._isLoading = true; + } + + /** + * Writes the message; when there is an active spinner, it is stopped and the message is associated with the task that was running. + * @param param0 Message to display. + * @param param0.level The {@link MessageLevel} associated with the message. + * @param param0.text Text to write. + * @returns This instance for chaining. + */ + private stopAndWrite({ level, text }: Message): this { + if (this._isLoading) { + if (this.timerId) { + clearInterval(this.timerId); + this.timerId = undefined; + } + + if (this.options.interactive) { + process.stdout.cursorTo(0); + process.stdout.clearLine(1); + } + } + + this._isLoading = false; + if (level <= this.options.level) { + console.log(`${this.getSymbol(level)} ${text}`); + } + + return this; + } +} + +/** + * Provides logging and exiting facilities as part of reporting an error. + */ +class ErrorReporter { + /** + * Determines whether a message has been logged; the first log is yellow. + */ + private hasMessageBeenLogged = false; + + /** + * Exits the process. + * @param code Optional exit code. + */ + public exit(code?: number): never { + process.exit(code); + } + + /** + * Logs a message to the console; if this is the first message as part of the reporter, the message will be highlighted in yellow. + * @param message Message to log. + * @returns This instance for chaining. + */ + public log(message: unknown): this { + console.log(); + + if (this.hasMessageBeenLogged) { + console.log(message); + } else { + console.log(chalk.yellow(message)); + } + + this.hasMessageBeenLogged = true; + return this; + } +} + +/** + * Provides information for a message to display as part of the spinner. + */ +type Message = { + /** + * Level of the message; this also represents the symbol that will be shown. + */ + level: MessageLevel; + + /** + * Text shown next to the symbol. + */ + text: unknown; +}; + +/** + * Levels of logging used by {@link ConsoleStdOut}. + */ +enum MessageLevel { + /** + * Error message used to indicate an error was thrown, or something critically went wrong. + */ + ERROR = 0, + + /** + * Warning message used to indicate something went wrong, but the application is able to recover. + */ + WARN = 1, + + /** + * Success message that indicates the completion of a task or operation + */ + SUCCESS = 2, + + /** + * Information message for general usage. + */ + INFO = 3, + + /** + * Miscellaneous information that is not represented by a symbol. + */ + LOG = 4 +} diff --git a/src/config.ts b/src/config.ts new file mode 100644 index 0000000..8185b76 --- /dev/null +++ b/src/config.ts @@ -0,0 +1,193 @@ +import Ajv, { JTDSchemaType } from "ajv/dist/jtd"; +import chalk from "chalk"; +import _ from "lodash"; +import logSymbols from "log-symbols"; +import { existsSync, mkdirSync, readFileSync, writeFileSync } from "node:fs"; +import { homedir, platform } from "node:os"; +import { dirname, join } from "node:path"; + +import { DeepPartial } from "./utils"; + +let __config: Config | undefined = undefined; + +/** + * Default configuration. + */ +export const defaultConfig: Config = Object.freeze({ + create: { + mode: "prod" as const + }, + npm: { + streamDeck: undefined + }, + reduceMotion: false +}); + +/** + * Gets the configuration. + * @returns The configuration. + */ +export function getConfig(): Config { + return __config || (__config = _.merge({}, defaultConfig, getLocalConfig() || {})); +} + +/** + * Gets the local configuration. + * @returns The local configuration; otherwise undefined. + */ +export function getLocalConfig(): Config | undefined { + // Check if a config file exists. + const filePath = getFilePath(); + if (!existsSync(filePath)) { + return undefined; + } + + try { + // Read the local configuration file. + const contents = readFileSync(filePath, { encoding: "utf-8" }); + const localConfig = contents === "" ? {} : JSON.parse(contents); + + validate(localConfig); + return localConfig as Config; + } catch (err) { + if (err instanceof Error) { + exitWithError(err.message); + } else { + exitWithError("Failed to read local configuration file"); + } + } +} + +/** + * Updates the configuration. + * @param updater Function responsible for updating the configuration. + */ +export function updateConfig(updater: (config: object, defaultConfig: Config) => void): void { + // Read the local configuration. + const filePath = getFilePath(); + const localConfig = getLocalConfig() || {}; + + // Invoke the updater. + updater(localConfig, defaultConfig); + validate(localConfig); + + // Write the local configuration. + if (!existsSync(dirname(filePath))) { + mkdirSync(dirname(filePath), { recursive: true }); + } + + writeFileSync(filePath, JSON.stringify(localConfig), { encoding: "utf-8" }); + + // Update the in-memory configuration. + if (__config === undefined) { + __config = _.merge({}, defaultConfig, localConfig || {}); + } else { + _.merge(__config, defaultConfig, localConfig); + } +} + +/** + * Gets the path to the local configuration file. + * @returns Configuration file path. + */ +export function getFilePath(): string { + if (platform() === "win32") { + const appData = process.env.APPDATA ?? join(homedir(), "AppData/Roaming"); + return join(appData, "Elgato/MakerCLI/config.json"); + } else { + return join(homedir(), ".config/com.elgato/maker-cli/config.json"); + } +} + +/** + * Exits the current process due to an invalid set of configuration. + * @param message Error message. + * @param errors Supporting error details that highlight the specified of the error that occurred. + */ +function exitWithError(message: string, errors?: string[]): never { + console.log(`${logSymbols.error} ${message}`); + + if (errors) { + console.log(); + errors.forEach((err) => console.log(chalk.yellow(err))); + } + + console.log(); + console.log(`Run ${chalk.blue("streamdeck config clear")} to reset configuration, or repair the configuration file manually.`); + console.log(getFilePath()); + + process.exit(1); +} + +/** + * Validates a configuration object to ensure it fulfils the {@link Config} type. + */ +const validateSchema = new Ajv({ allErrors: true }).compile({ + optionalProperties: { + create: { + optionalProperties: { + mode: { + enum: ["dev", "prod"] + } + } + }, + npm: { + optionalProperties: { + streamDeck: { + type: "string" + } + } + }, + reduceMotion: { + type: "boolean" + } + } +} satisfies JTDSchemaType>); + +/** + * Validates the specified {@link config}. + * @param config Configuration to validate. + */ +function validate(config: unknown): never | void { + if (validateSchema(config)) { + return; + } + + exitWithError( + "Invalid configuration", + validateSchema.errors?.map(({ instancePath, message, params: { allowedValues } }) => { + const detail = allowedValues ? `: ${allowedValues.join(", ")}` : ""; + return `[${instancePath.replaceAll("/", ".").substring(1)}] ${message}${detail}`; + }) + ); +} + +/** + * Stream Deck CLI configuration. + */ +export type Config = { + /** + * Persistent configuration relating to the `create` command. + */ + create: { + /** + * Defines the creation mode. When `dev`, {@link Config.npm} dependencies are used. + */ + mode: "dev" | "prod"; + }; + + /** + * Defines the preferred npm dependencies to use when developing. + */ + npm: { + /** + * Local path or npm version of the `@elgato/streamdeck` dependency to be used when developing. + */ + streamDeck?: string; + }; + + /** + * Determines whether the standard output stream should display non-essential motion, e.g. spinning bars. + */ + reduceMotion: boolean; +}; diff --git a/src/index.ts b/src/index.ts new file mode 100644 index 0000000..d5cce2c --- /dev/null +++ b/src/index.ts @@ -0,0 +1,62 @@ +import { program } from "commander"; + +import { config, create, link, restart, setDeveloperMode, stop } from "./commands"; + +program + .command("create") + .description("Stream Deck plugin creation wizard.") + .action(() => create()); + +program + .command("link") + .argument("[path]", "Path of the plugin to link.") + .description("Links the plugin to Stream Deck.") + .action((path) => link({ path })); + +program + .command("restart") + .alias("r") + .description("Starts the plugin in Stream Deck; if the plugin is already running, it is stopped first.") + .argument("") + .action((uuid: string) => restart({ uuid })); + +program + .command("stop") + .alias("s") + .description("Stops the plugin in Stream Deck.") + .argument("") + .action((uuid: string) => stop({ uuid })); + +program + .command("dev") + .description("Enables developer mode.") + .option("-d|--disable", "Disables developer mode", false) + .action(({ disable }) => setDeveloperMode({ disable })); + +const configCommand = program.command("config").description("Manage the local configuration."); + +configCommand + .command("set") + .description("Sets each of the configuration keys to their provided value.") + .argument("=") + .argument("[=...]") + .action((entry: string, entries: string[]) => config.set({ entry, entries })); + +configCommand + .command("unset") + .description("Resets each of the configuration keys to their default values.") + .argument("") + .argument("[...]") + .action((key: string, keys: string[]) => config.unset({ key, keys: keys })); + +configCommand + .command("list") + .description("Lists all configuration.") + .action(() => config.list()); + +configCommand + .command("reset") + .description("Resets all configuration.") + .action(() => config.reset()); + +program.parse(); diff --git a/src/stream-deck.ts b/src/stream-deck.ts new file mode 100644 index 0000000..b45c7c2 --- /dev/null +++ b/src/stream-deck.ts @@ -0,0 +1,169 @@ +import find from "find-process"; +import { Dirent, readdirSync, readlinkSync } from "node:fs"; +import os from "node:os"; +import { basename, join } from "node:path"; + +const PLUGIN_SUFFIX = ".sdPlugin"; + +/** + * Gets the list of installed plugins. + * @returns List of plugins, including their path and UUID. + */ +export function getPlugins(): PluginInfo[] { + return readdirSync(getPluginsPath(), { withFileTypes: true }).reduce((plugins, entry) => { + if (entry.isDirectory() || entry.isSymbolicLink()) { + const uuid = getPluginId(entry.name); + if (uuid) { + plugins.push(new PluginInfo(entry, uuid)); + } + } + + return plugins; + }, []); +} + +/** + * Gets the installation path of the plugins that Stream Deck will run. + * @returns The path. + */ +export function getPluginsPath(): string { + if (os.platform() === "darwin") { + return join(os.homedir(), "Library/Application Support/com.elgato.StreamDeck/Plugins"); + } + + const appData = process.env.APPDATA ?? join(os.homedir(), "AppData/Roaming"); + return join(appData, "Elgato/StreamDeck/Plugins"); +} + +/** + * Determines whether a plugin is installed that matches the specified {@link uuid}. + * @param uuid Unique-identifier of the plugin to look for. + * @returns `true` when a plugin was found that matches the {@link uuid}; otherwise `false`. + */ +export function isPluginInstalled(uuid: string): boolean { + return getPlugins().some((pi) => pi.uuid === uuid); +} + +/** + * Gets the path to the Stream Deck application. + * @returns The path. + */ +export function getStreamDeckPath(): string { + if (os.platform() === "darwin") { + return "/Applications/Elgato Stream Deck.app/Contents/MacOS/Stream Deck"; + } else { + return "C:\\Program Files\\Elgato\\StreamDeck\\StreamDeck.exe"; + } +} + +/** + * Determines if the Stream Deck application is currently running. + * @returns `true` when the application is running; otherwise `false`. + */ +export async function isStreamDeckRunning(): Promise { + const appPath = getStreamDeckPath(); + + if (os.platform() === "darwin") { + const processes = await find("name", "Elgato Stream Deck"); + return processes.some((p) => p.cmd.startsWith(appPath)); + } else { + const processes = await find("name", "StreamDeck.exe"); + return processes.some((p) => p.cmd.startsWith(`"${appPath}"`)); + } +} + +/** + * Attempts to parse the {@link path} to determine the plugin's UUID. + * @param path Path that represents a plugin; this should end with `.sdPlugin`. + * @returns The plugin's UUID; otherwise `undefined`. + */ +export function getPluginId(path: string): string | undefined { + const name = basename(path); + return name.endsWith(PLUGIN_SUFFIX) ? name.slice(0, -9) : undefined; +} + +/** + * Generates a UUID from the `author` and `name` values. Values are parsed to ensure valid sections, resulting in a complete UUID; when a value cannot be parsed, the resulting UUID is `undefined`. + * @param author Author of the plugin. + * @param name Name of the plugin. + * @returns UUID that represents the plugin, from information found in the manifest.json file; otherwise `undefined`. + */ +export function generatePluginId(author: string | undefined, name: string | undefined): string | undefined { + const sections = { + author: getSafeValue(author), + name: getSafeValue(name) + }; + + if (sections.author === undefined || sections.name === undefined) { + return; + } + + return `com.${sections.author}.${sections.name}`; +} + +/** + * Attempts to format the specified `value` to ensure it is safe for a plugin's identifier. When the `value` results in an empty string, `undefined` is returned. + * @param value Value to parse, and make UUID safe. + * @returns Value that is safe for a UUID section; otherwise `undefined`. + */ +export function getSafeValue(value: string | undefined): string | undefined { + if (value === undefined) { + return undefined; + } + + const safeValue = value + .toLowerCase() + .replaceAll(" ", "-") + .replaceAll(/[^\-a-z0-9_]/g, ""); + + return safeValue !== "" ? safeValue : undefined; +} + +/** + * Determines whether the specified `uuid` is a valid plugin unique-identifier. + * @param uuid UUID being checked. + * @returns `true` when the `uuid` represents a valid unique-identifier; otherwise `false`. + */ +export function isValidPluginId(uuid: string | undefined): boolean { + if (uuid === undefined || uuid === null) { + return false; + } + + return /^([a-z0-9\-_]*[a-z0-9][a-z0-9\-_]*\.){2}[a-z0-9\-_]*[a-z0-9][a-z0-9\-_]*$/.test(uuid); +} + +/** + * Provides information about an installed plugin. + */ +class PluginInfo { + /** + * Path where the plugin is installed. + */ + public readonly path; + + /** + * Private backing field for {@link PluginInfo.sourcePath}. + */ + private _sourcePath: string | null | undefined = undefined; + + /** + * Initializes a new instance of the {@link PluginInfo} class. + * @param entry The directory entry of the plugin. + * @param uuid Unique identifier of the plugin. + */ + constructor(private readonly entry: Dirent, public readonly uuid: string) { + this.path = join(this.entry.path, this.entry.name); + } + + /** + * Gets the source path of the plugin, when the installation path is a symbolic link; otherwise `null`. + * @returns The source path; otherwise `null`. + */ + public get sourcePath(): string | null { + if (this._sourcePath === undefined) { + this._sourcePath = this.entry.isSymbolicLink() ? readlinkSync(this.path) : null; + } + + return this._sourcePath; + } +} diff --git a/src/types/rage-edit.d.ts b/src/types/rage-edit.d.ts new file mode 100644 index 0000000..f680362 --- /dev/null +++ b/src/types/rage-edit.d.ts @@ -0,0 +1,11 @@ +declare module "rage-edit" { + export const Registry: { + /** + * Sets the specified registry key. + * @param path Path to the registry entry. + * @param name Name of the registry entry. + * @param data Data to be stored. + */ + set(path: string, name: string, data: unknown): Promise; + }; +} diff --git a/src/utils.ts b/src/utils.ts new file mode 100644 index 0000000..2e234c3 --- /dev/null +++ b/src/utils.ts @@ -0,0 +1,4 @@ +/** + * Provides a utility type that recursively applies {@link Partial} to all properties that are objects. + */ +export type DeepPartial = T extends object ? { [P in keyof T]?: DeepPartial } : T; diff --git a/template/.gitignore b/template/.gitignore new file mode 100644 index 0000000..2362a16 --- /dev/null +++ b/template/.gitignore @@ -0,0 +1,6 @@ +# Node.js +node_modules + +# Stream Deck files +com.*.sdPlugin/bin +com.*.sdPlugin/logs \ No newline at end of file diff --git a/template/.vscode/launch.json b/template/.vscode/launch.json new file mode 100644 index 0000000..e34b2cf --- /dev/null +++ b/template/.vscode/launch.json @@ -0,0 +1,20 @@ +{ + // Use IntelliSense to learn about possible attributes. + // Hover to view descriptions of existing attributes. + // For more information, visit: https://go.microsoft.com/fwlink/?linkid=830387 + "version": "0.2.0", + "configurations": [ + { + "name": "Attach to Plugin", + "type": "node", + "request": "attach", + "processId": "${command:PickProcess}", + "outFiles": [ + "${workspaceFolder}/bin/**/*.js" + ], + "resolveSourceMapLocations": [ + "${workspaceFolder}/**" + ] + } + ] +} \ No newline at end of file diff --git a/template/.vscode/settings.json b/template/.vscode/settings.json new file mode 100644 index 0000000..4f809ca --- /dev/null +++ b/template/.vscode/settings.json @@ -0,0 +1,14 @@ +{ + /* Prefer tabs over spaces for accessibility */ + "editor.insertSpaces": false, + "editor.detectIndentation": false, + /* Explorer */ + "explorer.fileNesting.enabled": true, + "explorer.fileNesting.patterns": { + "*.js": "${capture}.js.map, ${capture}.min.js, ${capture}.d.ts", + "package.json": "package-lock.json, yarn.lock, pnpm-lock.yaml, rollup.config.mjs, tsconfig.json" + }, + "files.exclude": { + "node_modules": true + } +} \ No newline at end of file diff --git a/template/com.elgato.template.sdPlugin/imgs/actions/counter/icon.png b/template/com.elgato.template.sdPlugin/imgs/actions/counter/icon.png new file mode 100644 index 0000000000000000000000000000000000000000..c77662eb473b1786f6d43a4c10fc69645d6dceb2 GIT binary patch literal 265 zcmeAS@N?(olHy`uVBq!ia0vp^A|TAc1|)ksWqE-VV{wqX6T`Z5GB1G~mUKs7M+SzC z{oH>NS%G}c0*}aI1_r*vAk26?e?@50WY%PVP{QGxzF-Msw{Ovb zQiW|zI|Zg>Xd3dcm^4PnJ#&&&5M@8IgJ*5~CH96N3N4+Cd5pyujgmIstJl~pxMC&a zsbgGjmldBT9N^i*xHR7}b5279^V)_R3{%c2#Kbf-GBTWQVxF$RjXrmt~IWR?ol*doLo z7{L&@+GSxftJ$Ir44jJ-xVfq&o}ZFs3w{u@=g8kl*3b8b`|SH!z0Sh-vWCdE+k5-g zO)+Uc8X{1>pzoE(E1}+*3QKl%m}cp9R{CFy)Or8F!#H_?XQF1rwKFR+g8p20|HK(H z;V5e)lz6&q@wI85yC(gX|Ce9n(i<2&GlpgB$tiVuB2g<+{|U}6J?Ligbb|PujJ88w zeBuYA)@n7?UU|6ZgY^?xnMGnohQDujmj8I@vg1WWyMJTxix*w*n|1U~JZjQ8$bHOn z(`7~9i*3Iy*+sP2Cy9xtY!sQIr*i)9A6*?*^;wd}zFens-7*$SX=Iw6|0~nIb%9}E a2@^}5%iaU2>ZgGL$KdJe=d#Wzp$PyH(VIK~ literal 0 HcmV?d00001 diff --git a/template/com.elgato.template.sdPlugin/imgs/actions/counter/key.png b/template/com.elgato.template.sdPlugin/imgs/actions/counter/key.png new file mode 100644 index 0000000000000000000000000000000000000000..721cd01ae90c159a9a08e732356243815507c3fb GIT binary patch literal 827 zcmV-B1H}A^P)Z}}HxGt5+(@CnO@??Co=cKv$+?2XWL2k`Shl8`V_9*vo zT)ysRwm-j?w@WvF%XjbiiS%;d(F8~@$WA%KHhSIf(%O9H)7IDHPX>%&iRlJU|2FSs zrE}HxcBkRLPR(5r_i>|MdmtZc_q}hYVN%e}AN^0?2?*TnV2SDfR-tkObLZBL%1S3r z1!)=?HUVWo(WeMV)5x$1CG2!J3i(gXwu0C#W~W1~1A#}WeyA|L=LSYn|@ z(LJd?jE@43m8%}bKYvEiJ+YpS>hX)IIW)&&X}=ttKJW9@*W*tHjG%&ae5bh{zw2-+ zIW=|mYH}R5cQu^y)A6JEJ~iRd1nBF=QxC{J#y>rOE&0INa~R;3hi{*1=FCis^wyil z@uV-zljb$hy)U-0az}dIwmC)H3w3TfzHw-V>H~E%sdqge5F2@m(YaY{Q;At78r2vA z0(aKF27!r2)lCI~J4-+W1PA~(6+}RQ0B}=51Ox~G_b-Qk@%uF+8ZH0;002ovPDHLk FV1gG{a47%) literal 0 HcmV?d00001 diff --git a/template/com.elgato.template.sdPlugin/imgs/actions/counter/key@2x.png b/template/com.elgato.template.sdPlugin/imgs/actions/counter/key@2x.png new file mode 100644 index 0000000000000000000000000000000000000000..4ca98e890372817980d41d666d43b3035b90fc08 GIT binary patch literal 1709 zcmeAS@N?(olHy`uVBq!ia0vp^6F``Q4M;wBd$a>cv7|ftIx;Y9?C1WI$jZRLmg4E+ z7*fIbc9vsysJqB<^@B%j3>{6(xHSWn?uKf!itBMb^7_N}S4yw+rru}MU%W>`wRgO5 z(g@rA;#k1uf{&{LPkMK%Ejr7|(zNe$(R*v-&uQ;|@^)D5On)}#|NrSbjq~qa={!2s zzp;%eSiol}`0ZPhH>)czI~nj;<3nP)_8Qwg(%b(1&7SkY%`ou0!=_IR{>pbZ z+o zHO_9gxY@OL?QhRMcl6^mnaxzR>aFe^{`9cCw$0-Cy)r(3JPVDw*(S(b-MVe}U#mZ# zf1j^*KV!eu{e`?U<4@H;`H$cKwa>p+&n>?0E~oL{%g*jnPtRXyXq$U6F7cCP|Fs5S zz{TzVQ`B`XO8RNP*ySbmQVzG;TRz=NdYYNk`d9K|&|D|`898E=e2!|D?E>6dIzid{@2)R`uu5{Mg+jWhD*w+qT1{M}IR)!NQ@&_4M zn2BPoeSc`j=T+iTXRS}mN@@q}wGo+U$sn5Oyw{TfqMjrxCIeDrJX z+|^qY!SC5|FY5B1%k%Ot&97m7r8_5o68m|VAaG){+FWEj$%N;!OXHm?cV>@j-?@7$ zw9n|*USCo+&rnOjs{7vISBJvC+eIcx6n-=2N`W(0res@UZ@Gg8khuh-3e zYAF%;$MfPM#xG@m4^DLTnCLD#Ymvt>9!HSi-a}@;`wuVpuj1O*lNsVrBUm4_C4<4U z=yiYC;r6*}MJkP+&EV>gf8@PNOmxBbX7R+g4`UU)o`#(+WR(MF`DK1O>uS1ee|-E| zocQzA+r5*oKfU2>9OumXWUH#SzgLCIR22rI4qo zf2^r6|MQ8!Sik5^iGEw3|Fqe?grU~%=EMKl<>|Tavn8HySoQP2Y$^W~``WZQTbLM3 zGTF7}%QtA57hHPDd|`>~ikdoxRd)_}F1Ozpd}9fB`acU`qC0x=;#&=dC)a*iv@!?C o$lmQ^a>!fTA8f%u1&L4g>NffTZyvhU0P7zHPgg&ebxsLQ0863(9smFU literal 0 HcmV?d00001 diff --git a/template/com.elgato.template.sdPlugin/imgs/plugin/category-icon.png b/template/com.elgato.template.sdPlugin/imgs/plugin/category-icon.png new file mode 100644 index 0000000000000000000000000000000000000000..c9faaa2f2ec8b385d23aa015dbeacb4868896612 GIT binary patch literal 1064 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%0Ai$D2KW^!%r;dHIWHA1dAUrE7M~ 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

K+?_=0-FJ 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 U0HvYHyZ`_I07*qoM6N<$f*xMpF literal 0 HcmV?d00001 diff --git a/template/com.elgato.template.sdPlugin/manifest.json.ejs b/template/com.elgato.template.sdPlugin/manifest.json.ejs new file mode 100644 index 0000000..729d956 --- /dev/null +++ b/template/com.elgato.template.sdPlugin/manifest.json.ejs @@ -0,0 +1,46 @@ +{ + "Name": <%- JSON.stringify(name) %>, + "Version": "0.1.0", + "Author": <%- JSON.stringify(author) %>, + "Actions": [ + { + "Name": "Counter", + "UUID": "<%- uuid %>.increment", + "Icon": "imgs/actions/counter/icon", + "Tooltip": "Displays a count, which increments by one on press.", + "Controllers": [ + "Keypad" + ], + "States": [ + { + "Image": "imgs/actions/counter/key", + "TitleAlignment": "middle" + } + ] + } + ], + "Category": <%- JSON.stringify(name) %>, + "CategoryIcon": "imgs/plugin/category-icon", + "CodePath": "bin/plugin.js", + "Description": <%- JSON.stringify(description) %>, + "Icon": "imgs/plugin/marketplace", + "SDKVersion": 2, + "Software": { + "MinimumVersion": "6.3" + }, + "OS": [ + { + "Platform": "mac", + "MinimumVersion": "10.15" + }, + { + "Platform": "windows", + "MinimumVersion": "10" + } + ], + "Nodejs": { + "Version": "20", + "Debug": "enabled" + }, + "UUID": <%- JSON.stringify(uuid) %> +} \ No newline at end of file diff --git a/template/package.json.ejs b/template/package.json.ejs new file mode 100644 index 0000000..f0f5876 --- /dev/null +++ b/template/package.json.ejs @@ -0,0 +1,20 @@ +{ + "scripts": { + "build": "rollup -c", + "watch": "rollup -c -w" + }, + "devDependencies": { + "@rollup/plugin-commonjs": "^25.0.4", + "@rollup/plugin-node-resolve": "^15.2.1", + "@rollup/plugin-terser": "^0.4.3", + "@rollup/plugin-typescript": "11.1.2", + "@tsconfig/node20": "^20.1.2", + "@types/node": "^20.5.6", + "rollup": "^3.28.1", + "tslib": "^2.6.2", + "typescript": "^5.2.2" + }, + "dependencies": { + "@elgato/streamdeck": <%- JSON.stringify(streamDeckPackage) %> + } +} diff --git a/template/rollup.config.mjs b/template/rollup.config.mjs new file mode 100644 index 0000000..c70d258 --- /dev/null +++ b/template/rollup.config.mjs @@ -0,0 +1,71 @@ +import commonjs from "@rollup/plugin-commonjs"; +import nodeResolve from "@rollup/plugin-node-resolve"; +import terser from "@rollup/plugin-terser"; +import typescript from "@rollup/plugin-typescript"; +import fs from "node:fs"; +import path from "node:path"; +import url from "node:url"; + +const __dirname = path.dirname(url.fileURLToPath(import.meta.url)); + +const isWatching = !!process.env.ROLLUP_WATCH; +const tsConfig = JSON.parse(fs.readFileSync(path.resolve(__dirname, "./tsconfig.json"), "utf8")); + +prepareOutDir(tsConfig.compilerOptions.outDir); + +/** + * @type {import('rollup').RollupOptions} + */ +const config = { + input: "src/plugin.ts", + output: { + dir: tsConfig.compilerOptions.outDir, + format: "cjs", + sourcemap: isWatching, + sourcemapPathTransform: (relativeSourcePath, sourcemapPath) => { + return url.pathToFileURL(path.resolve(path.dirname(sourcemapPath), relativeSourcePath)).href; + } + }, + plugins: [ + typescript({ + sourceMap: isWatching, + inlineSources: isWatching, + mapRoot: isWatching ? "./" : undefined + }), + commonjs({ + sourceMap: false + }), + nodeResolve({ + browser: false, + exportConditions: ["node"], + preferBuiltins: true + }), + !isWatching && + terser({ + format: { + comments: false + } + }) + ] +}; + +export default config; + +/** + * Validates the output directory is situated within the current working directory; upon passing validation, the directory is cleaned before build. + * @param {string} outDir + */ +function prepareOutDir(outDir) { + if (outDir === undefined) { + throw new Error("outDir must be specified within the TypeScript config file."); + } + + const relative = path.relative(__dirname, outDir); + if (relative && !relative.startsWith("..") && !path.isAbsolute(relative)) { + if (fs.existsSync(outDir)) { + fs.rmSync(outDir, { recursive: true }); + } + } else { + throw new Error("outDir must be located within the current working directory. Please review the TypeScript config file."); + } +} diff --git a/template/src/actions/increment-counter.ts.ejs b/template/src/actions/increment-counter.ts.ejs new file mode 100644 index 0000000..b16c1e9 --- /dev/null +++ b/template/src/actions/increment-counter.ts.ejs @@ -0,0 +1,39 @@ +import { action, KeyDownEvent, SingletonAction, WillAppearEvent } from "@elgato/streamdeck"; + +/** + * An example action class that displays a count that increments by one each time the button is pressed. + */ +@action({ UUID: "<%- uuid %>.increment" }) +export class IncrementCounter extends SingletonAction { + /** + * The {@link SingletonAction.onWillAppear} event is useful for setting the visual representation of an action when it become visible. This could be due to the Stream Deck first + * starting up, or the user navigating between pages / folders etc.. There is also an inverse of this event in the form of {@link streamDeck.client.onWillDisappear}. In this example, + * we're setting the title to the "count" that is incremented in {@link IncrementCounter.onKeyDown}. + */ + onWillAppear(ev: WillAppearEvent): void | Promise { + return ev.action.setTitle(`${ev.payload.settings.count ?? 0}`); + } + + /** + * Listens for the {@link SingletonAction.onKeyDown} event which is emitted by Stream Deck when an action is pressed. Stream Deck provides various events for tracking interaction + * with devices including key down/up, dial rotations, and device connectivity, etc. When triggered, {@link ev} object contains information about the event including any payloads + * and action information where applicable. In this example, our action will display a counter that increments by one each press. We track the current count on the action's persisted + * settings using `setSettings` and `getSettings`. + */ + async onKeyDown(ev: KeyDownEvent): Promise { + // Determine the current count from the settings. + let count = ev.payload.settings.count ?? 0; + count++; + + // Update the current count in the action's settings, and change the title. + await ev.action.setSettings({ count }); + await ev.action.setTitle(`${count}`); + } +} + +/** + * Settings for {@link IncrementCounter}. + */ +type CounterSettings = { + count: number; +}; diff --git a/template/src/plugin.ts b/template/src/plugin.ts new file mode 100644 index 0000000..23089d4 --- /dev/null +++ b/template/src/plugin.ts @@ -0,0 +1,12 @@ +import streamDeck, { LogLevel } from "@elgato/streamdeck"; + +import { IncrementCounter } from "./actions/increment-counter"; + +// We can enable "trace" logging so that all messages between the Stream Deck, and the plugin are recorded. When storing sensitive information +streamDeck.logger.setLevel(LogLevel.TRACE); + +// Register the increment action. +streamDeck.actions.registerAction(new IncrementCounter()); + +// Finally, connect to the Stream Deck. +streamDeck.connect(); diff --git a/template/tsconfig.json.ejs b/template/tsconfig.json.ejs new file mode 100644 index 0000000..86d2ab5 --- /dev/null +++ b/template/tsconfig.json.ejs @@ -0,0 +1,14 @@ +{ + "extends": "@tsconfig/node20/tsconfig.json", + "compilerOptions": { + "module": "ESNext", + "moduleResolution": "Bundler", + "outDir": "<%- uuid %>.sdPlugin/bin" + }, + "include": [ + "src/**/*.ts" + ], + "exclude": [ + "node_modules" + ] +} \ No newline at end of file diff --git a/tsconfig.json b/tsconfig.json new file mode 100644 index 0000000..a977296 --- /dev/null +++ b/tsconfig.json @@ -0,0 +1,16 @@ +{ + "extends": "@tsconfig/node20/tsconfig.json", + "compilerOptions": { + "module": "ESNext", + "moduleResolution": "Node" + }, + "include": [ + "src", + "rollup.config.ts" + ], + "exclude": [ + "bin", + "node_modules", + "template" + ] +} \ No newline at end of file diff --git a/vs.code-workspace b/vs.code-workspace new file mode 100644 index 0000000..8567929 --- /dev/null +++ b/vs.code-workspace @@ -0,0 +1,17 @@ +{ + "folders": [ + { + "path": ".", + "name": "CLI" + }, + { + "path": "template", + "name": "Template" + } + ], + "settings": { + "files.exclude": { + "template": true + } + } +} \ No newline at end of file