From dfa2e83238095145be9acfaa457345b369f5c077 Mon Sep 17 00:00:00 2001 From: "homarr-renovate[bot]" <158783068+homarr-renovate[bot]@users.noreply.github.com> Date: Tue, 17 Dec 2024 14:53:52 +0000 Subject: [PATCH 1/6] chore(deps): update dependency @types/chroma-js to v2.4.5 (#1680) Co-authored-by: homarr-renovate[bot] <158783068+homarr-renovate[bot]@users.noreply.github.com> --- apps/nextjs/package.json | 2 +- pnpm-lock.yaml | 10 +++++----- 2 files changed, 6 insertions(+), 6 deletions(-) diff --git a/apps/nextjs/package.json b/apps/nextjs/package.json index 518d634f5..038adba45 100644 --- a/apps/nextjs/package.json +++ b/apps/nextjs/package.json @@ -81,7 +81,7 @@ "@homarr/eslint-config": "workspace:^0.2.0", "@homarr/prettier-config": "workspace:^0.1.0", "@homarr/tsconfig": "workspace:^0.1.0", - "@types/chroma-js": "2.4.4", + "@types/chroma-js": "2.4.5", "@types/node": "^22.10.2", "@types/prismjs": "^1.26.5", "@types/react": "^19.0.1", diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index 848b106c4..e29f0940d 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -249,8 +249,8 @@ importers: specifier: workspace:^0.1.0 version: link:../../tooling/typescript '@types/chroma-js': - specifier: 2.4.4 - version: 2.4.4 + specifier: 2.4.5 + version: 2.4.5 '@types/node': specifier: ^22.10.2 version: 22.10.2 @@ -3892,8 +3892,8 @@ packages: '@types/body-parser@1.19.5': resolution: {integrity: sha512-fB3Zu92ucau0iQ0JMCFQE7b/dv8Ot07NI3KaZIkIUNXq82k4eBAqUaneXfleGY9JWskeS9y+u0nXMyspcuQrCg==} - '@types/chroma-js@2.4.4': - resolution: {integrity: sha512-/DTccpHTaKomqussrn+ciEvfW4k6NAHzNzs/sts1TCqg333qNxOhy8TNIoQCmbGG3Tl8KdEhkGAssb1n3mTXiQ==} + '@types/chroma-js@2.4.5': + resolution: {integrity: sha512-6ISjhzJViaPCy2q2e6PgK+8HcHQDQ0V2LDiKmYAh+jJlLqDa6HbwDh0wOevHY0kHHUx0iZwjSRbVD47WOUx5EQ==} '@types/connect@3.4.38': resolution: {integrity: sha512-K6uROf1LD88uDQqJCktA4yzL1YYAK6NgfsI0v/mTgyPKWsX1CnJ0XPSDhViejru1GcRkLWb8RlzFYJRqGUbaug==} @@ -10644,7 +10644,7 @@ snapshots: '@types/connect': 3.4.38 '@types/node': 22.10.2 - '@types/chroma-js@2.4.4': {} + '@types/chroma-js@2.4.5': {} '@types/connect@3.4.38': dependencies: From 28667c5e1aa5b9c9c640f251fcb4e9e1063fa922 Mon Sep 17 00:00:00 2001 From: "homarr-renovate[bot]" <158783068+homarr-renovate[bot]@users.noreply.github.com> Date: Tue, 17 Dec 2024 17:36:20 +0000 Subject: [PATCH 2/6] fix(deps): update tanstack-query monorepo to ^5.62.8 (#1682) Co-authored-by: homarr-renovate[bot] <158783068+homarr-renovate[bot]@users.noreply.github.com> --- apps/nextjs/package.json | 6 ++-- pnpm-lock.yaml | 62 ++++++++++++++++++++-------------------- 2 files changed, 34 insertions(+), 34 deletions(-) diff --git a/apps/nextjs/package.json b/apps/nextjs/package.json index 038adba45..fe9b0eeb7 100644 --- a/apps/nextjs/package.json +++ b/apps/nextjs/package.json @@ -47,9 +47,9 @@ "@million/lint": "1.0.14", "@t3-oss/env-nextjs": "^0.11.1", "@tabler/icons-react": "^3.26.0", - "@tanstack/react-query": "^5.62.7", - "@tanstack/react-query-devtools": "^5.62.7", - "@tanstack/react-query-next-experimental": "5.62.7", + "@tanstack/react-query": "^5.62.8", + "@tanstack/react-query-devtools": "^5.62.8", + "@tanstack/react-query-next-experimental": "5.62.8", "@trpc/client": "next", "@trpc/next": "next", "@trpc/react-query": "next", diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index e29f0940d..0f7d6ebaf 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -152,23 +152,23 @@ importers: specifier: ^3.26.0 version: 3.26.0(react@19.0.0) '@tanstack/react-query': - specifier: ^5.62.7 - version: 5.62.7(react@19.0.0) + specifier: ^5.62.8 + version: 5.62.8(react@19.0.0) '@tanstack/react-query-devtools': - specifier: ^5.62.7 - version: 5.62.7(@tanstack/react-query@5.62.7(react@19.0.0))(react@19.0.0) + specifier: ^5.62.8 + version: 5.62.8(@tanstack/react-query@5.62.8(react@19.0.0))(react@19.0.0) '@tanstack/react-query-next-experimental': - specifier: 5.62.7 - version: 5.62.7(@tanstack/react-query@5.62.7(react@19.0.0))(next@14.2.20(@babel/core@7.26.0)(react-dom@19.0.0(react@19.0.0))(react@19.0.0)(sass@1.83.0))(react@19.0.0) + specifier: 5.62.8 + version: 5.62.8(@tanstack/react-query@5.62.8(react@19.0.0))(next@14.2.20(@babel/core@7.26.0)(react-dom@19.0.0(react@19.0.0))(react@19.0.0)(sass@1.83.0))(react@19.0.0) '@trpc/client': specifier: next version: 11.0.0-rc.660(@trpc/server@11.0.0-rc.660(typescript@5.7.2))(typescript@5.7.2) '@trpc/next': specifier: next - version: 11.0.0-rc.660(@tanstack/react-query@5.62.7(react@19.0.0))(@trpc/client@11.0.0-rc.660(@trpc/server@11.0.0-rc.660(typescript@5.7.2))(typescript@5.7.2))(@trpc/react-query@11.0.0-rc.660(@tanstack/react-query@5.62.7(react@19.0.0))(@trpc/client@11.0.0-rc.660(@trpc/server@11.0.0-rc.660(typescript@5.7.2))(typescript@5.7.2))(@trpc/server@11.0.0-rc.660(typescript@5.7.2))(react-dom@19.0.0(react@19.0.0))(react@19.0.0)(typescript@5.7.2))(@trpc/server@11.0.0-rc.660(typescript@5.7.2))(next@14.2.20(@babel/core@7.26.0)(react-dom@19.0.0(react@19.0.0))(react@19.0.0)(sass@1.83.0))(react-dom@19.0.0(react@19.0.0))(react@19.0.0)(typescript@5.7.2) + version: 11.0.0-rc.660(@tanstack/react-query@5.62.8(react@19.0.0))(@trpc/client@11.0.0-rc.660(@trpc/server@11.0.0-rc.660(typescript@5.7.2))(typescript@5.7.2))(@trpc/react-query@11.0.0-rc.660(@tanstack/react-query@5.62.8(react@19.0.0))(@trpc/client@11.0.0-rc.660(@trpc/server@11.0.0-rc.660(typescript@5.7.2))(typescript@5.7.2))(@trpc/server@11.0.0-rc.660(typescript@5.7.2))(react-dom@19.0.0(react@19.0.0))(react@19.0.0)(typescript@5.7.2))(@trpc/server@11.0.0-rc.660(typescript@5.7.2))(next@14.2.20(@babel/core@7.26.0)(react-dom@19.0.0(react@19.0.0))(react@19.0.0)(sass@1.83.0))(react-dom@19.0.0(react@19.0.0))(react@19.0.0)(typescript@5.7.2) '@trpc/react-query': specifier: next - version: 11.0.0-rc.660(@tanstack/react-query@5.62.7(react@19.0.0))(@trpc/client@11.0.0-rc.660(@trpc/server@11.0.0-rc.660(typescript@5.7.2))(typescript@5.7.2))(@trpc/server@11.0.0-rc.660(typescript@5.7.2))(react-dom@19.0.0(react@19.0.0))(react@19.0.0)(typescript@5.7.2) + version: 11.0.0-rc.660(@tanstack/react-query@5.62.8(react@19.0.0))(@trpc/client@11.0.0-rc.660(@trpc/server@11.0.0-rc.660(typescript@5.7.2))(typescript@5.7.2))(@trpc/server@11.0.0-rc.660(typescript@5.7.2))(react-dom@19.0.0(react@19.0.0))(react@19.0.0)(typescript@5.7.2) '@trpc/server': specifier: next version: 11.0.0-rc.660(typescript@5.7.2) @@ -517,7 +517,7 @@ importers: version: 11.0.0-rc.660(@trpc/server@11.0.0-rc.660(typescript@5.7.2))(typescript@5.7.2) '@trpc/react-query': specifier: next - version: 11.0.0-rc.660(@tanstack/react-query@5.62.7(react@19.0.0))(@trpc/client@11.0.0-rc.660(@trpc/server@11.0.0-rc.660(typescript@5.7.2))(typescript@5.7.2))(@trpc/server@11.0.0-rc.660(typescript@5.7.2))(react-dom@19.0.0(react@19.0.0))(react@19.0.0)(typescript@5.7.2) + version: 11.0.0-rc.660(@tanstack/react-query@5.62.8(react@19.0.0))(@trpc/client@11.0.0-rc.660(@trpc/server@11.0.0-rc.660(typescript@5.7.2))(typescript@5.7.2))(@trpc/server@11.0.0-rc.660(typescript@5.7.2))(react-dom@19.0.0(react@19.0.0))(react@19.0.0)(typescript@5.7.2) '@trpc/server': specifier: next version: 11.0.0-rc.660(typescript@5.7.2) @@ -3556,27 +3556,27 @@ packages: resolution: {integrity: sha512-Wo1iKt2b9OT7d+YGhvEPD3DXvPv2etTusIMhMUoG7fbhmxcXCtIjJDEygy91Y2JFlwGyjqiBPRozme7UD8hoqg==} engines: {node: '>=12'} - '@tanstack/query-core@5.62.7': - resolution: {integrity: sha512-fgpfmwatsrUal6V+8EC2cxZIQVl9xvL7qYa03gsdsCy985UTUlS4N+/3hCzwR0PclYDqisca2AqR1BVgJGpUDA==} + '@tanstack/query-core@5.62.8': + resolution: {integrity: sha512-4fV31vDsUyvNGrKIOUNPrZztoyL187bThnoQOvAXEVlZbSiuPONpfx53634MKKdvsDir5NyOGm80ShFaoHS/mw==} '@tanstack/query-devtools@5.61.4': resolution: {integrity: sha512-21Tw+u8E3IJJj4A/Bct4H0uBaDTEu7zBrR79FeSyY+mS2gx5/m316oDtJiKkILc819VSTYt+sFzODoJNcpPqZQ==} - '@tanstack/react-query-devtools@5.62.7': - resolution: {integrity: sha512-wxXsdTZJRs//hMtJMU5aNlUaTclRFPqLvDNeWbRj8YpGD3aoo4zyu53W55W2DY16+ycg3fti21uCW4N9oyj91w==} + '@tanstack/react-query-devtools@5.62.8': + resolution: {integrity: sha512-SwjXjQTRONd9WPeKVQQ9framG7YNqPV8PS+EGNVNXAyz2XThulMRCvZnh2+3DggnjcYM7YcpnuoZ4RH7q13p0g==} peerDependencies: - '@tanstack/react-query': ^5.62.7 + '@tanstack/react-query': ^5.62.8 react: ^18 || ^19 - '@tanstack/react-query-next-experimental@5.62.7': - resolution: {integrity: sha512-9f+VpQ3P7ta86frcpZVYDcaYCAktQ/ccp7nrNUWdRnHkcVQ/kQJKwGCCxBPoV7/K/PmeWDZDR4COqcQi7bIGnw==} + '@tanstack/react-query-next-experimental@5.62.8': + resolution: {integrity: sha512-2F7WA0L810rZXvyE6chsDr8dVqPPO5shilPFHYZjsu7TAE3egnTNUF5JhrhibRJbZ1SYfErL3urDyE+bXpUclw==} peerDependencies: - '@tanstack/react-query': ^5.62.7 + '@tanstack/react-query': ^5.62.8 next: ^13 || ^14 || ^15 react: ^18 || ^19 - '@tanstack/react-query@5.62.7': - resolution: {integrity: sha512-+xCtP4UAFDTlRTYyEjLx0sRtWyr5GIk7TZjZwBu4YaNahi3Rt2oMyRqfpfVrtwsqY2sayP4iXVCwmC+ZqqFmuw==} + '@tanstack/react-query@5.62.8': + resolution: {integrity: sha512-8TUstKxF/fysHonZsWg/hnlDVgasTdHx6Q+f1/s/oPKJBJbKUWPZEHwLTMOZgrZuroLMiqYKJ9w69Abm8mWP0Q==} peerDependencies: react: ^18 || ^19 @@ -10274,25 +10274,25 @@ snapshots: dependencies: remove-accents: 0.5.0 - '@tanstack/query-core@5.62.7': {} + '@tanstack/query-core@5.62.8': {} '@tanstack/query-devtools@5.61.4': {} - '@tanstack/react-query-devtools@5.62.7(@tanstack/react-query@5.62.7(react@19.0.0))(react@19.0.0)': + '@tanstack/react-query-devtools@5.62.8(@tanstack/react-query@5.62.8(react@19.0.0))(react@19.0.0)': dependencies: '@tanstack/query-devtools': 5.61.4 - '@tanstack/react-query': 5.62.7(react@19.0.0) + '@tanstack/react-query': 5.62.8(react@19.0.0) react: 19.0.0 - '@tanstack/react-query-next-experimental@5.62.7(@tanstack/react-query@5.62.7(react@19.0.0))(next@14.2.20(@babel/core@7.26.0)(react-dom@19.0.0(react@19.0.0))(react@19.0.0)(sass@1.83.0))(react@19.0.0)': + '@tanstack/react-query-next-experimental@5.62.8(@tanstack/react-query@5.62.8(react@19.0.0))(next@14.2.20(@babel/core@7.26.0)(react-dom@19.0.0(react@19.0.0))(react@19.0.0)(sass@1.83.0))(react@19.0.0)': dependencies: - '@tanstack/react-query': 5.62.7(react@19.0.0) + '@tanstack/react-query': 5.62.8(react@19.0.0) next: 14.2.20(@babel/core@7.26.0)(react-dom@19.0.0(react@19.0.0))(react@19.0.0)(sass@1.83.0) react: 19.0.0 - '@tanstack/react-query@5.62.7(react@19.0.0)': + '@tanstack/react-query@5.62.8(react@19.0.0)': dependencies: - '@tanstack/query-core': 5.62.7 + '@tanstack/query-core': 5.62.8 react: 19.0.0 '@tanstack/react-table@8.20.5(react-dom@19.0.0(react@19.0.0))(react@19.0.0)': @@ -10531,7 +10531,7 @@ snapshots: '@trpc/server': 11.0.0-rc.660(typescript@5.7.2) typescript: 5.7.2 - '@trpc/next@11.0.0-rc.660(@tanstack/react-query@5.62.7(react@19.0.0))(@trpc/client@11.0.0-rc.660(@trpc/server@11.0.0-rc.660(typescript@5.7.2))(typescript@5.7.2))(@trpc/react-query@11.0.0-rc.660(@tanstack/react-query@5.62.7(react@19.0.0))(@trpc/client@11.0.0-rc.660(@trpc/server@11.0.0-rc.660(typescript@5.7.2))(typescript@5.7.2))(@trpc/server@11.0.0-rc.660(typescript@5.7.2))(react-dom@19.0.0(react@19.0.0))(react@19.0.0)(typescript@5.7.2))(@trpc/server@11.0.0-rc.660(typescript@5.7.2))(next@14.2.20(@babel/core@7.26.0)(react-dom@19.0.0(react@19.0.0))(react@19.0.0)(sass@1.83.0))(react-dom@19.0.0(react@19.0.0))(react@19.0.0)(typescript@5.7.2)': + '@trpc/next@11.0.0-rc.660(@tanstack/react-query@5.62.8(react@19.0.0))(@trpc/client@11.0.0-rc.660(@trpc/server@11.0.0-rc.660(typescript@5.7.2))(typescript@5.7.2))(@trpc/react-query@11.0.0-rc.660(@tanstack/react-query@5.62.8(react@19.0.0))(@trpc/client@11.0.0-rc.660(@trpc/server@11.0.0-rc.660(typescript@5.7.2))(typescript@5.7.2))(@trpc/server@11.0.0-rc.660(typescript@5.7.2))(react-dom@19.0.0(react@19.0.0))(react@19.0.0)(typescript@5.7.2))(@trpc/server@11.0.0-rc.660(typescript@5.7.2))(next@14.2.20(@babel/core@7.26.0)(react-dom@19.0.0(react@19.0.0))(react@19.0.0)(sass@1.83.0))(react-dom@19.0.0(react@19.0.0))(react@19.0.0)(typescript@5.7.2)': dependencies: '@trpc/client': 11.0.0-rc.660(@trpc/server@11.0.0-rc.660(typescript@5.7.2))(typescript@5.7.2) '@trpc/server': 11.0.0-rc.660(typescript@5.7.2) @@ -10540,12 +10540,12 @@ snapshots: react-dom: 19.0.0(react@19.0.0) typescript: 5.7.2 optionalDependencies: - '@tanstack/react-query': 5.62.7(react@19.0.0) - '@trpc/react-query': 11.0.0-rc.660(@tanstack/react-query@5.62.7(react@19.0.0))(@trpc/client@11.0.0-rc.660(@trpc/server@11.0.0-rc.660(typescript@5.7.2))(typescript@5.7.2))(@trpc/server@11.0.0-rc.660(typescript@5.7.2))(react-dom@19.0.0(react@19.0.0))(react@19.0.0)(typescript@5.7.2) + '@tanstack/react-query': 5.62.8(react@19.0.0) + '@trpc/react-query': 11.0.0-rc.660(@tanstack/react-query@5.62.8(react@19.0.0))(@trpc/client@11.0.0-rc.660(@trpc/server@11.0.0-rc.660(typescript@5.7.2))(typescript@5.7.2))(@trpc/server@11.0.0-rc.660(typescript@5.7.2))(react-dom@19.0.0(react@19.0.0))(react@19.0.0)(typescript@5.7.2) - '@trpc/react-query@11.0.0-rc.660(@tanstack/react-query@5.62.7(react@19.0.0))(@trpc/client@11.0.0-rc.660(@trpc/server@11.0.0-rc.660(typescript@5.7.2))(typescript@5.7.2))(@trpc/server@11.0.0-rc.660(typescript@5.7.2))(react-dom@19.0.0(react@19.0.0))(react@19.0.0)(typescript@5.7.2)': + '@trpc/react-query@11.0.0-rc.660(@tanstack/react-query@5.62.8(react@19.0.0))(@trpc/client@11.0.0-rc.660(@trpc/server@11.0.0-rc.660(typescript@5.7.2))(typescript@5.7.2))(@trpc/server@11.0.0-rc.660(typescript@5.7.2))(react-dom@19.0.0(react@19.0.0))(react@19.0.0)(typescript@5.7.2)': dependencies: - '@tanstack/react-query': 5.62.7(react@19.0.0) + '@tanstack/react-query': 5.62.8(react@19.0.0) '@trpc/client': 11.0.0-rc.660(@trpc/server@11.0.0-rc.660(typescript@5.7.2))(typescript@5.7.2) '@trpc/server': 11.0.0-rc.660(typescript@5.7.2) react: 19.0.0 From c050ec4fe93b3f06be31db1ae732ce2331ce8316 Mon Sep 17 00:00:00 2001 From: Meier Lukas Date: Tue, 17 Dec 2024 19:10:06 +0100 Subject: [PATCH 3/6] docs: update license to apache 2.0 (#1684) * Update LICENSE * docs: add ajnart as copyright holder --- LICENSE | 214 +++++++++++++++++++++++++++++++++++++++++++++++++++----- 1 file changed, 197 insertions(+), 17 deletions(-) diff --git a/LICENSE b/LICENSE index 435503eb6..46fa751ae 100644 --- a/LICENSE +++ b/LICENSE @@ -1,21 +1,201 @@ -MIT License + Apache License + Version 2.0, January 2004 + http://www.apache.org/licenses/ -Copyright (c) 2023 Julius Marminge + TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION -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: + 1. Definitions. -The above copyright notice and this permission notice shall be included in all -copies or substantial portions of the Software. + "License" shall mean the terms and conditions for use, reproduction, + and distribution as defined by Sections 1 through 9 of this document. -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. + "Licensor" shall mean the copyright owner or entity authorized by + the copyright owner that is granting the License. + + "Legal Entity" shall mean the union of the acting entity and all + other entities that control, are controlled by, or are under common + control with that entity. For the purposes of this definition, + "control" means (i) the power, direct or indirect, to cause the + direction or management of such entity, whether by contract or + otherwise, or (ii) ownership of fifty percent (50%) or more of the + outstanding shares, or (iii) beneficial ownership of such entity. + + "You" (or "Your") shall mean an individual or Legal Entity + exercising permissions granted by this License. + + "Source" form shall mean the preferred form for making modifications, + including but not limited to software source code, documentation + source, and configuration files. + + "Object" form shall mean any form resulting from mechanical + transformation or translation of a Source form, including but + not limited to compiled object code, generated documentation, + and conversions to other media types. + + "Work" shall mean the work of authorship, whether in Source or + Object form, made available under the License, as indicated by a + copyright notice that is included in or attached to the work + (an example is provided in the Appendix below). + + "Derivative Works" shall mean any work, whether in Source or Object + form, that is based on (or derived from) the Work and for which the + editorial revisions, annotations, elaborations, or other modifications + represent, as a whole, an original work of authorship. For the purposes + of this License, Derivative Works shall not include works that remain + separable from, or merely link (or bind by name) to the interfaces of, + the Work and Derivative Works thereof. + + "Contribution" shall mean any work of authorship, including + the original version of the Work and any modifications or additions + to that Work or Derivative Works thereof, that is intentionally + submitted to Licensor for inclusion in the Work by the copyright owner + or by an individual or Legal Entity authorized to submit on behalf of + the copyright owner. For the purposes of this definition, "submitted" + means any form of electronic, verbal, or written communication sent + to the Licensor or its representatives, including but not limited to + communication on electronic mailing lists, source code control systems, + and issue tracking systems that are managed by, or on behalf of, the + Licensor for the purpose of discussing and improving the Work, but + excluding communication that is conspicuously marked or otherwise + designated in writing by the copyright owner as "Not a Contribution." + + "Contributor" shall mean Licensor and any individual or Legal Entity + on behalf of whom a Contribution has been received by Licensor and + subsequently incorporated within the Work. + + 2. Grant of Copyright License. Subject to the terms and conditions of + this License, each Contributor hereby grants to You a perpetual, + worldwide, non-exclusive, no-charge, royalty-free, irrevocable + copyright license to reproduce, prepare Derivative Works of, + publicly display, publicly perform, sublicense, and distribute the + Work and such Derivative Works in Source or Object form. + + 3. Grant of Patent License. Subject to the terms and conditions of + this License, each Contributor hereby grants to You a perpetual, + worldwide, non-exclusive, no-charge, royalty-free, irrevocable + (except as stated in this section) patent license to make, have made, + use, offer to sell, sell, import, and otherwise transfer the Work, + where such license applies only to those patent claims licensable + by such Contributor that are necessarily infringed by their + Contribution(s) alone or by combination of their Contribution(s) + with the Work to which such Contribution(s) was submitted. If You + institute patent litigation against any entity (including a + cross-claim or counterclaim in a lawsuit) alleging that the Work + or a Contribution incorporated within the Work constitutes direct + or contributory patent infringement, then any patent licenses + granted to You under this License for that Work shall terminate + as of the date such litigation is filed. + + 4. Redistribution. You may reproduce and distribute copies of the + Work or Derivative Works thereof in any medium, with or without + modifications, and in Source or Object form, provided that You + meet the following conditions: + + (a) You must give any other recipients of the Work or + Derivative Works a copy of this License; and + + (b) You must cause any modified files to carry prominent notices + stating that You changed the files; and + + (c) You must retain, in the Source form of any Derivative Works + that You distribute, all copyright, patent, trademark, and + attribution notices from the Source form of the Work, + excluding those notices that do not pertain to any part of + the Derivative Works; and + + (d) If the Work includes a "NOTICE" text file as part of its + distribution, then any Derivative Works that You distribute must + include a readable copy of the attribution notices contained + within such NOTICE file, excluding those notices that do not + pertain to any part of the Derivative Works, in at least one + of the following places: within a NOTICE text file distributed + as part of the Derivative Works; within the Source form or + documentation, if provided along with the Derivative Works; or, + within a display generated by the Derivative Works, if and + wherever such third-party notices normally appear. The contents + of the NOTICE file are for informational purposes only and + do not modify the License. You may add Your own attribution + notices within Derivative Works that You distribute, alongside + or as an addendum to the NOTICE text from the Work, provided + that such additional attribution notices cannot be construed + as modifying the License. + + You may add Your own copyright statement to Your modifications and + may provide additional or different license terms and conditions + for use, reproduction, or distribution of Your modifications, or + for any such Derivative Works as a whole, provided Your use, + reproduction, and distribution of the Work otherwise complies with + the conditions stated in this License. + + 5. Submission of Contributions. Unless You explicitly state otherwise, + any Contribution intentionally submitted for inclusion in the Work + by You to the Licensor shall be under the terms and conditions of + this License, without any additional terms or conditions. + Notwithstanding the above, nothing herein shall supersede or modify + the terms of any separate license agreement you may have executed + with Licensor regarding such Contributions. + + 6. Trademarks. This License does not grant permission to use the trade + names, trademarks, service marks, or product names of the Licensor, + except as required for reasonable and customary use in describing the + origin of the Work and reproducing the content of the NOTICE file. + + 7. Disclaimer of Warranty. Unless required by applicable law or + agreed to in writing, Licensor provides the Work (and each + Contributor provides its Contributions) on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or + implied, including, without limitation, any warranties or conditions + of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A + PARTICULAR PURPOSE. You are solely responsible for determining the + appropriateness of using or redistributing the Work and assume any + risks associated with Your exercise of permissions under this License. + + 8. Limitation of Liability. In no event and under no legal theory, + whether in tort (including negligence), contract, or otherwise, + unless required by applicable law (such as deliberate and grossly + negligent acts) or agreed to in writing, shall any Contributor be + liable to You for damages, including any direct, indirect, special, + incidental, or consequential damages of any character arising as a + result of this License or out of the use or inability to use the + Work (including but not limited to damages for loss of goodwill, + work stoppage, computer failure or malfunction, or any and all + other commercial damages or losses), even if such Contributor + has been advised of the possibility of such damages. + + 9. Accepting Warranty or Additional Liability. While redistributing + the Work or Derivative Works thereof, You may choose to offer, + and charge a fee for, acceptance of support, warranty, indemnity, + or other liability obligations and/or rights consistent with this + License. However, in accepting such obligations, You may act only + on Your own behalf and on Your sole responsibility, not on behalf + of any other Contributor, and only if You agree to indemnify, + defend, and hold each Contributor harmless for any liability + incurred by, or claims asserted against, such Contributor by reason + of your accepting any such warranty or additional liability. + + END OF TERMS AND CONDITIONS + + APPENDIX: How to apply the Apache License to your work. + + To apply the Apache License to your work, attach the following + boilerplate notice, with the fields enclosed by brackets "[]" + replaced with your own identifying information. (Don't include + the brackets!) The text should be enclosed in the appropriate + comment syntax for the file format. We also recommend that a + file or class name and description of purpose be included on the + same "printed page" as the copyright notice for easier + identification within third-party archives. + + Copyright (c) 2024 Meier Lukas, Thomas Camlong and Homarr Labs + + Licensed under the Apache License, Version 2.0 (the "License"); + you may not use this file except in compliance with the License. + You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + + Unless required by applicable law or agreed to in writing, software + distributed under the License is distributed on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + See the License for the specific language governing permissions and + limitations under the License. From 15d47d0585be3706367688265619cef65ccc9375 Mon Sep 17 00:00:00 2001 From: Meier Lukas Date: Tue, 17 Dec 2024 19:10:19 +0100 Subject: [PATCH 4/6] ci: generate auth secret in production (#1681) * ci: generate auth secret in production * refactor: remove no longer needed auth-secret from e2e test * fix: remove static auth secret --- Dockerfile | 2 +- development/docker-run.cmd | 2 +- e2e/shared/create-homarr-container.ts | 3 --- packages/auth/configuration.ts | 1 - ...ncryptionKey.js => generateRandomSecureKey.js} | 6 +++--- scripts/run.sh | 15 ++++++++++++++- 6 files changed, 19 insertions(+), 10 deletions(-) rename scripts/{generateEncryptionKey.js => generateRandomSecureKey.js} (65%) diff --git a/Dockerfile b/Dockerfile index 443a7ce08..6b0ea4e63 100644 --- a/Dockerfile +++ b/Dockerfile @@ -67,7 +67,7 @@ COPY --from=builder --chown=nextjs:nodejs /app/apps/nextjs/.next/standalone ./ COPY --from=builder --chown=nextjs:nodejs /app/apps/nextjs/.next/static ./apps/nextjs/.next/static COPY --from=builder --chown=nextjs:nodejs /app/apps/nextjs/public ./apps/nextjs/public COPY --chown=nextjs:nodejs scripts/run.sh ./run.sh -COPY --chown=nextjs:nodejs scripts/generateEncryptionKey.js ./generateEncryptionKey.js +COPY --chown=nextjs:nodejs scripts/generateRandomSecureKey.js ./generateRandomSecureKey.js COPY --chown=nextjs:nodejs packages/redis/redis.conf /app/redis.conf COPY --chown=nextjs:nodejs nginx.conf /etc/nginx/templates/nginx.conf diff --git a/development/docker-run.cmd b/development/docker-run.cmd index 080de6c41..1f608898f 100644 --- a/development/docker-run.cmd +++ b/development/docker-run.cmd @@ -1 +1 @@ -docker run -p 7575:7575 -e AUTH_SECRET='secrets' homarr:latest \ No newline at end of file +docker run -p 7575:7575 homarr:latest \ No newline at end of file diff --git a/e2e/shared/create-homarr-container.ts b/e2e/shared/create-homarr-container.ts index 84cbcc711..e6f2281ae 100644 --- a/e2e/shared/create-homarr-container.ts +++ b/e2e/shared/create-homarr-container.ts @@ -6,9 +6,6 @@ export const createHomarrContainer = () => { } return new GenericContainer("homarr-e2e") - .withEnvironment({ - AUTH_SECRET: "secret", - }) .withExposedPorts(7575) .withWaitStrategy(Wait.forHttp("/api/health/ready", 7575)); }; diff --git a/packages/auth/configuration.ts b/packages/auth/configuration.ts index 4c00a0b20..f13765536 100644 --- a/packages/auth/configuration.ts +++ b/packages/auth/configuration.ts @@ -89,7 +89,6 @@ export const createConfiguration = ( signIn: createSignInEventHandler(db), }, redirectProxyUrl: createRedirectUri(headers, "/api/auth"), - secret: "secret-is-not-defined-yet", // TODO: This should be added later session: { strategy: "database", maxAge: env.AUTH_SESSION_EXPIRY_TIME, diff --git a/scripts/generateEncryptionKey.js b/scripts/generateRandomSecureKey.js similarity index 65% rename from scripts/generateEncryptionKey.js rename to scripts/generateRandomSecureKey.js index 1fc7fdbfe..4813ae6a5 100644 --- a/scripts/generateEncryptionKey.js +++ b/scripts/generateRandomSecureKey.js @@ -1,6 +1,6 @@ -// This script generates a random encryption key -// This key is used to encrypt and decrypt the integration secrets -// In production it is generated in run.sh and stored in the environment variable ENCRYPTION_KEY +// This script generates a random secure key with a length of 64 characters +// This key is used to encrypt and decrypt the integration secrets for auth.js +// In production it is generated in run.sh and stored in the environment variables ENCRYPTION_KEY / AUTH_SECRET // during runtime, it's also stored in a file. const crypto = require("crypto"); diff --git a/scripts/run.sh b/scripts/run.sh index bc4d9c9b1..d22536ff2 100644 --- a/scripts/run.sh +++ b/scripts/run.sh @@ -18,11 +18,24 @@ if [ -r /secrets/encryptionKey ]; then encryptionKey=$(cat /secrets/encryptionKey) else echo "Generating encryption key" - encryptionKey=$(node ./generateEncryptionKey.js) + encryptionKey=$(node ./generateRandomSecureKey.js) echo $encryptionKey > /secrets/encryptionKey fi export ENCRYPTION_KEY=$encryptionKey +# Generates an auth secret if it doesn't exist and saves it to /secrets/authSecret +# Also sets the AUTH_SECRET environment variable required for auth.js +authSecret="" +if [ -r /secrets/authSecret ]; then + echo "Auth secret already exists" + authSecret=$(cat /secrets/authSecret) +else + echo "Generating auth secret" + authSecret=$(node ./generateRandomSecureKey.js) + echo $authSecret > /secrets/authSecret +fi +export AUTH_SECRET=$authSecret + # Start nginx proxy # 1. Replace the HOSTNAME in the nginx template file # 2. Create the nginx configuration file from the template From 692ef7f6dce5b8a687cce40504a01fc31c79bbf6 Mon Sep 17 00:00:00 2001 From: Manuel <30572287+manuel-rw@users.noreply.github.com> Date: Tue, 17 Dec 2024 19:31:11 +0100 Subject: [PATCH 5/6] docs: add readme (#1683) --- README.md | 7 -- docs/README.md | 130 ++++++++++++++++++++++ docs/banner.png | Bin 0 -> 49700 bytes docs/installation-button.png | Bin 0 -> 7653 bytes docs/section-contribute.png | Bin 0 -> 28640 bytes docs/section-features.png | Bin 0 -> 19037 bytes docs/section-installation.png | Bin 0 -> 17426 bytes docs/section-preview.png | Bin 0 -> 24447 bytes docs/section-widgets-and-integrations.png | Bin 0 -> 33553 bytes 9 files changed, 130 insertions(+), 7 deletions(-) delete mode 100644 README.md create mode 100644 docs/README.md create mode 100644 docs/banner.png create mode 100644 docs/installation-button.png create mode 100644 docs/section-contribute.png create mode 100644 docs/section-features.png create mode 100644 docs/section-installation.png create mode 100644 docs/section-preview.png create mode 100644 docs/section-widgets-and-integrations.png diff --git a/README.md b/README.md deleted file mode 100644 index 3a88af411..000000000 --- a/README.md +++ /dev/null @@ -1,7 +0,0 @@ -# THIS PROJECT IS STILL UNSTABLE AND WE DO NOT PROVIDE ANY SUPPORT FOR ISSUES THAT OCCURE. - -## PLEASE DO NOT OPEN ANY ISSUES OR DISCUSSIONS - -### EVERYTHING IS SUBJECT TO CHANGE - -Please use [this](https://github.com/ajnart/homarr) version of Homarr when you want to use it diff --git a/docs/README.md b/docs/README.md new file mode 100644 index 000000000..658c070ed --- /dev/null +++ b/docs/README.md @@ -0,0 +1,130 @@ + +![Banner](./banner.png) + + +

+ +Latest Release (Semver) + +CI Status + + + + + + +

+ + +

+ + Demo ✨ + + • + + Install 💻 + • + + Translations 🈺 + • + + Discord 👋 + +

+ +> [!WARNING] +> This is a beta version of Homarr. You can download the old but stable version at https://github.com/ajnart/homarr/. Running this version is at your own risk. + +Simplify the management of your server with Homarr - a sleek, modern dashboard that puts all of your apps and services at your fingertips. With Homarr, you can access and control everything in one location. Homarr seamlessly integrates with the apps you've added, providing you with valuable information and giving you complete control. Installation is a breeze, and Homarr supports a wide range of deployment methods. + +
+
+ +![Features Section](./section-features.png) + +- 🖌️ Highly customizable with an extensive drag and drop grid system +- ✨ Integrates seamlessly with your favorite self-hosted applications +- 📌 Easy and fast app management - no YAML involved +- 👤 Detailed and easy to use user management with permissions and groups +- 👥 Support for single sign on via OIDC / LDAP +- 🙊 Safe encryption using BCrypt and AES-256-CBC for your valuable data +- 🕔 Realtime widget updates using WebSockets, tRPC and Redis +- 🔍 Search through thousands of data points in supported integrations or your data in Homarr using the fast built-in search +- 🦞 Icon picker with over 11K icons +- 🚀 Compatible with any major consumer hardware (x86, Raspberry Pi, old laptops, ...) and most OS (Windows, Linux, TrueNAS, Unraid) +- 🖥️ Extensive Kubernetes support with Helm for efficient scaling & high reliability + +
+
+ +![Widgets & Integrations Section](./section-widgets-and-integrations.png) + +Homarr has a [built-in collection of widgets and integrations](https://homarr.dev/docs/category/integrations), that connect to your applications and enable you to control them directly from the dashboard. + +- 📥 **Torrent clients** + - [Deluge](https://homarr.dev/docs/integrations/torrent#deluge) + - [Transmission](https://homarr.dev/docs/integrations/torrent#transmission) + - [qBittorent](https://homarr.dev/docs/integrations/torrent#qbittorrent-integration) +- 📥 **Usenet clients** + - [SABnzbd](https://homarr.dev/docs/integrations/usenet#sabnzbd) + - [NZBGet](https://homarr.dev/docs/integrations/usenet#nzbget) +- 📺 **Media servers** + - [Plex](https://homarr.dev/docs/integrations/media-server/#plex) + - [Jellyfin](https://homarr.dev/docs/integrations/media-server#jellyfin-and-emby) +- 📚 **Media collection managers** + - [Sonarr](https://homarr.dev/docs/integrations/servarr#sonarr) + - [Radarr](https://homarr.dev/docs/integrations/servarr#radarr) + - [Lidarr](https://homarr.dev/docs/integrations/servarr#lidarr) + - [Readarr](https://homarr.dev/docs/integrations/servarr#readarr) +- 🎞️ **Media request managers** + - [Overseerr](https://homarr.dev/docs/integrations/media-requester) + - [Jellyseerr](https://homarr.dev/docs/integrations/media-requester) +- 🚫 **DNS ad-blockers** + - [Pihole](https://homarr.dev/docs/integrations/dns#pihole) + - [AdGuard Home](https://homarr.dev/docs/integrations/dns#adguard-home) +- 🖥️ **Monitoring** + - [Dash.](https://homarr.dev/docs/integrations/hardware) + - [OpenMediaVault.](https://homarr.dev/docs/integrations/hardware/#openmediavault) + - [Proxmox.](https://homarr.dev/docs/integrations/hardware/#proxmox) +- 🐳 **Container management**: + - [Docker](https://homarr.dev/docs/integrations/containers) + +
+
+ +![Installation Section](./section-installation.png) + +Since we are updating Homarr very frequently, we recommend reading our official installation guides: + +

+ + Please click here for official installation instructions + +

+ +
+
+ +![Contribute Section](./section-contribute.png) + +
+ +Homarr is a free to use open source project that is maintained by volunteers and developers from all over the world. We publish under the ``Apache License 2.0`` license which allows commercial usage. We invest multiple hours daily in to providing support, developing Homarr, integrating to third party software and more. We also pay for licensing and server hosting fees. +Please consider to help us cover these costs to enable the future development of Homarr. Thank you! + +

+ + Please click here to sponsor us at OpenCollective + +

+ +You can also support us by helping with [translating the entire project](https://homarr.dev/docs/community/translations) to as many languages as possible or contributing directly to the code or documentation. Please read our [Contribution Guidelines](/CONTRIBUTING.md). All contributions, regardless of their size or scope, are welcome and highly appreciated! Thank you ❤️ + +## Sponsors +Thanks to your generous sponsors we can continue to build Homarr. Check them out for high quality and easy to use development tools. +Feel free to contact us at homarr-labs@proton.me if you wish to become a sponsor. + +[![Covered by Argos Visual Testing](https://argos-ci.com/badge-large.svg)](https://argos-ci.com?utm_source=%5Bhomarr%5D&utm_campaign=oss) diff --git a/docs/banner.png b/docs/banner.png new file mode 100644 index 0000000000000000000000000000000000000000..823bb50b1c3f0eb1c0fb2d8e84fb32e92846a8f1 GIT binary patch literal 49700 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 Sej%+Nh{cZmI;q=i&;1XAYDMb+ literal 0 HcmV?d00001 diff --git a/docs/installation-button.png b/docs/installation-button.png new file mode 100644 index 0000000000000000000000000000000000000000..991cb9b27fe447b2d782a407941ca79bcbbe6bb4 GIT binary patch literal 7653 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 BSNZ?| literal 0 HcmV?d00001 diff --git a/docs/section-features.png b/docs/section-features.png new file mode 100644 index 0000000000000000000000000000000000000000..b1854bf3a11e5981e25bda7d881ebabfb2034967 GIT binary patch literal 19037 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 literal 0 HcmV?d00001 diff --git a/docs/section-installation.png b/docs/section-installation.png new file mode 100644 index 0000000000000000000000000000000000000000..92fa4474f832986b1877dd205a93207de40074b5 GIT binary patch literal 17426 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 literal 0 HcmV?d00001 diff --git a/docs/section-preview.png b/docs/section-preview.png new file mode 100644 index 0000000000000000000000000000000000000000..6e43e043d5b16558fee9b34a39d530080a3d85a9 GIT binary patch literal 24447 zcmeFZhd_{nc5t${cxq!#LUQe+??=gdbu#n~#_GkFFOZ49zG;^J z-1L@4y;`QuQS#KBj?5QLsm2{CEDDZ}=MBgy{W!H44B}i}9WETLr8=!m!+w|M`U*lJ z>FztS#sd#`oZ}Yd>3Q=nF%0MYGj-+osV@i&X!0$eJY;y>gyQpAfejBUzEh|bS1KlB z++~TDyWK7%o^v3nvZu;94imzD@ zo#D^CmPA2*Mo;LW(v_#u^W#h|`zM^5COMvce0=Ca`UiUHZKnODzE)M`a)sJ!9XqB& zOm#AkXrA=g?CtfJTw?bpT>RFhhriG8>EKFLU)K+L8H})l<4D(}8-TXQ=X5?Lp66BlzcX7{HqPnhKulpkn6qog4rVJ18fGK-gMPWQ$%naYC1wMTX>K{PWj|$?4~FZujchR@p7$v=D}NLqmQ;UNswoee+eN z_`$)w^wP-k$jG}HdfIo69X&(C%zWDI$Jx*ilF_ZLGh6a>+do)hadg#)$4OdzyI&mY4+p(hyHuXta6&<$bYY7;{NY}|1HMkHrl`e}NaZR+_hOKd&^(lVA)PwktK@j*3%Bpe1cs;&I$Hc~JYHPcH zQQh~GenI|U9L^j&w0wGc#Unf>CUd+l(7HdLGxf`tCaiL3O9XRl8(VA}M^MA%u%;_@ zykZfH+uqElKcLWG`ueDQ(IV+zzQ{#HL}aF?Ke&7MRc2NenI_Vs%4lkOnnOfHJ32c0 zzKV*LX|lXZnz~k&rf{q>TUdr-*?Xyzq%T(Y4yuSW4Gj&XBfKs!vkNpdS?THb>H?{>_4M8vaF=FlS(nyY+@z>`ps1KN zKR@rXzwO9y(?Q02bD?u(qVaK|YFBr+=EH}{A6ezEiHj>LC^R{h#i=cZJmO728#C&>nC=~L^#^`@&eG`F^fw@iuI+m;p=XH-|K z$iJuW+*~vttn%LSM?H5Hi>DK?cz0j1@tSmvOjA=+;ed^yh1gc$d;iMJ`S8spF7)Q& zkn7m@L!`v&`{(Pj90~o*{rmR?&6}?T)9a>8PEO`q6q8n*xZ7sZ^O!%nXLvaK9Q%9g z#`p1q<*r#ONGV^Vy*liM)$jT@bkfxtbpcb&i*Bzj?8;@S!V(x7=4|4m6GNnSbt>Ez zO;L~jeGbXXV3M0E5#ixa2ES%-a5G*FVIPmH#aSLv4jSML8{mWu4l46ydQ>#vV<9>L zOC!U}Ji&yJs_-#>-XX)Bc#d7gYN*6^u+r1HhUeA7hL`L3E1LNqwrzd4~)fZ-RyO(c z^p;M}&O+9GoWTs@T5sMY7`?!}_wTYQ_+{t*YtiinAD`NZ6DOQ1Mx4ar3w5{(^#-@d zN_03ae_)6sWoAaA(x#^^goK4NtE-KIgM+Q?o@#x^Nvk95$1RypcXWQf;6*stDz+Ue zN#{AW=pyD?du&3`c2H?*>Qq$kp!c%(7u9U7vN&!}2}bz$>Xj?Mrkt9_9e$baU`YCH zgi8af1Crn|HJH4?LF@--X~K1mi@07=NL3hoW=2M5 zhI*RI?)uZ>l9FprXsbw(TwGinJeaIfjGy+@)Rfv>81bAg4VTf0ySI`rKKh}$dc=nh%zqY zaxK~5H^&KoT=ai9$iMa($xX`h)YMj^m1P{)FLK4U^(~4ru%xw2X=!Oi2AsOYmWRF( zSl4NfzCc0R3-f1{f1jS5e7mhpd6n$2Bq=h$1TupjuBucwR>YoCeBDJXK1RwnQ);VB z_r9tsPKcsZFX#Ry8{`_3=3l=)G){bMFr6!vTG{a-P9J};r)j93BaF;LJ5=Vh<@xS4 zZ}jP7zgnUgNyYzLV6VF*62IEwMAd1GeG2&b%c;b~e>BwBUx5{R3ZHxb-o4}Ak@h$D z{c1RF+|bn3&FD^3%__;&@~f$d>gY}@EHw0*iqLjhooxCr2rJhYp>31_8DrxnR^$n7 z;m~4p>n{yIziL=bZ;JLkMOoPwDhU#v7LhKBibaQOAC>x=@<(fEYNonl4D(K163!R- zUr2kIDJUyfA?;{=Aazr7SKf{?aC#FORwWrw^CsaA9K-alUo~`fb>S&9Li-U{iUv4K zhq&MnrgdLeeJ;-yJ!!pm{WOJJ8DmgGa(4EnLrF=AR+>uuyt+87bdM|AFs-YrV1%^% zR^5jNE6w(N`ru0Q&ZEL_U*+tBX-h7^7zA+@&W^o;0KFs(nFLk>fty8eP8Hd;?DA=u~l{ z$**yTCmJi)h%0&h`t>7>`+g;=P;e>gK45U#P>5kG594J@i+rGnK~0GW3(JADm|0R1 z8F=`=wY1D9TV@W8jZH-%@Ol?6TyXc~f?yi3p%XPtdHeRQDaW>CtO+dy`P^9pVIiTp z{({F=Ha4>*2I}fzeL3Fx_LVDgX%obV<}NeK4Gj$~UkvLB*NBLW9RA zzgl`#diUz-+-Qzwme$I|rN3k53nuaS@C3P2p~EUq?RtX$MF0zgAixJYVH+K#HitzO zef?OKxSO3%=PbjTT&6u-T_Y$yWAkn7?D}HutCNbY(F&m!Z853G$fUnKX;r2we7l-9kOnqp3q$Ei+`+?kEk zx9e0E8A|h4vH7a=8o*OVsOEgLcG_Fe?ZNI5ttOEhirt2C2Yo8 z-P+nZ3V&ZgLCwml5by`i4fBXZ2FHllcWjFl;Yndq)6LORju+FU4tjO^Z`&)QWO8Db z)_tQ_8=D+t(PB~LD#j>CVQy~m6c7ibRNC+@H>gYio7T6zl$C?uYtd^i3$Qr4w^Jg> z$;rtYlx9c2LbWL@Tva;Gso+;*EFZ$CX}dVbJwtZ*knQkxf>xeUn`}4AZ?_vc|MQYP z{WA9W(Zg2O)?qMw)C`O{3t*({@A?xAqE2_bx0ZS_1ibqu$FcTteavoT^=5J2E5p&5 zwYm4=OOHgK{2Rn|_i5^L=epCLz~Dv#YN9VjzYv4OS~`@oySuBxGBfb-;lnEm7aBRv z&yL4YuAIl;UsRO#t}+5ZjMP0jWL3<;&MpsCD>v6U-LgPO&~^U2rk0k~!S05Hgsgvq zDX~6%ZS}OX%Vksgns#;=69E|1*;@H@9yis^%7C)0QcSzy)_`nq{&(QU*VSM?u3 zU>Xq3{aU#$;8b^suy>R|~{oU=M+KCkx&yYp83MVJ0@DF2Z%L3k4#N$;AT{`b_aB%!S^dowO->T;t zmrb~UGuyc$wLMr|_ zi|x;M7u7Nv#~o$|t@Bdjo{z(yhQJ`Fr*Q!`g$ZbIfa!^BCl^8wcz~ZJ6iZ5CT z0Jz4((9-T~bfU>MNlDqy@*zv-Lw}yD7|E?qsaI))R6VrVmv2&MR-#j0sbyf0qFZFK z!ki=zjfeUdrA~Xqp1vf0d!m)D@k4JxuZ$qYCE<6J$Nt37>2t^ZA1lep1z5CxVgqb5 zRs7@m?Ndxr61huTMc$t_>mf#<=%~o=l`#}0DJm*X_?2X_*LIsr&;}$yF*HxHbP>ha zm0Ayez24l`Huda>D6*!^dB&>Y?SQBNB2w3+iL7j6K zqZXt{O-af8_U-0Uq-f+Ip?lw;MdnffOImkEYpYVU5}R(T1++i%uA5rfg?c%XOI*Xc5*5_doC>e zTdT?G0s>|zwJj_xhDS@`SOGj)iPp^?q0}kTg*rti>E)skwe-#vx<$LviWbK@-tZ3} z5_`gPi-fC2&6JT+!DQqt0986!LnM+1iY&V?zV^PMovXoo`t`Sjw{K6{j#fthKhM1b z5bpkcId`$X0@UK`GpxUz=4L3_!W7&B58_&6-0vwUTs*5NjfiZSns=m6Nlk4UpRFXM zn9#z>>YMFska%=l0ak<2bMg#i%7}IugP|(#(os0wudxtZr{YiiT~!NM)z=DPY=DB? z{G658refUudkO1Y*?wcD|N4+aA~w2Ssa;Pxib5loNdLQ#q8?fWQ&j9uSNkm1wnRY} z04;C;6_eDJ-R~Af8&4yP0P=Ou(Z^6_4Gd$e*xA|LqmMx`6SUI!2(bOF*D-M}iuh z+DZD&_^-3DnA~f}FLn%7Hwwq*45b!?g{cdg{J6;|_|km7Cu6tWy;@eDIk#$eK5MsG zyE=JssC4V8^lnLsaMjAsOL||Qe1t`wmHGQPzE>nSNzc6PtFp8PK|5oFO?} ztixHAFySH=xUhhs)XFMGCrVtuuF!{iS#MFKd-v|=03QsCPwA*v7Mn`kJ$RZerrHpI zVSM$$qCGaJbhHcl{+|ARXcH6R!M(k`PjRDFyF(cKmsq=U1xQRGdU|@ZH~$?(<9!;6 z?EQV8sYw^31n2|qt15=d#g$3vK*Ne*5 zidpX&M3WA@spcN-m}n-XKXg_vdWY!2DX(ydNGra&dyIp#S=}i{By-&ArWd(zj#icd zw|2kl-oc@GF*VmO((f50lXeG5FY=p(Dx7#@XFg+=nSaxmRsO;?R&ix5>jgPQ_FG2@9*dpn!N!u%^FyDrnlU(JuU+( zvGv+?TczjUS&-E85~uOtLC5tc5VU6v>>xb_7(|)Sih1sb_vMXbmm2Bj#WO8xxta&- z=^p?;H2?b4DFrt5z3K|P5dAvxz^A)+X{<&gXrBIy6n9z4Bw}vqySwJsG+@)(e35fV6Ats&@xzIU9&Gmh@N`hW)app zy<~Y#q))^O&F=kmZDK_4pcNxzJ*vTV&}^!l;CZXH)n6!D30MvmuI}OCo@Dn?A63M` z1fB0U&)68c7!;>~Eq}CGfg6S?r%h@R<9u(=jj0EtU6nze7J}}|^D}bhK8Q0|sx1i2 zZL?5^o+U;CJ3fZFL#744 zup67AA4W^}{P9=l=?#2jJc}lG(W(v<9 zc7>9;v>ttN3n;>Cv=p0O2hU_=He6lf-|Od4Lt}fV@jb)Dc+mI#oi%7&w;@ND+Qmyj zocdMuiC}!xDFbEI(^P`*`$BzzKY2;m<`MJ1(>?vU)ur}(Q(Ifah#k(Q)wG!7>eW=$ zDSdstjRhvH`MoWPL}h!#71k$rzJ}yAnT0}!sqC7AU(T}J$TKFmNBHi~`EP~wS}k_3 zq5@22=E8sr$G?N*dv`UF?17w|URtUyz{sP4>fBM- zICK3N{f&D2gigXfTEOb*W|Qd~qeu*&y4!@l{yIYCKuLOghme&~#7+M}il0K(t>PfA z){U38NAZR+8Zk`xq@tzKL_dY+)m0kYXfit39z|k}@dwD_u^7eMdZD{MThS1_ZC2{~ z`a{v?iOOv1NXtmp>S3sYUW>)(@c4KJN5iXEudaGkW#;4rNAI;j{}WZSZ%%CY%gV|i ze~1;?_$Vp{0R>Hj_7PE0)>F+9dNqE&HO67xb3Ms-g9JTS&49YO4p9h5n9%=uh#Sa{ zN4(d7c7x1KWcPq<1_}#usXr0pY8(4T)ROFD|NF%kZtz%oK@h2{GQ3pwlRI5_?;G{Rce2eH%Qk3p}`b#DaQ`^bi|t1hiL3$U=xutCC_8ISXMG-4mytup7NV)6o z1QX$x^Z({A#X`c!49z8@s%g{&JR#oVnET9>W*(L*MCx;2Ux^>`l~uu~V#`K9$^9^6 z>`cgk&Oll8OfhozEQvkAAq~HVC)iOT+72o*%LZ)vn%=7KhU_t^YqVpWdjBm+~!ND#vmw#|kUkxvy_3tKPfU(UYMLysE|sa9dtbx7Pv2 z-Y27Ce3w27Wa#`{8uI=2no~<87qOk$HLo=C+nL&3v`1WWl#~oc7I7I@8-%ebzfF&y zN$^&Y-t7!&A6k>>|7j2i15qb32&|bCipIO4!uF%|5!jt+k(!J=!~vEi!gDq$aD5L$ zkm6Y6G5GcXsPiXxT=$m)rF&MVT6RMJ$hb1>3x_0RDvj(*4~>*XB1VgCL;SXu`GxvK zkfm2&b5R#b_2(|sxs`I-I{b!&hgu8VRw0i8~39^pdq@hR%}`$7xhDC6 zuYRYuN6eDxKER-9Uk|9C4!|^1CJ4XwX1K_1LA8F zfhSLY#C#1Pk_2wY(pYA+?Hsfm|9Am9zqm`?tU1zSvm``fRJ4D=)@SX&xjlyRl?g4B z`;$ix!}pPd#|57@+OsZgY(?1rT%aw|%Q5u3@~CuZSBO`}W~kiNT4VmrPtM=fV&0Y1 z=g-eJu_Jqcv|-(@B$t~iuik01p9kWt2(ZYxUKG;VvCN0cVKg`$us z4(|6h7e2lqqmtW@=lYX$UNas2ex%;c-8EVn#2SDi?kxdS#hX*^pG#))OlbL|m7AIP zl+-PhJC1e#9Qg)neQ_?_3Dx{!nL*6&76G+1IOH@MMto;%9681e8RVJ9SVriN|qo{Lakh zho~|wj@Mt_mkimZKS zlq5|Aug_?ur&^6j9{SSC9;X5ma6|?Yr7Qf?Vhf{H;>oL^f~l1u8-i$Bup7{GK$500 zbWzjDW$E%BD05~vw)wLlv((-sRHs2MFsIIIvRQI`)6f^GmE*T*-isENGoKDIp}oKE zwLX=@4izDTS(1y>F$f(v|J)HF-}J#EKb;DQM$c7UMvws6{NYHD}TymrIi(lO|+ zRK?HyKaD)6B5n~{e|CSuF5~xb*ybB~6nk_)k0ke%j_ZAMNE-Fs8hJhFE*1~H*W2{> z8(8#O!yjJL-;VEyhrdf{PZ4ppt;0pm$Wdd0TF(!aqTXyC#3HHh6roJ5j@&7H%<)E3 zYES+9)0X;25Ygf$bg=b`3P zd~Up&C_Q47J7T`~xrDyNY_`jKI^Ase-p;`@fdiAHr;Z&ybT#eDe7n7$ZjhZG^BiKY z&PI5yd(petTYe{z)}6ukZBon3+FgUjonb`JoXb41^fy}~&l{2W04ACz#tv|ft<`zX zGwr?hervHGnkCj+1)Vhmeo*^{g|e z4G5r_zQ!e)+9=8VqBfDcdcnE;ce$civ9)lt>%uR`2;87_qHm!smJ+JhU9R(m1KD&! zx%a*>{^)$v0rXiH9F@-3YMz$6Ighp0*_p!m9`Iee^O!IS64aVom2fOqrU0|-$Ptg- z^|{?9Rlmz2jpx>Ii&Ig?xj?TC`AQ+sxrQ7(A^VLty1ys~4N5A-2wwkf?s#<$ehcGQ z)Dwx2GD@W1?$bMqa^>{clg}ky9Hcr%cupPCZk8sQx&p*`0|#AAfxN$Y9lDt)LP>a^&3~7eBxydyLZ= z{kCq|T)f30&_dqUHIima$I!*PR{l;o-yk!Lq3#$za-mDqLN}I+IyhEB&Mj?mfl{;K z<2ftaO+KA7-T$1wsaSnIJyKhymxYrnpF^ZFpFe+o%N5~PVTjpjci;8FcdJS>tb}NT zWWh>VCwAwteJ_>tzC*`*R1)v>m8Ss0&n(I(#K&`G_0qZRsC|~Z>x22Yzsw>oE}k55 z3j7r7^I3VTssBbBVC=)tY+KpBG5Yp|Kic&PMs0C>yW4q*4C^px?%prn<`Kct8_fNUJT#5Xg6avHg*K~_U* z?NB41m4;h8)u$r(*o#s1A!bziz(Z_)+WSpYLmP3iZ*FcbM#SDo$2{-b@3*i0-WAzn zq^djq1X#xn&=M01k`xXhnBNNcr+x{r$nn`t-DK_^cCO0d%2_SmPC>T>OSEez34;l`h@`#r}wDq z>WV(uOXMjsj8{pstJ>)EdsBu*FtH&xC#!3ikjt!|TRhe`^E!+;>JC(@EvG{K7e5Z!%1E9;CpJZ5HGeRlqmt=JdUO z-VnrHe(m?(D4ecD`Y2gjs2~-%>MU$-1^2?{+n}I24iRD{-f;dVoq3VZ^v<2dYJh$| z8GqD{MD11*#-qt)Ju3tIc>jch1C9eU;lQ4OQ<_uZA4>^Wp-$^y1=b(G9Xr#bgK^D! zq%I*vVNpaG$<(P@v&KZ^bF8e0y0RUPD(kMTt?llRu~By{PyFLZ-qSCLz`&V%XH@%z zsLxIG*^aw+@0L%;SSR<55<8)*ijlKWALfK#houY->Jc@F@`?B2UtQ)N+VGH1)+Y=G{$6fUhon+fN_Sebcv>O)Z>Btnnd zCqL#@Z4RdUAwUiFT?sPoAtDc{C=m8fJk3}@nG%fuB!G1=zdf+DGXAmseUw!!e@eQ{%BhUy(ib4aIftp@Dob>+7!PBMAYHkR2fU}ln`|!cHzcl(;QX}F#t7e@ z`JrlGZ>8ZV4322>B8t8_dd2sF&X~dfz}B_aKjD<+RDkXkbkEJA{1yx(Ga{)9w8!Q0 z_buEN*{UYPh2||T(D^pol|ugvO-&v5-YXuTThu{Ulf4hdUQm%v35aPl#`Q2t1zsWn zEymEbS5vRr#}nB?EV1)A%-5&gx5W@Z$DV=pU6Kwq;r^V@kp(WSW#Ne89_7Q z*g!MT6wRzKM+P7uj+fw$*x(y6&uW=L-69S#-hK39ujS6p43ep157;7H4WZhuddGrG zx9|?Jb|8NMFE6-c8!`x?Es#BBAZ-nm{>(8)hU$$R`;DDZuZMbigJ}Z+&|aa_kbZP( z`oIBkz{+PWOg4qFF69AJLRCKFaxFwuL9fEi_KvM`+|2^ij97eo{?@4_<#g{X`SP9} zqV8Kg_Gg*SiG#Th}ivFq{A1TS*+0W%W)3F=l zflP8$cw&h#kO$vR_1*|hZZRgoZ+8yFSsP&@>**^d(&c-%&7z2!$B15Qz~RM2QR6h^ z7SfS5v7W|Zpf+;BB$YozC+cK|L=gpxDW|ezJmZ%yU#y4-L8=D2tA!G<7LhF~x&Iku zoH2}&_c+mj1f(5N{dC1uZOs=nGIm38%Z|9AZME{d0R;IsUa>c{vT5`8P8~hG+rZ;@ zrpqWcX&Fp0fgeKGp;-kl)nzO61~Cu*`p9~ww-bHUim=@%ompHglw9&d*VLW3%ZqO~ zPPI=VFFG%7;xJ5|Gmnh#?ve3XR_w2~?D^QiSO4N2G4a2>yDXVE$&v3Q+bbc6Y$o`u z7t>y_c3t-4*2Y8NyELWfi`% zBazpaYnWAo-^hcpkTLmy^AD3}`|hFu+i$Vm8!v~!1$k$RfiiF!g~X&eM{((YfzIgl zAl6#{;U51lR=Ibt)2q1jODLLW-twXCz(WA`R?3Q;>V5w)fRc0QtuCu#tESMaGZOae zvz;cTjzmf{B4Xv$pY`wuDvy+8{Rshoup5QgiTYM859qAxT|+{)QB^tMY;a;i`aILi z2Y(Q@L|^}s<1axdey}PKOnk}aA5PVEfCYf&=P)y)bLdxlOm+UyTnp9l%esA)dAo%; zN9fD?H*g~rQ9M`v%zOPJTy;p)2aj1-)z&{H=36xis66nb$Z5!f(F5wu-Xa}qd_-(S zMDL6aiaABex+!uXYH3VPay>Bexgu*XoNs59GpvLGi zFYUW@AIO+Ul<)61?7)K3y6JP~|jw(HpuvfCVCadFw;iOOt5&!CVzr9%vx-YXEx%MJf7eNopj691xj3D1XH zAj>6==nH88_i+ZTrl*%F>AhLMAPJReYiBqzk{Y&bf)Y~7um)0$m!u_hug&f4 zloi2XOr2_p5}5w|sMU9SJTNmmTSHDx?$_ccB{oC10dvXrfCPx_U#@nemAU{>!OBCK zF`OD@lo@5@b=?ZxISvJ2um&M*tnxQ51uS5N+Tqa8KtMN^NQR%^htFJ06mj(_$^9N)l`qO|uxD3`#A;9Eiua=66N@*jo60}Z+OpwK*r2}^< zbU3M@f~B-L!dcpMngQY|OFM5m=&vgR+`6RxESb<=P)V+TkOBZ~4IH~{2~)srTAFzq zB?YgwHW5~#C_O#B@w7vGoamVm)EDJgT4%?b)0YRZZr}xu$0vOJ*g4VF zK|C{`gzbhsrf~@T8dB5PnCT${s56G|l@laH7xn;PiWnRGdH!+Yv9B+SiJ>D7AVhNW z6L;C5pK=sJSSp&YH_-iwM*?OOb0t$3vBM%{&?OzE#&~8kcDw5HO!5W>r=wt%`B}Uj*@7_jhtcWT~n&6Yh z$Mhalr5v4t=g1yZNlr;L*R=4mZm@T>RrL1woQ5)sJ)=?Su~x~(l2!zI!h zj4J#3SVmex7qEG0M9+S62!nV@O97w;spO0KQ1lrebE_~&csu}r+6|yymOC~KbS@k? zmMAlP3=IuSZ?F>CARwhHZtInJ4}WvC#DlFKQpyD_1ihHcYn1Ds9eVi+LWJ~tu3^PG zl+3O(e2Jj2smwMsG9iY|5xv!PQa;~+DH3bzkLNePe+Sq5$QU2ZhpvEJ_3{FVw*+Hb zf}}ncoreZLVnk@@*@ruDy4<`g3kx6aZ7yO9>s{=D9&UfP2U(G0fl0z=cP@?M_`lDV z^gl!*OJ`z$GxFW&T_$`q5yrxhu`V_}>1rnEQZQu0BtP)cG!iSb+WbP?n->}=;}j%(MB zm)QV04Bq0~+!gLPqN#9edl!I1A~=%ZF3e_G`+HuoxT);a&4Uj>*KGgyWSzrayp;-U zVdsBjhppAt4><*}$O>m^QeUb`BO(0^_ToDR@X#1nGAdD#1T}DipH3$x(8jrc(xIO=`#ZCSkrAUK11NoT&{q#{ zc4lg3xq!hZzXb(kFXX{wDNu4HAKSftR|eUfIonAkO#q5+fXNdu_s&S*f<;D;?|9ud z6yCMDBw{yNckxennSgiVXlUrUseEzMndeFm@0V*^w0x&vs;J|(w=!*=tO;Q8l&}+x zqa?k-d%SABOA)RNo#{0x&{T#;4#p4VbxV%E_$_y{V?zcCMX=+pO9 zRyai4E(r+ugH{u83dNYe2}ZTT0Q36xcTegbxY>P)JNo^5BB-}n5CrlDsJk?V=g|l2 z5U*Sdg@B4;gsiptr$C#_fa^@KJr|w9V+A#E+4Jd*@YHztfu~XK-1lcke0cv5h0K?a zet#hYf`})p^JBJUmoj=f(acBR2TKRDIT*!nvpL%=+_B-0)sS#|nZ0m`fp~DzO^xvJLzC%WeRTx4AP6_Y~ryti_CP z3H+JuZ<<5P%wrCNLXK8X`}cm`Rp+JE(6amTR*r^p)>Y|~0Y_=0=rXtvLx(21UN)st zXgoUY4IC**O<;QE&O>{T=I)gY*>%?(4AsP!ZvM#vn^i-yXb{BN6Fi>tiPZlbhDx8al|jz`ur*%eR5ve_s3Oo`6?cTf!B4t1f@kVWQIW zB}BU~|DB(G3$&}e@9c1%3op+Gb6(frrKMlqDgbNAPZe6BYd;OWk)$3Z&rmugHqqdE zWX)v@@Y zE*PtQap0vo&N)Zl#JOGl`e)bJpPeN+v`n(H2ePVIV3{1;l1khgh~_R;M2~)baDox- z-*%Xi^hmkGu7~o@aQ#}p1xg^5hO_*RCu`s-ookE~q(X%$GTNL8G+~chdEagJ-~}3? z8-~@jli27{SKITcBDUF8INvvZN3mag5nF;Vx|e|`pX0yC`r>Yg~6V}Qx8 znY9fai=T1V%V)bT9y#kl7m)PwPHDBrp6ON3b140as$<_-71CqmVJKC-;HMXqq_6whJy+J4fo{HwGEre20=BGXWV+Z&}e z3%(W?$9M4=?G2)*1&}*RU}|Zv96!}apfoD7kR0<8Bq3ptBL2Mq%2Ee&s+Qmo3@VY^ z!XOYpU=Rv@7~y|wV#MKUTM)QLk`H1x`X7hHuR7CMxoiamhlI>r!fXfdm=XhAC6;8H z;yQ@m@$pQX3F+c%LTKZ7%ytJMqP=}H%J#fVjuuMQpyF!H3J*a+tRk{18>=DRuCs7O z7cp8syqiau3%R|r+v27Y%QN&zUwZS|)v_%di?g$HMoqdLN5sJSpu5C50vA>`#`+!w zd1`;!9&f?uHJh~Ggxpu~J3u2OM@B{(eSGxw_3glw; z=2ZnQmnjr}0rh^5E)5Gt6MQm)I`v^jMx%6ASy+)JD&g+7p?V8V_3|rqKRg;7xOX#- z?GcE5asGor&e~`-PHF)m%@}v@42}CaT8h@zST&^fwezr1qw&?F&-Qx>`-F#iz3SJ_ zQ!h$ji(i<`)a-_oPA4n!cnqND%r>*DmeTT?0;TY=J3Tc!Hf%rP>R91xtXiIBTe;>= zJc58)Q%4(CnPIUy6ZMLzg_MtOK9j~zNVm_xZ9Pu?l6=H+q1{ONF!Tgv;JsO`sM)KC zj*C+&^I4AJJb!X-cJ|lX3pWaZj#FP6mY95dBlj1Qu!EeLjCOUBUL{=y$9U8w{UA z!~&Vm>_URPH8HU!&et-vdg2JGJ=c6^ED*sZLiow^rK-xcQ|y^_u@`r_jk+H$L@FGM zn2r%Blw&_fLUXdIVsz`h&-NBUS1V^u_p8d7S5-nWR%?cpuwp#PfWr@5HPkQG;{vbE znjJDO&Sw5V(1gW@u!lhrBRoB?v$OM~E4I%ZqP1*3Gs_7&wCPYq?k4b4tBAiAp9DbM zg2c}uxtn*S_m}JD78ebBgv6pYZ)-X?ZUVi{xvgh2Qoivuq`-G?^O$rVxaQC_|6FGy zzfIyp8vO1Z{h85{^CzRD<3-15XRqj%Wr`D4F@C&+h0isS37R7rJY$UCg5_8@yd?9= z@R~cS$O92itg^K8&%X2r*XZfZeV#uk&B+nM5sJ4aw+L9=wn7Ve`5IlYoSZz>x8<=bKJ)5Gu^h?UQEvgnEbjCg zAN1Z8-89WbL3<<0hu3Y3@5g|@%Mu8;Tc{Oc%f0wm0;Wrjk6i{gbqUWuggW(0IF@wu z^l>7ig<>L6D=RBuUii05Q#-*_2VwhZC_heZWAEPavCVKHO49h2ii%am8hpb33}Fj1 zvx}^rewPQnSA)#n`4dd&!NC}JJd=G3;=q`|V(+~b+tt_SHCXFWrKPH`Z*Av;id{3t zqnTg}cLu(4uPm27xMpTy!L~v3Y7EZt9FEClyjEd%R$jV%)-X577DB2FJk~T*{qA5g zOIA+o2a-y`7nfD${COH~#Z^6Oq+?`k7pYze?v`qYt#^Bf$agPXAP{fLf4_Ye;txC@ zsu?bmQr|b^9vfLMuY4^nom!M8MDB0Z?BBsR)ZlBJJI!Oeo(Mk7>Q&vP-SA?CxN3=X zpH#N5VL|S8Bcd>SlYxahq2!VEVhq-CE1l<0zS^(1HjYrmhah4x1pAsWbS1v`sjaO- zj+Xe`#?5bj#a~NGCfRd`LJ?byOzrGad){TcLfY{cTzj7gQZ8LRNR}qO7S(c*mev7g z3$Ulf{-Dp^+{0r#TY`Yc4 zHq);P4B@@cS_0YHm@lTud1xy|Cr-&VH%2g&K8AGvGyT_&hxaTk<=bnb~(%SWqxL#AlK<2rtis*&E$*YPuT5Im;K+V2Yp5 z!{2YqD61oS$hiA;=Ae6XxP>JM<$1O}WlHOO!ud*?!< z(GQb(c$LRNmWVn}!mgmG$P!iQyo&^2Fs;3Wyy1K&9rn z^NJ^oM#rNTnjR4x?w^|yqzi`d$)43sSQD}PbyeFS{6>jEBstIMr}o_TqTGa&uWmO_ zIYBLB-6SZ7R#%TYJEd^M{o~Tu86%Vagz}jd7^w7I3zfzk>}}0Jlh_8@70p5MKUEv3 zH&w-!AE(ZDp2(OsT8PE$Tl{QnEb`iz?-o#xMp2l z-2nV81w8u1g`$23sbC05pyny0f+{Mc!p?fbi(mjXo!){FE)`A_MEsbr)l|V^FWj@m$&wcaesUt^@>`WQsr}l~86mW`o zrwk2_oqcdH8}Bz5`waZR$TIq_cODb(>+jdGt2uCM0CviAwTV4SBZsl@Gy}FALF`g= zo*W(%$kxlTfR9}hd-%oj3##luk1F`FROG@w)aTVF%?`1wP5e8$P&-fv^* zp0hDue!;Z=sIwjGB39(S(4Un4&t^Kez*_)Nyo~e0*3ZrE&xC-%SIq@?X zq=TpPTbL(;DjX!ay;jk2ajhUDw>SH~Q*DHYTUc6#>{j21xDVRH!z?tIkrY!O!idPY zd3DU(haKgYzD>M00CP#%RHXiDIl78F%Fs<0ZfdLS^`}0(4ysA>IaP^|HFzxWcYB_M zHq5>d$$??PtV&RMp;61L@E zI4~GrZQ-%k2}m6WSlA98Z|^(bwP6~~Ek@Bu0Ms_~--{k*m_2$lma_Q~?5hI~qXF4Q z#k+BtA*KbNAh&)V6@lFS>>1v()P87lGIZ|rOXp5;@Hh>FmJ3x72*D{872=DF zi%;$CRe@oEi=@!2Kg`hJ7Z;C(PobcoFat4S0GP4r?FJsbdp-Z$9&qS7`d#rC2!$VG z?eP)WUTXOReWMBJnx&0_d=uI3>MdAi3QEcZ2gLu^&b7ZonfKx8gzdn-(I%(r+7?kw z4kcySR79aPauK+;l9x^QI^ZYH(z{wbpe8Sx1KMR{u|F`Sk`Ja>9w>5_E@vq zq%T+C0#&Cqs$TnviHkpf^(wHj)rf0vK5$?W&2zh~lAK(kjXY@J9$!6`IZ@Nz3C8!=qgUcPuX|v2}BknD8y(%;BDm5n- zC57oB)9LBy3Gu2*`FvVrSa|rrO=G3s_KLKQ*;A183w z5FiFn`)nj8euX)A59>5HI|DU;bBw9k#}MZ;XF%7O{__CU%Tg=Xd(BPd@=6MDwln1; zcwhaC23aA`n*A2!YSMc~H9fWFV-AhtVIEd3iuO;Iw_^yx7xAa}Cb79P%fs!xpH;yE z4T1vGjvUOkH|N?nqOyQl%y+ZO>(J8IXSoyx)cXvN@(;b26{wixoM^(maq0>@2kQJ& zTAbN9m_n#~phaPc*AIuNjw&Cj+JMTq6>#GvFgLMuyWyQAQ4O_Pw zxVLYUS-v?Y(^4(v^F|Nc6-}o{`RdS;FHTq5U_5F4|4-IfKq8gIOy8|TjG$UhUWA8$_`J?eI zXK&ewrs3hUbpsQ90;_DRg3$Rd>C9mB$Y5c>#|(0??!JBdwu$to^IplMPg{;`i__Y^ z{ljV!b4ogj;!b9LRLu0J#zF|El;PSy*u z!?w|AG}Daibp5QnJOiSGpMzY&+Jyw=;$9Ah+w7keii1F@4>BGBEVMXUxU=a-#$9`^ zCPcGC(}Z6Si-=f1=4mGBJ3T!$<>cn39d7hXx0hOsDabJstG$JlLy!IuGyWo5#TXrkT$c3Zn3>C= z1*;3X1A8>qb3iA6gidd&ZR%f%bC0Or($tAtQdtQh>g~vgsk8G?Pr+T7Y|<@>%fCO0?tu0w_UiARB|lM1>X8;}A$ z2;{J_=~yRq5gwcH-Y`jk;DyH*qD_tYvxND}$83jk`isUnH{<8k?I>Vp-td1#T}3z<4X} z4s{|T6;B3>T_>yXq`!av$kgo7B`=`1953;OLRb-r2JqC$QFzibJ>|i+g)UB*1wx^9 zdEvX3SwDU8>1Q!uM_7fiXI@8YMxa;YL(D>T@113L_5&*W~#f zfTe#|s9p@~4hYzd1w*rG_`83c;z)KY|njYveNqIONu zC)yLI-N)P8k=N<-5`zt(R>k2V9$0nBwU7$?#L-W}qT!XYtn;!4WK*6XZb8PT;j_RX z9)Y%Dz9{SCVZXRn`5BLwQdBx%=KtO`uVJK(9iiL#iSc;oP7Ip>+q=h0c0y;g#Uz|_ zj8s@TNHSOkcmkp=Kwtx0Qt?J-5Ck|?2ST5O*yOXf-4UsF|EG4{k*F@5EZ!?f^C;zT z)S-YkAfo34G>mNFQ(4o~(=Bq+$MZUlWm`!`ROq8iz54o_1h$nWO`FM8Ciuu}g3ZPX z`4t9m$k#;8mgl8clXMbr;Vra)mL$)rHE~&N_GobgMMeyx@iN#Pbqa+7&QwbXgF!PB z_v!buatgNsp>URU6(l=c3USil8So+kUMn>x7Z){YX=#K@2}$f*)_E$mzg_Bq<-ij3 zzIO9At^Pxp58@0cKPkl3vJ(^Y-J(XTo? zCG(64<2qq5=TJyB1K&d9y=jIeN_ez%braqu5L#G@2PKlQ1F&68EcobwGC|t|q6Y6r zCekFGH0ZeYsI|n6I|#{|@Bv3_HdGw>yi8Cevz&k@S35gc80fWpcy-@Bjx{@j%FaB& zR+J2sqRitQ1Q4Nfu&`xjj9!rhRp!9)sE>_%$TYu7`H2x5S}oXt#T~YQ;rhJud8FZ? zL!DHMZ%G|@vfEtFwT_bg%>dpA&68@Bggpdz#qdiq(^V63dX2>)$-Tt`GDhEHzZG_Ek91BA-bu9Pz&eEmxwXsICa1dQa`o*VxIxPt zwKyl$&#;dITwy*UIIbISc0bGS^*4{nBE-r%ObU`b>+1RxX>b;jQM-w18^Z8$RHc2F zk)!cRpeQIhx+g7$va>?s`}+E{9x9{Erm@Wil1-V*p`E{W#;;L-h(LLE!rq%kgJ8}s_uyqH2~ceP?<--0?PXvd*7VXmdmzgCnP4; zjgNZ}yW`AyN#NQKYdw8I&k-OsVWL~Yb#nPGR0}+*i=n{f+BNUU?ie*#9$Z5>58yHp zdpqk%5TPK6^e0#1eA6ky#)kj8?%Bsk^6d5>az;xfY#DAWh2V60O5E{u$^|K0X0y!l zD}p7tR%+Q+g9JWn9IbC|_7D@B1$U3TdGjVGlT(HtSUKw7%t zy|(io=lQ*#-cRqRhZ$!$=-FrQ`@UkWb*EAz4Y{I8Ue?)t2rBP@46E{mHry_ z!_LEr5uAPOBrj2r11$CIB;HhYCMnz%>XpWxU^XgXkFvCtsD&bVd>Il~XJ9VKN&vFFcTB&NCJ;w>K! zKO%J$)o>KCv9dC8v9NAoNj`a`;yS)O>E@|| zIzCud+5!ln0KcgrR)RNm|U0qd+dSm*xyrmx6*EF|Xt_vQb8Kk(nB!1}*S`u{a(e)XM~;AiPQJw4U< zk#{<^d-`V$h55zK-dJc^2|c>N&T%#j%_!Q;{&-u-HiYO7&Y#Hk-FbKZzEX5AD@T<| zNpJ(vibA2OwRj7=1M#K_!`!-*pR^d$U77(Vbq9sQ)&~2vW2M!_Zu=Dty0ppw?pJ?q zvaj$xmRJYdrW7&bYL4l=V1VOtrmeNOXsJDM`&YH0CFQP_P_ydiWPVo%Bd!Iu69;~! zFpHuay(QnQ=Vs9uG2bb>v8=&3)49#Q*!bb;pUZx8rS%QvW49+-nvf4I^}g(~TAk1yPS|xW>%n;J+$n*b6w~r+f zSZOOY57{}cz~%J2y~J~J&{(MJQ8~OEw_=TTL}UG=ugUvSzqra}?DD>-TIR*{Y6ru; z$lj%Bi$imImFA(oKTB&%OYqUu!T3X3>ZE_}_g^zA`UBD_`8q9EX;y!%x!h1HW7YPM z_F#+|QGAhVZ^U{Ut)nd%rq~g`~UaGYw*VH8V;f*c7;!R%_#5W^ZnG?^rb}4U{6(=13SvlWw@v}DyTDusO z%B$T1u8Wv_k$C>!kMu2{ zOTp>W>N;W<4XDdwYtmqg=3iaWEya6fm|`ZT}eWn4Zir5y~i&{k(+@G&eniymojTA-Obs+^7MMv^m(bU-uF zxnLR`Ci(>Qqml&bnla@+7nLxCkYnh|KihKl!ex`W)|!lz{J6x9sZu4`s%*!b*G9Eo0qz_s`hE0;PaJqS)JvAn(w8Zik9Xt!*$iPV`~LH$#IbGx z`{x4o*k{JOD9qI6dSo}OT;&U8F)}CKBAoYj=T8+|Tk#`mECMI`ZFMk&>qhi*_+Pi? zON;*8+xtogOw}0DGqHkAsjE>$+m{vAV4sMjHN1k)F)*`vb-HpbiDj7kp&P zbboF-oeSBe{$iqcU*EK7HNLyu@=!3gQHGwTNHiXKlqnfefyU}wlbA4>&AjIvf8O^# z6M5Jh-MIFz8m$PPY}y?Bdbme(;Qq^t&->sIfE2 zpSKT?;24w#8#DyjhEIgr26D6Eia^qHU3XF~FHio_E3|h}lY(evLcF_0mw3mhg)5_s zjyx={M$vq{v+?Y|R}mhkJ`<$&lyjt=I6sL(GTXVqy?bF#&GYQ#h`*(@M0}~ z#6qWnvEJK>c%k=-RU!fB?}X?Z>*b_Q;;S2;rlI<3svgJk+Nt-Vi`5HjC-oz7{=GG< zbb4f6OWx>k>33+?DYKM?JoBrYjjx@!d~t)AajnQ!F4QwJ?MESohK3+&p<97d;ltcZ zC9YZGJm>_2#BJ!NOnP;uyEfg?_9#z!QJQ7O|1OOr78m5t#_~9|e(|G}pgn>L#VYkr z%brjMH)dVJvT78eV-BvUeTmL7_7P@_);1%vPUf&(EaIfw+f(q z<+1HpheHqSnApttOmQ4g>uG0YL*|!CSrm76KWxJ)C!CQ?ad?#hD#3e2?H0NJc0tPl z@`vkFgZ;{QdRKwP4=cR(``r%;f}ghju(DQ~%T%>rnP9qLG5TNam#}~=&JAkNjx5;` z>KHE*NwO`LU79w-W5}zOn(B>eSFKA-{F9*nRLc(2aT;}$xsmmeLhN?kY=GE!Iwh1z z&5F8+n(rbtjT(#>c1wW^{O{}ij>fqg1&k!2il-T#OH*oU-l3_K$z%?EUpckbG|$tJ zC>u{&8>tqA+e~V+lQ~P3Tsr&@2AhRI3hFaa@3x+PO;*p3X)DU+7P;*cEYmD;pnlU> z<|I?g$VNXaNFEbqF@s*l|Mx?&crHR%zms^96v;}jY#nPI@_7=QesM=iQs(TCS4zX&L^H zsb5J%IHmu6((m5u{OlU(JCEm_sCHr;>CD)nB97-B#JHWNxyR;{`hPC}@hPOLRcy(r z^if>Fh7&-Qu6rwZe|}q>`u}f^0dNruiw9lnw8RwMU*}>&Mt~(uB}IjhaV&{*2v-Rn z$&#m{@K`QkU}jd8lMAK}eY3c@Snj-{C9wX5FgGVBCG_|G8zkUk`O+W^hG&@6Bq1f1 z!z5R|NYB0ouYU0ptM~d9X8lGTmkB%nDfcC2GTh(qY2C-dLaH7X*1VH7Wr%gnEQxFa zkD}jG@~tw#Wcf7lkm2wCRE4jvTwk1vx5+&7J57)e5dbF-P`KOytu9^F01!@ascz-PVBg3?DziUh%Yk}v%tHFEE`3fcIE}N? zZPU0D=UZ4^SkUxRaI5}Wlp39aL8(vU;~@S7|aFN|ZIEu5k@oWDp~p-Qe{W_ojj?AMQ=O{a7R%va`Q#xZslWD7+9B-rn9$ zxb*uj%da7KN$Yq1{tiD}5c<`CS4>H;$>z8gV0eeRQHIwYP(Z@Ijl9^XyrR2si zdz8`AvM)R@l=*)xK9n_OyZOyfJMj)rvs(rtZ-(7)O=$uvuz zy_VyhCF-0Fy2;IwgJY0~Ghsbhd#8eePA2A76UL?{0hOmtwZTCn7F3+kLrO}@2hqL# z@f^M__3yjv6Z;)dHwZrN1$5GIH0gA|^2t8vNE=cZ)qI+)A9j22KKZt?Y;$DL*4hZp zayB~eOa7um4>}AK*3}J6NH=&cNpg0D4g72=7seM$w9wecHp-m$l7$Yaa%}PLBT+~f!}4dOY-;K2;Y2$WWh5X&NH<1 zY7d^Ie5cDb{`Caqa!+-1{**y+vG|9L1>3tKg88TVnTr7(svOTtOX8{xmWZ(()oTyR6u+eAq4(PP*=U;3y^1U=+-T}X8Ll5r5p^S>mpM_LXcaoc zT@y~ZxY6RLuWDV^taE|}1_shmHp`4A7?jzU#i5G5P^zpTCiU3mLI`Nft{aFC# z)B0E$llf6oCNBnb5;Lq7na($IN|Bkh*OvJYq=;ZgMnuqNcthZpWh4Xy1f*A_P$)AM zXjc`ACZpjNt+w?VJ$e5J$gJMj31VTry?th4YJZc6exV>U)n2q-aGXZ-st9cOr{GBd zMbaDd19#1)GotlMy;GcOIPIptq!0Bj9yA>iUB6Cu2j`*fH(~9}Y`v0aqJe_Ddov-7 zWbd?28gp|Qn6)c|2!AiD?}INqR9L=W-eXzMKWibrd_6LUKI?s}>4i_iDW557@2QO@ zwn`8(suz|U1$;O;K1AzP33?r5S67cF^?aNi7|Kz$Dw^pRr?RREQn;5+m+V<8nyg#r zTrlN*Xw`|?A5xaL`}Mnl_qF~T!YexY9|BXyY69F{539JIc#;Mf&vtaJ$rz@GMimNq z+*cd9Cip%_Ijf`Cu4CuLIqY%0wnnc4c{e>()eH&Rf$3h1>&(0H1`n6dm@4;e^Ufv8 ze*lcf{T^(rTi&$3Xx_o(w3s&5!P!hUtw&w6YMeCECHbCYH1EnCkH=ooGc#8-=$*TG zwYZ`_Nx%axzp-K8Y4oLTs&^5U=d_Jd&&$lbySg@BZI?FJ9pCooce51^_+9#sB(SO+ zGTRsjXTv0w%ctn)?WODO64kV7PnJJ9E{`gDH(`d|w}19G4{vmIbXXP{&i4#sob?;r zohH!rzdm2#+w9_~u%DHRol7aQ{cfuP8CIGp8=ncAg6IBwN0ctjcw%8qi=3@aRl$cPIu1zIE|+$0E#?)OFAW!%o0=+clBx2Lt65nU3>WDaWhHxS zahUWB)yya58QlMR=AS3N{5#D%-ArHZberaeGm?j03uMQ2v?#A4jf59@jee~XG@%kt zpbJ2CEmrCI_UYAjkNxwkZ-QIXp=3ObYM=(B_j}SJ+14% zBfOkY>h`lQMRGr}!DF|wARhu#o5gT*uA3Z|?w_wOFV5TYo2b}?xwu3g;d;=%dix=K zVtiv{C90}cs!%}NESNL=D_=QgI79k6dT}sMy(s;t2TIbonp&0hBvW*W^&}r2{zqmF_^V)76 zc^uJoUkXQ5f7GGTw5L~N}grUl!>J-8nMU;vO-tV6TG$k_AgiX3mab+OOk!Z zGSsCzz9U2|qTeKfETE3z##iMo+d&>2`OSXEpK zz9A)2=ln@+sKG;+G05ajqpOq;N9{>(a$8%fx2fytCCTxxaN<%v)JWuaQM0ovIs3vF z0v`T-RuU5zAFryfUj$Xg40c?r(lQp{6WfJXkHjk_&CGJ-1oxlg-ncIe{a*>*Sz229 zW7~apbD!v)7z$ujYpa;5y1K>T&Wii#@$UAhVTjp$Phzm3-jR0`l8DXtLOQdvvkWXO zYS0gncW>_haIPZ`Y$1C4gb2?c)z|kyz+)%7wpI)7cF5;sld1voT4yxeU~wpi@90;v zs-j|wTp}MmH@7-K4QS@}b(5G;Zb+1O@80F+!RXx3v?ezt?>&^Y=ahZUaplek1En{Dl&{(US2Nh-L}!kklnmlVbV*vGS#3R&uudd zvA(@EC|{N5Kbtrq#NmAYy(Kc|h*`U?zyACyfWq{{YnP+9RjacDjro*wgc3 z2izW#9ViM7GF6!}c;)GY+E|&OUaOSyG1+7V*bZ_4f9DY&3*IEu@7A4jk`ditb29_4#L-QkiF6 zVW}3ruJ2hgYfr+WlYP^=`o-p}ld{Pc-Y<>qPCr7$7e8NN9ReyeHNAA2DjMk6%{B5@ zV0rVBwDwId^9bXvm=x&Jxe!7u(G@tnA}Q~Ymg0i(QpXqAdJjSRt@?q3`BBH{HDL>y zGeK(|UzPI>Sw;D`Rmw%Kx18N)*VT*ld%E@sl& zk6YYp;ukY$^PMbXGJ_-}3jG8&RBXa6+T3fL3!~$fcnirt&aD4@g)gWeCgzuMX7ZXi zdFZblcxn_pY}^*ceY2Z;sS<51?Rp5$*}oD01;KaF>}RG{0lQQjW$r*m{V37x5;UTs6L-xQ%+gYUSfvLhMQy=O23-{+ie{ndw3*Dq)fr(^u<(x}?%e6mj= z|7x{}{KNGxE+US5b3^m6a0Y!?)#bW8U>7)&$OmDc^U}j6AZ3C1ZCy3%ovw(p>^#(=zXfWm>&87;6AqS$L-IF_*oS=IxOv;*Eo&FjnzQ zH0xMm0@ock4x$APrIeR)<~v61j&!VNEMwUA$#xkmW-T@>HCRN$e~}cEhWAh0;u?`s z9Am zx{qOQerjrJgmpA*=kZ2#(-07LLid}rl)SvWaSyEG?#d-(nY3odbjk27xa`ty(`iGc<=BArczt=fO0=$XEVA5NH}4*v zKYKqokBtw^}O=>_gi1p*+*e;rk{%U;&*r!R)&2IPO?U99K<#Zq86r!&INs6R6UU1~5F`U0p*E=|g}Vb)CnIwo)V{R~C*WxL3G(ZtuM7 zJ!umM1X&J>jC7ey%QLoT*JxFf1-%?0SIob@zg=)L>G#wW(y(^3hri-^I{|VHdj4%M zkA-AX{<9JnSmLm-w5(CNs!^Rk(N#8|(OQXWH5pJo2)s+(ppZm0VS*P(l)K@cvAg5B zS#!7xce&j*o*y5t`N)s$++$@O5jt7Ne@7)Gn8W>XXQa$Te$t^=AU8ihBK_|X0x9RZ zhkM^%@vYTwY8_|(Jdu)?M$&k(gR$tx=Tjf+hHW)n@BLYNyG>3yI&s*UMoQOjFVYKf zFi{MQjN2hTMMJUS7S=8@==vOQ)1%}L_1jwC-OPf7uR>+sd~j8SF2VM3 zUOA4}JszQi6oEGAC+p~4g_5?Je*Ke;>z#(*T`^d9Ngh3%>xxZ-5|J$%)^xb(`Y`UH zTj>crOx5^R`>oy}iZkgfpwj*2AFbyunc2cUT<5$J*XMla&K(ANdb3E(!nQk?)p+^e zl`E*c=-D-&-ANY;r-=#or2<4n(LVO@$Gw>e`JJKTv9*TLhkmZqn01cKN#nMLZ5Jc&Vf+1aM9yI2%>lx@GJRC1 zduGqF}-x1 zuq_ylZaIl9q48A_0YAueF@O(%w%QD7aB&Z&isyc()uKFXP>WEaO05iimP$@MNvi;G_#? zCFaEukhxr;;{|#82D$Imb~9U5O~=f47Q@2B)1W3VLcOyoix2jD`g6je_xJ#p14`B9 ztYoT%^xv`ZwiEIyU$g8Vwq#*;Hb&$8x<<8aN~T=mxVgw-(f+G zgauvR(xCItzS}9ZW~uU2YZEmbDJukC;UkOM9q3A{Ko9pq6{jBFc~g+K5;zZQAn6Fb zuT04SI*^ThbnuogDH{U-n*La=748^`hpM`nZD<9GP2R^!jY$;z&O<9zm_pEw%B|O+ zmMsP_7D~9{yc{lE;u_HzoZJ4|-ECFIO}BF$AmRRO^q@a=2G9PH1l@`NlmpoW(0YMZ zTWB|Ehatf(?e>rosW6oSAKo)rS810ScMlYKZ!;du)9(KFP+1igBU#-WzxzmP9T!reNQ9W7r-+G(YeC2!nARCJfi>b=NDm(` z#{*1Ijc|}u0i-*!8MgNMQycMYAKmJaOy=<)9U%i&xTIa}@BS6prE0((T+hC|DbLP( zdLxd@A_~!g;fc0?KM}+4ZQ>u!dbgV+44sQbx0aUkYr|4uor1Z zS9RyA=8@Ya9Id)E9lBfHlt3!T=OrnARcH-sKBtG}HSN!D_!;*mA?SQ)Y9BsQCXa4zS6xjlN=bRK zqJk#m;edUqzaUWp)fZklgt{sBe#-Pk!U}1Xz!>DlWpf(W$XsS4)!Da;x{o;w#j$dN zOo_0jfxeald-yx+c@&Y$M*+{hUw=2wm-PyU(-vr!-A#$l@jBdjx3sA?QiTXKu!#dF zH};E84_M_Qj&+<+s!$lxZtrZu1cGxFn@LGjRP^;+Z*tN8<~+YWMh5gAe+uUqW+Txw zMbI?ml07%x4(Ds8u{Q2Ku5(#a11<}i=MW5ewpS;$;g4!O#@{EG@b+%>KG{spLb->R zne{@03wzp~K*g=lTxB&int=RK2z3E6=eahIh$hHQ^DP%QTh@$etEi;& zI?Vk9NzOv5(vFru5f&H30D!z8b^vk;cTRk`n4Lx-XWQ@pa+Bt`;`a(x^t!+T+O-g? zYk2=WK0N>G(aL0CQMy3cJ z+I=yJB>L>!+_;u8d`{!hLZ8xr!&jv&(F;*LeH%!tey@ycXEhq4DXHZ z&d$NT^%-VV8iYbo{f1PaAUZ7PmjGqR#j7_AYP^!%=17sUVzE9CtvEf9wNb+)(J9J% zJy2hxu|yH}2BuPrP}Dp+^f^|vsO&(PjT7=|)bm)W5b@p#6{qZnbWcUdImle$z4K*9 z#|Vqai7x~V2$8*_m^4%8lRV^LN_g{h6(*3-u+6@_xkkoe98{p()N=Ui1_HeXnocck z?C?r#+z%Sh+j_heO|bPclZKo^5Q-JE1Arl|TF0CupA$C$Krq-7R1k-K@Mv7mzy75i zOekqzqXS%2uj7vIAhWm8@}*l8FlhBXkI31zKT`vl1Pb^8&yw8nMf3*H&RTR&c2>|J zac#f5#WwYA2)bA-dxj{^H_7n3?X#toPg0H!-<)d0tz^^hdTp{@hlaGU`-Y3-8ko(rhPwjoU zDbpRxAr3v;a&zbBSXoxE(1|O$!(-+hwT~wG3!(-T)EDoa(Z&?1eL;K z>t}ydlgB{1MnRWMKe{yqQY?&~qdLb*4E+IkBosvpnC76Z>tsOz1PGfmTV->w zy%bGgH9jfFEuaL)!Gk}t(V;RG-a=ze)DX(x zygD&9x58#K^-w#xL$~z#TiA%bS5sL0?|~htw^4fJN3rTp%~`R7=%zh<6d;y{NM@WK zJIk-8h>j~^8fpRE!~NGMY!F_VP`8DI^r5*0rxmWKC4UQUd3MlDbz+bc1Q0?FRM_$( z?d9s&SWBUU{t%|79HY2Qc(TfBo9a~u5KMk1x=fWEX+yoUS~*9sJ{zrXK2`5_uwvum z(HC!m&F*vJISCV`sG=)}v|*kp_!s8I4=mP@gjwQ{RfbhOINI#3Fh?;ooSqzN!6+B@ zBL`Ti3cyQcsHmy^KhF?;{6cN|R`}KjSc*|4HK_E3jR)q4J`j{Aq}AwIgN%O>e84U{ z7*$K_PZ+H7uXhVahaKzC@tdIN}w|HY=Htegf_ zX58MP<#L@h`2>h^2N)1~|E@}gO2dq=qY-;qh*;C>&=!ghvsTrD0v_iDo%-eaGl@*E zF5<%cJc?O+3$UaH!%Q&$YVmAq|F7@O=zL~GiUjPS4gE*9ItaM-{D&pt*0c=#8l;mn zYmR#$@(~}1&w_j3&P}?_C&ocJhhcmsy>jNyFNE?)?{EYvvXmY!HvomYXnm$_=?zVA zpYNG-c&>PafgkSl2%UODWA2=V4y5Zg8|m*!cxX@vg|@Q|EePsAsw)`Jah zkz0?{M)H_}6ZX#&NanXbD_NV^+8b#)$?)^@tL_A$!>XTXNbMEIQR{SGxQA!vs`ixY zrPq&Z=i)4wFs|M(4yZ8rbXGL2|AAS^=g*JP)^jjqPy=jNk&*Av!z&*Dz{))Q0jy^* z^SL}=h2kT+E{U`DEFfz9jZqoR0wT!3#N^oJBrxSP&{R-cJ09i!@MLc$%I54Gz=5O2 z_TJtq9kJ9h?PZ&VfsCl$3zCZyH4gFRhWBp_Asj$^d>Wi4g5Pc`wFlV!6#2COo%|mX zAvnmny;`@n*d}yRA}6q|!mLsJq2-W=;4S(6SUIMbQN>FsBZyB0fI)>$59o_l($flI z2wH;lJ~TlTw=-}oK;k`W+nj@)9gp{Yc6PRe=}IQRvuWRRU!P2A?YKAiCrEY7tZOuW zFEdBwmJ3pf1(Tae^GZiC^@ILxEUg(LuoE){$`C9M5>%yr&+ZWota|(=ki6D0-}d!pX{Bh=ifhQPY|Pq#aw^ z@K2=|FSWj<;MNTc2pCVNxX!9)sohj!+)bu!{iUT&jPiFM)AtAg#2cOmxTk8uKG6GU zhH42^9Xb-p5{)nIpqm-ERdOukk&at8?i-^Qx9c#+axlG!>LlefRS2Zq%R;2ATLNyT zXR#!@AbRuQv4#hPPa*7he#Xf`snB`+=sO~Ad~7-e6i(>Q?gdjut#Z@;-IGHAU@%c3 zu*M$boY6xwphnpe_2Kz})Qf8`IYEappQyGgn4$z?S&@;TuIDCd({x-};N$@`K)XQz zCRjij3~Lgi^}RKrH&&u7`cp+gQLO|n7G_J@?2ixOG&%bQ7Ktuv#dB#IWd4#PwEznF z&vb*}X$oa`+HdscnA)soet3GcSsAqpyKVOEEtVog4Q7yP{Zy3_r+iUk}&J!Syo!g=`bfVY1c-v)ob?;sXj;W z(W(*qAv^z;3R70vkM6MN9i|h^hPw~IVU}+C{=wsyZBhEhYS^)_b)Os0N&4NU0ssBn z6;iJFbWS}BE>&p9pvKCAR4h{+Bw`hBiggJ2P4#Onnpr!OQ2rs?>W2IFqEnv_72@Bi zoT#vfW|p_Cj0B(yLw~ubPB*x3tK?KGXx3H(cm4T{wNjBCpK{NmDZGwANIj~&=W6j0gFPI zLVj_RD`jvRlzMEtU_xZkerVRa+9`!KA!QtfU>Yoj(AXs1z8%L|6!rs}Wfs!lgi$u6 z)4~7J>09MAs{**1LRUqI7DjdZmp#ETE19X&ExWN=7-oXbvbWJ@PCMWjzhcM6zok^( ziS@ekfI+EGl1)F8R;18YV)bBhWA#X96_=_*wL$SRYQTWRaj znpfNgC=`82N3TAI7LmPRxZR!jBr{X)4s2;ur;(THYk>Yd)AjdQSSn}DhE?;_c<1I0 zL7K9xu`4!g!$U9aOnIznx|a%snk_1$KmlipM%pq0s%;v!NfMuvea~DvHEDBdoiW?L zAN~)uT%ZK$_--$txb1k%k)K9-VheQ+H7jdx)I#z~+~OX3acOBAcJ()I>L@Y1=)W`i zPdn2%SIxY4g@~CdeeMjQijcv}oh{Oo#em!6lU{x5r%O(Mn;(QI4*D7rEjUDUy<9CP z)#_qe%(2C=nUnG8RUC_1xb!|9*IoB%QwvEM*XC8)K6f{JzZfSV5;ua~-i-4K^jSk=)8MF;WLJ7c5H0DnX zq7s^lir<&h@_?c6fIVqD84-(iW!JzCjA-NTKYdBF6HZ}K1o(A<)n`AjhkxxMU%PW_ zp;P_%IOMEZO^~bg2c)~b;-Q?`*L+2S599-XJI8l;B^Nej)|#TT`O#XB-@XPafG7uL!(yj|}7^ zwGwOBLAjG%nzf=AU6X+Fc^;ACV+nx*Cm%(LrRYJL!i%kARKm(Jj(yAs^~KbZM-+q?WzK?sco za0uS3DWB8h+@hkY3D)Cp*g_wCg3ErFXW$mrR@P0Q8^p6q+Wtb#Q+mE9>iMdqD~Zo_ zH7VP)#kM_J{P4R+Z0zd*wIHSAk2twYqql{&(9$nw!Wn`%@Dx!7iXMs%grk8x=&gvw8$_6qD ze06dtbhnL`I6P5e?&wkn zDnPOdkWnM}QO9eY@&u2!lp8?Jb%$aS)3f6d5fSmTd{Ax>FgL0|o7-u5G&DYED_(x1w)E6M!aswI}u0O6|l0i2Ced+h}OwnQy+}R4di6E=g^)6xCggvYD~Z zqvzL8vOYI^nTtNHMzK)VMp}_&HQ|%DXdPwYoL;jk#>)5Q*t#qsrGp32wh3btTG3jI z<0!mC_6Fa?&S8NepkmWJ%;5(?q-CtCb8>G3#sqUz@VuAzb+#AkQ$>A6+z~hr+e}Qq*7iuUf&mw>_-CNi$ zH_U$@-B$VvqJ!sJNOnc3hI3M?-rDV~d4cx_F9}e)H&W*WX`Yifrm@{F`w$=J5uzfp z`zW_J(8rt%3@1bJDH;!6BoWICY)8EOWbhe%orowqHFf%?kIRsv_#G8BX&c{0n0ezw z`h1|Df`BFv@{`?sudJ3;TUyHADeoyxeGS<2Fx&hSa3RdHCvf5>Vb)xZocd;pD}Df? z%}3mk-Hk#ZXuiV69|p}}8`K|d#L)+H(9g~zP3{jVbwO!$harU1m{GJDm;fehoo*o2 zqYVcLDQn54g!aY8V6ilm7Ti9?-D{@Izo&2Hqb zDdZv+*@p&UKfYgBbru{@+x#GD{*zZ_`!!A>>SStxyYXlRJRX%YtBQbFI*9Kc|dh;hEDS(t@Hgl1(6eTd;- zk55;O7RSAC$2^}rHZhBNys?qts)qHtZS|kd_+Q)@b}|Yb>(}u9E}CkGGE2J zDuNvPBZ|sdFE%7v;Z-u$yFOk;!FHvValoRS>|&6z$fF!;J)g(Q0c(VivYRF_Ks#N0 zbbpoUnzUU7Uf8lZLFU;`(sVLE$lFF zhP_VMe&2Ndyw}c{2|yNgC_Ti)^sH-n6*1UXZ@gC^1xuHhPO=a990=X1D_qv5^iN&p zd)~^6P+h$UZZr9e19uEU}DS@;;|(zAjJhdoT;F=$>8GR(kmCi z)I`_y`)fq>7^t+8hT%Wjs*0`q8UGWi%Sa0HvF_XEo-nMh`L-t5kOlKzDb6gQw&HdcG8>tGXCG7kveSLT&jEgx6vo}yqRM`f`!5L=B zO^St`1=%A-8fq_OxRr&qpBhcx1w$ju@1(;R7^a1yEi5dyVZzZ;(G7Du0(a^XaFT_= ziJ6!_6%<%eYEjn?8!9V@?MdZ496kr<6z))%$i0^u6#5ira6g-|u=+7#=7K@JVduNs z9*-Z3fSI|L1z{o^%UuinhTd5oGpq?3mcl}p z=-Kg*8)tz_@tg2-53Pa>uYg%1ICVZ2Reji$SBab$o3whb^Zf(+l;!*WV%-3?OAc3E z{JIk4E>qamlhsmY!hwr|w)bFRoaPz(iTt$h_<7R+Ax__pC=%*c+ItgN4tQ~1frAr*)tG2~O z^Tl&+d4POIbR6CR#rmy}Bi7cfJ`oS6yQxoaAV-eCXpjZ7heCtJ4TK?sF=E9u77WSb zaFPL$Cu?i@3Uq3e04D7X(Y9!sBxZo{8yy%gNQ4EAZ0(Vs#`)7O=p^hc%}d?g91rO9 z^u8HULYWVMI;dmk5y?WYK5pOcymv9#zJ{2-D2i=aA~w{yW`rrKf9hVw&-yD#3t_r; zZ>DGD6`%k7zR0kY7tvhiXhkYjGa=>Aa3?y1ulFPPPq_?RgD8ExLB>Ix_Z|@{0)59m zLY1KAB6JA*s0Ogba~*w9o9P3bL&VZRJK5NGKRImwQMRu|7Yp9bdvOQfKAEnMSJ@=5 z)^ExoS|%U3ubm)Se+!l$9=&omqGIkW-AY{Z6bD;`{d2QP%PX%R^MOi3!B~`%@(AV< zLCBcX!EV6+>@6sf7fLReAzxc=H*qVi((0BdB({H^+fc|dE4MomLjE3 z_8Dc4BJ!@D0V=o=yzT*yONw>kaY;R@6xLsRPi~QB{`h4`L@FQ}8bEgEp{DCcqZ^02 zXYiuRLLB`NCnweMPjLaf4QK<|Fe9uNPu8up)C>{ag=AaE%`4>lX5av}serZ_fu>3; zZ6rAR%e`m`+JBxYN3RS6BdD;OX-&-z>FMbS+VPJ{7r_@OH!Z}ci*ko)$k!#KL8wGt zeYp)2Sr3mBIP99TLzRhU~?;O{xWh~^3j)6agkrKKfsi+g_b zXuV3x{zO+-SD-Kpv3(a77MhL=5WLNX0~=}VctS_NQr%ovz9a<;j9uZ^he0X#3_H+? zj6jy!H}RG)kh4eNfc@3pgij@?la=Tk*BU}q1dbd;xC4`rCjSWzUBa#C&d6Qqn&UQ~ zBk@+FbR~LZt_0HHgXkQ3cCUW`ucmB>mCv&22c$IiHji2p zyGC;>E7Wa&@-RhG*m0J)gV8D*{Z^x^WSrTii_LG3)9@UNtbas92|&O@@{xzE?7JR; zT^+>E2op^8dqnnIuAs9ZPzez!=dBWDV%hJ^9A?sjRWcd7a4SU=h48>Hjkic1og7tq zYy`~}y(8ykUz%U|a@BxNZw_g@`)%o$?LW?jui!E)T>09w6L;d5l8(;m`D92euzWtl zk3#(T`iG%xLShPj)x=kA_ZFN@xZwPv*`QL#^@s_d{a2LQa4bhGd9D4VDYnOTVS(3V zR>y9%s(dvhRS0PH46K?~q zl4qEH;G`P~x~eQGFYNq5rIJpV|M@r2{Ufc=yaIC|Kt%S>>jQ{SNZv%-H0i3WOpT6e z{B^Eb2hg`{s}UFw7GPw=8gKyqs;8};^qNr_h{ibaJP-~Bp?bY{IKZ4NiyWAR200^9 z1E8vXX-xo>l%P(HN=s7d$bNqk-G2}Rgy#NJ=yRme{oz)Pcwe9bM6L%ZpewfzF{eov zLEZRpDHN;cf{U=3Pi&aAjdhq?m{OFqZiW|%>v;mfj9i2+S5R!Cn@{5T$ihNZ&t-T( z%Dln>hKz!V`~mBmeoEFw122@?XR?^ti=CF#D$0MrUkbIlYK@plNh3?Z#Q_Hn__NMf z$nP@ssLMUv%E`$=G~2*bLBz&!hv02cr`>eHk!Ro3)auu(RfxGK-ZIn!@Dy@r*9;uq zq|wNU3@CTAD=r0vg+0|lyBMG3KtI9qp9uT%AHDvC`YS%-LQu+45iPM_vPu$E99(q%;fjS!WMN!mNuv6CWD|9o0)Uuh@@O1_{KE zVYsMbS;kcT8F(#I`NU<_((|?Gqv>2mvY*~t*!jA1(a7U0yJ=|9(8vfsd(06Nm`2Fm zW?bPm7e|Wp<$B!U@QUcj92BZPQ16(Vn&w#*Zuq5a_6q4Ei1*WoI2`UWG&F4GC-snswPBfa!HsCcC4%$En~2G6d1Urg-tBs)M)Ve@5$R5avE^h z5D;!yxP$Zb$`?ja(G`-Q&Y=?VWtr@2 z#fX?>-|0!Iq%aH#QH*`5!N^{zEF)!)u~dwG3E3LU_jT*@JkRI*|L>pQIo~;RoI0n* zd+zuBel6GQx~{vn(kYqsV~rB~p+=!{*fhmI{(SJY0Im@KVf$C;k~HD6-4seZp(&JO zo60wNc`L+j{BZ}wGQ}FU&$9Q0gEbk-WIqQhTvuVMzLY_aP58wt4fhErRpJNsSjQ1; zbd5SL*JKv>-fLEqSQcebrZ@<33lb+po?XC1Q&;ePAa*%lZ(3-t-`H4U(kJMCgwqotQ6vm8=b+Spm zqnU^mcmfnjmH~5ZK1*e8Wj&9g_uN;({PLGE(p&#h@Ei<4RpeTNxz5n0F4FYw&FKy+ z&q9ICOj_fEI!Da*-H|&kK_mE}#cEzC^+2To(`v8fUx=_FB`y%DZj1MHeR%~!L_`Er z;|AIuz50Dv=iF?^gCT6!lio@fg+5YHtJ4=y7e5v>RCiAq{wOT>-HmzSVA^e3d<*XF z+Nzv}k21MOsf%A3b*8{7A_pdzh^Fnc@_rLZHp(?4LE5%mlPkbi%y&7ec24R9 zeWdtP76wJ!aSxmJ0GC$({Q2`A(4-lG(Kmi}!w7NEDl>}p^z!FOR~X($=X|PF9Lp(K zC+~u+E6rgPCL?L$ufEwyWFm{9Ta~!sDbi%}(2z|%=q|g44(qMY%Pu^!=YK1gepYoNMjuso2Y|`YG zGi_?R$Ubt~qUn-DeiBM|6D;b-B>u1k!vvwR8ha-v_Y-HpcEPdzQwfQr>fzy`+Bt|; z&&&*CeWeNzT7WK`KhR-fVg>wE*PppRH_=;zUn9=t{GlKFsuu4+x#UMudg?nW)Jd68 zH$`j`yN^$Z#M$LWugVlq!}L4%GI^Hu0PD`^166aSNaaYR3#U@jr^s#2ae3N*GT(6r zgiE$-SKK5?Py>(0`}lowf4-7_A%3v7q#G(lSz76apU=)n&LyEbU>n0Z^UIY;|B9-g z6r@k@$7r{-0*aIm8Ynx9c3iAw8lvVzPElZje|>8h_iP}HdV^Q*3fE%1&QMNfq@GN+ zir=`rkK&M(T^RmW`Gc^GT~>2INYv&@v8QY##v=p&hV9I(O4^qEhUAC6tFi|)mx9R^ zXX~!)y^-en^3w#=1zcjE?(^HMCIX${`Sk@fYQr`HXZXa`#sr?z-cK>OP#&Lw-H7*e zEkM-b)#sOFv^~OjZkJeyBfPyCO1;mHbJOq$I09R>ar2F|OrV4s0Q1oZha(-u@qlLH z3D64=r+#T=HE59m_$ZPl$N_VNTh=PgStn>b!L70GRT$7k^)n5i1O@rkHxqMp*MY-d zQHNE$K)rD)!G#kMXFn7uqN3i?wT@qO!v)?aUIBu7f2;@~X3OEDdxa7hTF#8N{6Lbo z!c!MnAmRCb{c9V>?DD`2RiXo^%}1$Zj8alhnb#QLfJ1h#zerBiJYvG!%g($tPF|sF z`UPv2l#^$_`Zxbh=8}W6nvYJYdA`4N03-Lf3tLO@XM#Ej9%bn1J?Ao%a=2XF4zHDw5pgU_-%pvmMsP{fwU{tlqjF1%$4K zmXzb&sSlvZ6Rh=Zi0sS`5kqzDJH&*@7MVC zc3)*OkgtSN;;yZWvgQktMt~69G*B0HdTuQ@BjasP)TFm;(9pg_d|b9O%!Xg5Zj9;BtT|th$I8>owAMBUk{4KmJI=UX=!TV3N!ce zD(1~<=1rfT4pKU~@x!Ank|3TutE~agzkncZpF#7)NKu95npM4frn~{llF?jp`kopr z6Vb|^OPBbs31qr;yNvFNp{vd;*k}|RJ6P+@#5U`3`a1KwTcdxy1jZ$ZqE!fjm5&Lsvq_EDhQ)Lw zgrtF7t_Yp=FSsn3V$laATh*&axR z2J{!SoG zN{=!BiL~S9eZOL$pISRvMSK&yZ7lktP7{Z*#dIcXVB(ix_wVoSKl#nQZtlk*RWP8J zBK^g`60P{(I_M}~;sRNw6+mI15{98$FI^gpM^~H(neWjteB$H#F2{i&z+CV+_S$)5t?bP#>~U!rz6DJA^<8vy%q}e}!|e|NEj8%V>2tob6eSS&YzP?9vc_I` z=q7P+$zO>(Xn9%=m`fgrsa{lM2r|f!%eDQ}pbZwy=lu#gmecJ(<@n}Z2GMQ=ZbchX zen6dZ79b!n(!d%UcL;dw0jCd82u;U-K>91Fy5}=lkDPwc-fpyIW1RE(Z*bQeBx}&% zp$S5{1dT$}B&~k)TLn}$9O!|ox>Ro<0L~Hf{Z*k`W3uJc*n%B0t?o~gieP$(=) zNsxwSmwtj)$ogu6OUO}=nf%JDmB?|&yySo0k&z{i)=e_;)Jc( zhJ@VWS%B)&p@b9`!NDYKCE0!frb$?Yz`+c0!n^Z&aoN`xlJ>DEG&?*2a8^$A)U-Ew zUY;6*_~eKd${%Y%D6#=MG~6?s2P+krhGtOTyg*oK*yIkVH{6%IcUGVJdbg_17K<1{ zh}jkvZViSKh^mZ6+d$1ObZ9w-SfW6y0983wF3|{tGAF!$TzbeUrIw=huo+S!m*4&` zU0qoaY5DSlwxNj{1jG6;-Y5Q;43`pjh~#5HbX*;HqD{ieUZ^Lir$UJ2|2ssgiekMX zM0x_J3fSq7nt>9?B~b=Z6>^m95)TO2YZ))k9ab2+1a;$|P&Z;AB6jsh;RpM|m}n7% zHyDyK2Z2t&Y8()yi6%9_!SJu}*B1}u^N}uSIpkYY!Z*Lzqx5U|C;$>dBDf&fWTrw3 zz;{Tg1R|{+X&i>QJSXsLz){I$D@mW(03b&4Bm(~(Roh4Dz-9z0y5!JAx%c#ynwSh~j4dXU zPK|Yh;M%#P%vIrNNB=a4OoX_0xkW+nAq)5YCu^vPVjshjfQNxcU%&!VstSD}TFc4F zxx*9s`EeNcj%%{>LO;~kNi-5fb$dVlu{PiQIZ0nWK(8aPh?Le@LYwL59ndmOL*ta@gEG29M zWtpjYb7eXjYoR*f5U>CHewUR2fz$dJ)BV|{Fpe;kfaY0$B@f0HCBSywXc`;-zrP&g z4QpUBu(H^@eLlrW38ch&y@5FJ?J&dvHRJdk`}7?5RsQ9j=C0?va3M64RaxWl)P@`J z-I1R3eyt5g81aHKWwq3Y6jybbUf;fQ*|K;~XW)fRW6aIWc4hG=^Ji96SOSyxq}IqX zF$p9FX64?J9Mi@qLX72CSpkV!C}S2(CW`aQCgskvodBSqwrpzQvofp0>hjVZjw@d% zprEq6F%$s0_^TDxRMIo$yRJ5{;ardKGS+*ObN|_J^BqqSb4~3SI$iaLfmh*D-T<2kH%ISyB!+?T#q?SWMI3+Q)8s=-zMd1I7H9mO%wjAeiq~KZ@}=ep&&X<<3h(b75u9W)I-cuda^DG?gPkM$caX z@Ws7`=eh@yEjqp8`>h?~wTx}I9Xs;cRQFjT>YJ?D>6I*(WVKsB1@gHyV^#>;kjQHKn#{&c-w3fPp5ERe$fIUzYD+p01TKgDs zCP5AWK7N5{q*%%5nQAtH1%c7-`hxsQlooZQ$}^X*Wz`>Ouj^>x20jm3me?co_fb>no)!nR~=p3D#VU9pOdFYG-DGx4%<3;_MQ+}zwg7kMWpCgcEmn1f1lVEIdKZY}~jW@h9Z zu3v9QOq0%nt1y(I_nbjo*`mtD_Y!tEnb*Lj%YalXE&@f9;pw+w*1j>#OHCp4t{x%VTQZXJ|j7U|1n# z9nc|h5!bSnIElw*1jKGk^c!HEiptMcp7buZJymux=Q3?Zty;LVBd7kC^k~88g7C_$ z^FUX*w%S!GmezwEDzsfCN@iKjq$>Tk(US(9FLa)@Th4rViy64V_T~7%BM)jv+ucN8t(S-3T zF3wE=&DKi4hl==mq}BHIvF4Qw9_aC;;Y}4A#frNL#S5WG?PUF{ITo=t%Dq$M6LrRP zgMLMU8-TVVOxsl5lKkOOMLrEf?!1*yXs$Po<1cFpFTJ@HcGcG`h6I-t&U8Pn`tNOU7XctUcK80+)p>B33_irwM z&SaqmXJilN;OU5~J-qawH4b7qgIsUaVEjIGOP0mUGln8oMr~OghWb@TMn@)xdtZbk z8r_)kB<5LXeJ+!rGQN$GDU}5dD(7?k7U7;3+J6On#Be2u zUHd|@xSt_R$;BqI?#;gTo{B!4Lu7A;|9dTA(`oYZlmy{wPm--n9$|N<7|HZ|je}05 zY9(azgoIht;)x)`Ba6*JlECOdbKgJxgLSuYeK4+S7XoCE}2 zD0|aW$YR4(>s8mY<4t@TNC*G~$z0?k0bGI#*In=vX~;9A8c!*MV5+fBvT8PQY8ZNf zdMe!rT4!`8#$eRg3X&e&x(0(B~p6 z7;ApQ;-v44Sl?sc;ysWd)R5AG?D<>8pvD*+NU-+)wgm-Spv-Z`7U8IS#cx&lCEq|0 z0(c%gk#$Q0x%O~_7=PlrO$vmJwIp$gVwkIz=SCr(3*yuwHA5l*>R{mD?*8X8+z%`W z0vQ8UEWAnz{jP3v$ENzjPv?PY;`)Y-ty;zbVr?XDJpZ;><;XK|#vBICQ+t%IQm05q zHPW&d_XV0Ggdae>*-2l^a_^U@-a%dmNM!X$VMZO$ryL%sy$?pf<)sBQDy&aT_ak*V z+$C9b`;e|Pr6T|mFj#Y>L!~spyL$b7CqMp_?BvFP-!nyi^k?<>COVy)+Jm+duWr-xx{t@T9_w~oE0d^cwwj9^Qrj`Lp& z$ByXmmfTE;Dqnb z;V^1lEWKyuBhd4t!AAtPl64CJMVTP%svVo-xgiT9VyFySVNvD)$U}Gs7()423m~f; zRPI}Xa#jvlInp2(DCya@dPN(uE(reS09JE^Y1-P41)cHx#Icn`v~)hRgAOn%Fa3IJ z2h!=o=(Qp8jSU}L6B1s5K@ake@|mVAg6|T@P>xu-H>t|?he^2u+BG+9wm3H5MZw3X zP?wO$3@8VU0TP%438UqC-he_Rw`y+2p09Uybi8P3nFu{~9^xPx&!>#x(RV=pK}dH6 zjNNva)qonmC56m(|28rf>i`{Ul9JO37^EqtfrIXYnI(TkCFknnh{wzJ`oC^$6I4#V zaASD|Zl&uaW=Q~&Ah-OZx~(cGD9+CA(+YebGPZ)8U<_KSkDZz>sBinR9|lV@Z4sx( z17Th}y5=wynJzdeL7ey+_?kn0jNObO;1l~X@_Xd+;@e&f{|DWRV=hA?7FPWx&5Wd% z*zH8hiHz}2Zgew7*J@|}(re>qU-nf#Z+v;N&1jIlDR3z{f%?J&3f?ae>K7Wy3>x>6p6l>7jhWL>gjNIe&Zt`X`0*n&*C=ex zfuvGqD*q19WI@O1bKrDf`Bs(#sqk0$zW~*k#_$7hqJ0eB9NXk*}Is*#2keKLa-lWbfj!W6pUCRaFw@5XP@LIi+qKQD%Lj#4cF4I(zBS zdQyE=#iam3=wv`(Ey2Uc5Sn5G@T!0*B6tmz^i1m7JrQ8r&d;_T3%IDl#IH7LTs z|KUW?>T*?Q*2X&zAmut8-H>o~{8CZ#T^>?@-{JPps^n2DY37+ zyFn=ld=d}MgZuj#D@^9Cg)IUD+LF`+bjtH{VDvNb`W>7KvX90t75pOwjDYt8e?5Ck=c^V);kY%lE zxvAC>*+%Gud!a!v;Cub9z~9pDhfBZt1x`a^^0~kHMx~5)OWDkL?-A=Er8>_W@pjdE z-TSaZUtemr>R?Mp^4Y-1>gi2WJ(J%2L5N&b)ow3WtnsogA&bQ(?27&B-c0SW>fc?GyVbTR^(@f9($Nqj4YEgh9k>!vxa>D>a z(`bh$NTH5E65Ex>h|U08GQvd`94Xof{95+l@bq85cj$wIm4xo>-YqmQc`MKQLiW7j z{K?1~LD|t$b>?b!hHh2m!`(9Oxc5m2Yc=6LV@$Y}`_c8JGod7E^YNR@1Au1&b6e!k zFI5|F;Y<;5jvNK3^!mmu_W!u6j;WhMj#qk!%%^|fKk)GPY53zLwXIxZbx_Qe{|bi7 zidk-CUbx#i<9T(sk?Vkq=$6De{UqHweQQ1U#YkpjR{iD);?C-lV?`~lH7PSEonstp z)Zk==QLZyqh;$5@=S9%s6bkhS8v#|FoNu{vz?eB|c5F=>%iX1b{CZ$FT*JFc_)%*P zdD9dlRV8S?^#hmN?(UX{d6wOYtK03gCudLJtgrx3n~hGO9Pc_PIIc>be6(rtxJ zAW+peRlC&D(J=;EfRw|q+s=%`roLJJKKhfw)j|LYUTVHst>)O_f7T&MixOO*hOag- zHnrwd{y-g{jF#vUx3R8ZpL#x%_p|w8NuDCL^dX1DKIa^dlh^Dehr?i%7it` zN=<#&G<6(i5nxOI_ewdc!D!@y^uS5^FUBKh&u2`e#xXB&=DD4An>Znaj4nD1-( zRNA?=d;0SA%7kL=`_nD0zTHdAu^obV+*IOb5u%=hR&f2Qf^l9^zDAwBPURKf&-$U^ z@}{|a(u5D>=n3!WYvP_V(tv*yxVFQT)}d+XxAcvvR=#TKqq95MG0qPcK+XaG7(>W8 zD6`Jbd#WDU4I>F+Y-~0RZ;`qHyiE)&EyY^g10$ngCa#bvGemgn-pdqC#lsrO-TM9cq{riT2L@=a#S;P98Pl%n_0cTRA*@Sxu|;>Rm-Fnsn_Zn#f{WR@9?z)cDpQ z-N)jjkRYq+>PN<=jithNnnBAR6ahLP$nQGr5FQv4Hv;A@DU$!}=v!bN9HBy^_rB6zZLSO@8VF&r{G1{EcQr~BM#rVp zg^G>&)6A9R`E9%s!zPW`!je9?*X^2*?D2Z_e2)%x=*7`CLoBf(;33|8RXyIH)PogZ5^sYpDL z7faO9q$CpiQ$=Hs-~!s@24_c~EaOObxx{?59B%4f-X%ex*uNSBnDGp~$^|PzQ`aGWo8@Cn>|xN0 z3LkiQ4PqPgp-XKQU6jBzMxP^epupozehF9nJNDjE+4xG2#D*!Aw|#Ge^$Fq+Cc%W? z^ny~FSnT)Ji0||^jAoW?sR9OXuK5nfXG2I-`f+ZD*aoLk+t^k?#jnTt9mDkpUi7yG z)|z0acz+ zNy{pL&xI2-V%oOBh5g>d`?h~QXP0hEk*1QDG3SV(L?dB*DcMhZJz|)(8)qtQ!bSg# z#F=2^JvFBDHc8~aW_#_Kp;jk(u}$%tZBh7>=Z#9iME4T@qm1m#vM7BbzAyRp=;_+7 z#jT9hje_>T@AU-`s>rDm1H|@hFmeFT8`;z0&DXI8v0bbN8XO^UlMm0(6UPaoacZHmmN@Pv0h6h+y8E{^cI^p zh3j2u-N()YL7cJ6pn1mjv}EQAmCYP#rXKE@qDg{Rhf#^AQ*@C{MT25|s>;un9Y11( zBmj$r9k1BnNMaMlJLq*L4b>OTOA9SIH-6-XUi$`V>m#EpuLa*<3lV~Q zAsLhjQ|)oC)_f=PJX;Hr7z=YAqd;M7P1L5tOx&AEbpl+?TEXBZO+Q5qDcl~3Ms>if z5D5mrm;jIsXjQp6&=D=`1rj?y+w1pl-Gvk{-TH2mp5@l?GBny)WMpP=@*Ei-mzlbp z=m%(k^3$F<*NLpCHu42E$EdKpiZz9APn@@3iq-W@*7SUTh?I3#sMGoJ_qMwkW!G+& zYGp-ZauWF3`86nFUPrPnjfoR;7zN#9t9))9axsBhZ|HGCkA^Hl+S=QZ!6R6r8EI(T zSKtYUH~1W5Gozuc{XYE)-e7WKW@c9C*ddM@N0>#lL1~$x{r7G7n*8-SbEt}(P=QZk zdDE`Wr#HvD?xXL3D{*u6rX7z4eM4S`zLx{9Pc|zt==C2pX&+O z1s8t@8)HtnJm2WhDYV7hE6cW;HY3g`3RB-v_wV^b%TQ-NxF9E#QlZf+?W|75?M%vm zyzBaOa||EtIFYOn8ogk6!bIF_&CKTmmxvdGr({98t|(pK&auGB`3%{uD2IHQb`X1Q zn4OfpRjBi71RHS^yTnAcO0xEL=QBdFS`ID5c*VfA?bSNj?p_t=;`@kKS9mp6;eq}A z`YLsFgGCrYKkh;{-NlEUjIX1>+ILoQxj%|}Lb(i#3nIB&(>ow^NozoOLd0wC&ywet zOG@RTG+t{_Feu+rjrYR1nP$B$We&%K)o3!KYf!fV41YMre`I1}ZGPRX5= zPqFxYSPJ^Kiw#il6nLB1^)qHX$73SzQTI!mMuu*HuU8@8Vo0zR!9UUTD=(2xh41YX zO;!lDMeo zioZp23SK;7l2)iXdD_~WO`j+okor06J?uh}6t{fa^vr+Hs^vOPzPaszfk7Ti5cW7{ zR9jotBjpc52SlmCaj&;YC{vabbA@~6pZUl4Mi$Yzh3W~P{{F>Gh&sIOfjd@hOr}Ie zYt=h8XY$37yI~iNeTvw`!=vddUeiH4X)z+4hRM0AZ}7ZOttgtpIXw1`$*%u=NW^aV z5Y7~jc#9^TIBq{%l`>lv&g{JU)lkMc&G@|>(KtI{A!jd>zuLKHoEds(S-Xq$Ln&C< ze?FpizaJBC7@-Fv=ULxYenGrCnhuoh#b}BGBlfnP%!^qkb0gtrXI@=+#vRXYQDp!p zfYo=K3-Fg_@c#1|r*3Wj@upsfde5u2t3)lY5vb6$yJA4aP#<%a?MqWBBmt~&XPGjI zSB$t8yu~#)=z?0IGP$L7{alXqkKw9j`@F5p7TZ4G2IC&riM-gL0ZHZs-aPvk=Y$?m zk6tvw91ePA_=cOeuGryDPMQa1L0Y|zkGOso%laqOM1Biq$48a8C5HX5S}N-rxR#ha zd~-L1lnnc1r#15DQ-{(L2@>6DuY0*?Wbo1H-!{e3I_m!@R?pne0q1u8e%;JDv>|K- zE6It60|32hoqEKx=LAc(J&Y{&y;rKm5d1bR@-ghI?o}GOS*XNj_mcd4ZLwdx0?QZ< z?`J*ubgtpoKd0}VY3E#r1aAg?6}wn!7fnzOH*l~0HaaP#CmD2~aGm%5*Q%>Dcs5G< z^?k}{bVrA1XWCs?e1PuYIaqOm5_0CINr&{>sKc64jU=y8{Y508Vu%^LJ z};-N zll7?WK;@@J@F{!p@CUQdVr;4EG|WYfl07{$AvClG0LP%hq{J;ajN*IX-$>#ECj}?a zXEdHBJ2~GUKSLTPUn2=`Th9p`E75`@DJCzpH9lF}ZKDn+#=W74U8LlwSip!>AyURi zZoa;)U9_Wef^7E0)_t7N)N?GQ%rexA{NLBiv;C57_z0o6mtnnlCRW%W z&;7-@%rkeee?<^LaMgPg1^*ax2kKE8W{vDrnEBKqIfULC|v)LbfR{MLqG6~v? zXEDh}!JK3lC%ki62z**yN&6|~*>Q!CE!a}Jv;4b zF_AjzBhg_h{%c9z25Qf>)V%J7nV6^<-)-$VoRV#*sT$Y$?}PDNW#j$|iNxq;4bF+( znJf82|88%lQ-2;a{O6LGnBK!Fy#M}{eLFg{@9&o$-+!NCekSsNom;N@zm7)#zyJ7u xi}U|<=SZ0|lwlvf(oi{Tu)ZJvzuJC_Yb|#lv{~RJy3w_3sOqTXox61Fe*pf)jJN;* literal 0 HcmV?d00001 From 2b5ed83de35fbdee38c6d6ee803489b0ca7dd0f4 Mon Sep 17 00:00:00 2001 From: Meier Lukas Date: Tue, 17 Dec 2024 19:41:51 +0100 Subject: [PATCH 6/6] ci: adjust release pipeline for semver releases (#1679) --- .github/workflows/deployment-docker-image.yml | 120 +- .../workflows/deployment-weekly-release.yml | 2 +- .releaserc.json | 51 + package.json | 15 +- pnpm-lock.yaml | 1379 ++++++++++++++++- tooling/semver/package.json | 13 - tooling/semver/release.config.cjs | 16 - 7 files changed, 1516 insertions(+), 80 deletions(-) create mode 100644 .releaserc.json delete mode 100644 tooling/semver/package.json delete mode 100644 tooling/semver/release.config.cjs diff --git a/.github/workflows/deployment-docker-image.yml b/.github/workflows/deployment-docker-image.yml index f00513efd..f0edd9cb4 100644 --- a/.github/workflows/deployment-docker-image.yml +++ b/.github/workflows/deployment-docker-image.yml @@ -4,6 +4,8 @@ on: push: branches: - main + - beta + - dev workflow_dispatch: inputs: send-notifications: @@ -18,7 +20,7 @@ on: description: Push Docker Image permissions: - contents: write + contents: read packages: write env: @@ -30,31 +32,84 @@ env: concurrency: production jobs: + release: + name: Create tag and release + runs-on: ubuntu-latest + env: + SKIP_RELEASE: ${{ github.event_name == 'workflow_dispatch' || github.ref_name == 'dev' }} + outputs: + version: ${{ steps.read-semver.outputs.version || steps.version-fallback.outputs.version }} + + steps: + - run: echo "Skipping release for workflow_dispatch event" + if: env.SKIP_RELEASE == 'true' + # The below generated version fallback represents a normalized branch name, for example "feature/branch-name" -> "feature-branch-name" + - run: echo "version="$(echo ${{github.ref_name}} | sed 's/[^a-zA-Z0-9\-]/-/g') >> "$GITHUB_OUTPUT" + id: version-fallback + if: env.SKIP_RELEASE == 'true' && github.ref_name != 'main' && github.ref_name != 'beta' + + - name: Obtain token + if: env.SKIP_RELEASE == 'false' + id: obtainToken + uses: tibdex/github-app-token@v2 + with: + private_key: ${{ secrets.RENOVATE_MERGE_PRIVATE_KEY }} + app_id: ${{ secrets.RENOVATE_MERGE_APP_ID }} + - uses: actions/checkout@v4 + if: env.SKIP_RELEASE == 'false' + - uses: actions/setup-node@v4 + if: env.SKIP_RELEASE == 'false' + with: + node-version: 22 + - run: npm i -g pnpm + if: env.SKIP_RELEASE == 'false' + - name: Install dependencies + if: env.SKIP_RELEASE == 'false' + run: | + pnpm install + - name: Run Semantic Release + if: env.SKIP_RELEASE == 'false' + env: + GITHUB_TOKEN: ${{ steps.obtainToken.outputs.token }} + GIT_AUTHOR_NAME: "Releases Homarr" + GIT_AUTHOR_EMAIL: "175486441+homarr-releases[bot]@users.noreply.github.com" + GIT_COMMITTER_NAME: "Releases Homarr" + GIT_COMMITTER_EMAIL: "175486441+homarr-releases[bot]@users.noreply.github.com" + run: | + pnpm release + - name: Read semver output + # We read the last tag either from the created release or from the current branch, this is to rerun the deployment job for the currently released version when it failed + if: env.SKIP_RELEASE == 'false' || github.ref_name == 'main' || github.ref_name == 'beta' + id: read-semver + run: | + git fetch --tags + echo "version=$(git describe --tags --abbrev=0)" >> "$GITHUB_OUTPUT" + - name: Update dev branch + if: env.SKIP_RELEASE == 'false' + continue-on-error: true # Prevent pipeline from failing when merge fails + run: | + git fetch origin dev + git checkout dev + git pull origin dev + git merge ${{ github.ref_name }} + git push origin dev deploy: name: Deploy docker image + needs: release runs-on: ubuntu-latest + env: + NEXT_VERSION: ${{ needs.release.outputs.version }} + DEPLOY_LATEST: ${{ github.ref_name == 'main' }} + PUSH_IMAGE: ${{ github.event_name != 'workflow_dispatch' || github.events.inputs.push-image == 'true' }} steps: - - name: Discord notification - if: ${{ github.events.inputs.send-notifications != false }} - env: - DISCORD_WEBHOOK: ${{ secrets.DISCORD_WEBHOOK }} - uses: Ilshidur/action-discord@master - with: - args: "Deployment of an image has been triggered: [run ${{ github.run_number }}](<${{ github.server_url }}/${{ github.repository }}/actions/runs/${{ github.run_id }}>)" - uses: actions/checkout@v4 - - name: Get Next Version - id: semver - uses: ietf-tools/semver-action@v1 - with: - token: ${{ github.token }} - branch: dev - name: Discord notification if: ${{ github.events.inputs.send-notifications != false }} env: DISCORD_WEBHOOK: ${{ secrets.DISCORD_WEBHOOK }} uses: Ilshidur/action-discord@master with: - args: "Semver computed next tag to be ${{ steps.semver.outputs.next }}. Current is ${{ steps.semver.outputs.current }}. Building images..." + args: "Deployment of an image for version '${{env.NEXT_VERSION}}' has been triggered: [run ${{ github.run_number }}](<${{ github.server_url }}/${{ github.repository }}/actions/runs/${{ github.run_id }}>)" - name: Log in to the Container registry uses: docker/login-action@v3 with: @@ -71,48 +126,23 @@ jobs: with: images: "${{ env.REGISTRY }}/${{ env.IMAGE_NAME }}" tags: | - type=raw,value=alpha - type=raw,value=early-adopters - # tags: | - # type=raw,value=latest - # type=raw,value=${{ steps.semver.outputs.next }} - - name: Build and push + ${{ env.DEPLOY_LATEST == true && 'type=raw,value=latest' || null }} + type=raw,value=${{ env.NEXT_VERSION }} + - name: Build and maybe push id: buildPushAction uses: docker/build-push-action@v6 - if: ${{ github.events.inputs.push-image == 'true' || github.events.inputs.push-image == null }} with: platforms: linux/amd64,linux/arm64 context: . - push: true - tags: ${{ steps.meta.outputs.tags }} - labels: ${{ steps.meta.outputs.labels }} - network: host - env: - SKIP_ENV_VALIDATION: true - - name: Build - id: buildPushDryAction - uses: docker/build-push-action@v6 - if: ${{ github.events.inputs.push-image == 'false' }} - with: - platforms: linux/amd64,linux/arm64 - context: . - push: false + push: ${{ env.PUSH_IMAGE}} tags: ${{ steps.meta.outputs.tags }} labels: ${{ steps.meta.outputs.labels }} network: host env: SKIP_ENV_VALIDATION: true - name: Discord notification - if: ${{ github.events.inputs.send-notifications != false && (github.events.inputs.push-image == 'true' || github.events.inputs.push-image == null) }} env: DISCORD_WEBHOOK: ${{ secrets.DISCORD_WEBHOOK }} uses: Ilshidur/action-discord@master with: - args: "Deployment of image has completed. Image ID is '${{ steps.buildPushAction.outputs.imageid }}'." - - name: Discord notification - if: ${{ github.events.inputs.send-notifications != false && !(github.events.inputs.push-image == 'true' || github.events.inputs.push-image == null) }} - env: - DISCORD_WEBHOOK: ${{ secrets.DISCORD_WEBHOOK }} - uses: Ilshidur/action-discord@master - with: - args: "Deployment of image has completed. Image ID is '${{ steps.buildPushDryAction.outputs.imageid }}'. This was a dry run." + args: "Deployment of image has completed. Image ID is '${{ steps.buildPushAction.outputs.imageid }}'. ${{ env.PUSH_IMAGE == true && '' || 'This was a dry run' }}" diff --git a/.github/workflows/deployment-weekly-release.yml b/.github/workflows/deployment-weekly-release.yml index 9177db3cd..f658726e6 100644 --- a/.github/workflows/deployment-weekly-release.yml +++ b/.github/workflows/deployment-weekly-release.yml @@ -37,7 +37,7 @@ jobs: token: ${{ github.token }} branch: dev - name: Create pull request - run: "gh pr create --title \"chore(release): automatic release ${{ steps.semver.outputs.next }}\" --body \"**This is an automatic release**.
Manual action may be required for major bumps.
Detected change to be ``${{ steps.semver.outputs.bump }}``
Bump version from ``${{ steps.semver.outputs.current }}`` to ``${{ steps.semver.outputs.next }}``\" --base main --head dev --label automerge" + run: 'gh pr create --title "chore(release): automatic release ${{ steps.semver.outputs.next }}" --body "**This is an automatic release**.
Manual action may be required for major bumps.
Detected change to be ``${{ steps.semver.outputs.bump }}``
Bump version from ``${{ steps.semver.outputs.current }}`` to ``${{ steps.semver.outputs.next }}``" --base beta --head dev --label automerge' env: GITHUB_TOKEN: "${{ secrets.GITHUB_TOKEN }}" - name: Discord notification diff --git a/.releaserc.json b/.releaserc.json new file mode 100644 index 000000000..e2414a583 --- /dev/null +++ b/.releaserc.json @@ -0,0 +1,51 @@ +{ + "branches": [ + "main", + { + "name": "beta", + "prerelease": true, + "channel": "beta" + } + ], + "plugins": [ + [ + "@semantic-release/commit-analyzer", + { + "preset": "conventionalcommits" + } + ], + [ + "@semantic-release/release-notes-generator", + { + "preset": "conventionalcommits" + } + ], + [ + "@semantic-release/changelog", + { + "changelogFile": "CHANGELOG.md" + } + ], + [ + "@semantic-release/npm", + { + "npmPublish": false + } + ], + [ + "@semantic-release/git", + { + "assets": ["package.json", "CHANGELOG.md"], + "message": "chore(release): ${nextRelease.version} [skip ci]" + } + ], + [ + "@semantic-release/github", + { + "successComment": false, + "failComment": false, + "releaseBodyTemplate": "<%= _.truncate(nextRelease.notes, { 'length': 124000, 'omission': '' }) %>" + } + ] + ] +} diff --git a/package.json b/package.json index 987c74d7a..fa3bd9f38 100644 --- a/package.json +++ b/package.json @@ -1,7 +1,7 @@ { "name": "homarr", - "private": true, "version": "1.0.0", + "private": true, "scripts": { "build": "cross-env CI=true turbo build", "clean": "git clean -xdf node_modules", @@ -21,6 +21,7 @@ "lint:fix": "turbo lint --continue -- --fix --cache --cache-location node_modules/.cache/.eslintcache", "lint:ws": "pnpm dlx sherif@latest", "package:new": "turbo gen init", + "release": "semantic-release", "test": "cross-env NODE_ENV=development vitest run --exclude e2e --coverage.enabled ", "test:e2e": "cross-env NODE_ENV=development vitest e2e", "test:ui": "cross-env NODE_ENV=development vitest --exclude e2e --ui --coverage.enabled", @@ -30,13 +31,21 @@ "prettier": "@homarr/prettier-config", "devDependencies": { "@homarr/prettier-config": "workspace:^0.1.0", + "@semantic-release/changelog": "^6.0.3", + "@semantic-release/commit-analyzer": "^13.0.0", + "@semantic-release/git": "^10.0.1", + "@semantic-release/github": "^11.0.1", + "@semantic-release/npm": "^12.0.1", + "@semantic-release/release-notes-generator": "^14.0.1", "@turbo/gen": "^2.3.3", "@vitejs/plugin-react": "^4.3.4", "@vitest/coverage-v8": "^2.1.8", "@vitest/ui": "^2.1.8", + "conventional-changelog-conventionalcommits": "^8.0.0", "cross-env": "^7.0.3", "jsdom": "^25.0.1", "prettier": "^3.4.2", + "semantic-release": "^24.2.0", "testcontainers": "^10.16.0", "turbo": "^2.3.3", "typescript": "^5.7.2", @@ -48,9 +57,9 @@ "node": ">=22.12.0" }, "pnpm": { + "allowNonAppliedPatches": true, "patchedDependencies": { "pretty-print-error": "patches/pretty-print-error.patch" - }, - "allowNonAppliedPatches": true + } } } diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index 0f7d6ebaf..6d260927f 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -16,6 +16,24 @@ importers: '@homarr/prettier-config': specifier: workspace:^0.1.0 version: link:tooling/prettier + '@semantic-release/changelog': + specifier: ^6.0.3 + version: 6.0.3(semantic-release@24.2.0(typescript@5.7.2)) + '@semantic-release/commit-analyzer': + specifier: ^13.0.0 + version: 13.0.0(semantic-release@24.2.0(typescript@5.7.2)) + '@semantic-release/git': + specifier: ^10.0.1 + version: 10.0.1(semantic-release@24.2.0(typescript@5.7.2)) + '@semantic-release/github': + specifier: ^11.0.1 + version: 11.0.1(semantic-release@24.2.0(typescript@5.7.2)) + '@semantic-release/npm': + specifier: ^12.0.1 + version: 12.0.1(semantic-release@24.2.0(typescript@5.7.2)) + '@semantic-release/release-notes-generator': + specifier: ^14.0.1 + version: 14.0.2(semantic-release@24.2.0(typescript@5.7.2)) '@turbo/gen': specifier: ^2.3.3 version: 2.3.3(@types/node@22.10.2)(typescript@5.7.2) @@ -28,6 +46,9 @@ importers: '@vitest/ui': specifier: ^2.1.8 version: 2.1.8(vitest@2.1.8) + conventional-changelog-conventionalcommits: + specifier: ^8.0.0 + version: 8.0.0 cross-env: specifier: ^7.0.3 version: 7.0.3 @@ -37,6 +58,9 @@ importers: prettier: specifier: ^3.4.2 version: 3.4.2 + semantic-release: + specifier: ^24.2.0 + version: 24.2.0(typescript@5.7.2) testcontainers: specifier: ^10.16.0 version: 10.16.0 @@ -1862,8 +1886,6 @@ importers: specifier: ^5.7.2 version: 5.7.2 - tooling/semver: {} - tooling/typescript: {} packages: @@ -2018,6 +2040,10 @@ packages: '@clack/prompts@0.8.2': resolution: {integrity: sha512-6b9Ab2UiZwJYA9iMyboYyW9yJvAO9V753ZhS+DHKEjZRKAxPPOb7MXXu84lsPFG+vZt6FRFniZ8rXi+zCIw4yQ==} + '@colors/colors@1.5.0': + resolution: {integrity: sha512-ooWCrlZP11i8GImSjTHYHLkvFDP48nS4+204nGb1RiX/WXYHmJA2III9/e2DWVabCESdW7hBAEzHRqUn9OUVvQ==} + engines: {node: '>=0.1.90'} + '@colors/colors@1.6.0': resolution: {integrity: sha512-Ir+AOibqzrIsL6ajt3Rz3LskB7OiMVHqltZmspbW/TJuTVuyOMirVqAkjfY6JISiLHgyNqicAC8AyHHGzNd/dA==} engines: {node: '>=0.1.90'} @@ -3433,6 +3459,65 @@ packages: '@scarf/scarf@1.4.0': resolution: {integrity: sha512-xxeapPiUXdZAE3che6f3xogoJPeZgig6omHEy1rIY5WVsB3H2BHNnZH+gHG6x91SCWyQCzWGsuL2Hh3ClO5/qQ==} + '@sec-ant/readable-stream@0.4.1': + resolution: {integrity: sha512-831qok9r2t8AlxLko40y2ebgSDhenenCatLVeW/uBtnHPyhHOvG0C7TvfgecV+wHzIm5KUICgzmVpWS+IMEAeg==} + + '@semantic-release/changelog@6.0.3': + resolution: {integrity: sha512-dZuR5qByyfe3Y03TpmCvAxCyTnp7r5XwtHRf/8vD9EAn4ZWbavUX8adMtXYzE86EVh0gyLA7lm5yW4IV30XUag==} + engines: {node: '>=14.17'} + peerDependencies: + semantic-release: '>=18.0.0' + + '@semantic-release/commit-analyzer@13.0.0': + resolution: {integrity: sha512-KtXWczvTAB1ZFZ6B4O+w8HkfYm/OgQb1dUGNFZtDgQ0csggrmkq8sTxhd+lwGF8kMb59/RnG9o4Tn7M/I8dQ9Q==} + engines: {node: '>=20.8.1'} + peerDependencies: + semantic-release: '>=20.1.0' + + '@semantic-release/error@3.0.0': + resolution: {integrity: sha512-5hiM4Un+tpl4cKw3lV4UgzJj+SmfNIDCLLw0TepzQxz9ZGV5ixnqkzIVF+3tp0ZHgcMKE+VNGHJjEeyFG2dcSw==} + engines: {node: '>=14.17'} + + '@semantic-release/error@4.0.0': + resolution: {integrity: sha512-mgdxrHTLOjOddRVYIYDo0fR3/v61GNN1YGkfbrjuIKg/uMgCd+Qzo3UAXJ+woLQQpos4pl5Esuw5A7AoNlzjUQ==} + engines: {node: '>=18'} + + '@semantic-release/git@10.0.1': + resolution: {integrity: sha512-eWrx5KguUcU2wUPaO6sfvZI0wPafUKAMNC18aXY4EnNcrZL86dEmpNVnC9uMpGZkmZJ9EfCVJBQx4pV4EMGT1w==} + engines: {node: '>=14.17'} + peerDependencies: + semantic-release: '>=18.0.0' + + '@semantic-release/github@11.0.1': + resolution: {integrity: sha512-Z9cr0LgU/zgucbT9cksH0/pX9zmVda9hkDPcgIE0uvjMQ8w/mElDivGjx1w1pEQ+MuQJ5CBq3VCF16S6G4VH3A==} + engines: {node: '>=20.8.1'} + peerDependencies: + semantic-release: '>=24.1.0' + + '@semantic-release/npm@12.0.1': + resolution: {integrity: sha512-/6nntGSUGK2aTOI0rHPwY3ZjgY9FkXmEHbW9Kr+62NVOsyqpKKeP0lrCH+tphv+EsNdJNmqqwijTEnVWUMQ2Nw==} + engines: {node: '>=20.8.1'} + peerDependencies: + semantic-release: '>=20.1.0' + + '@semantic-release/release-notes-generator@14.0.2': + resolution: {integrity: sha512-ur2l2tVLBfX3fSEO2rCy2X6Kzg5S7BHGqdwTHvJrpWp4mOEN7W4K/2kWAjvfAlwMenEKjMnDIhBbxxjnP0S9hw==} + engines: {node: '>=20.8.1'} + peerDependencies: + semantic-release: '>=20.1.0' + + '@sindresorhus/is@4.6.0': + resolution: {integrity: sha512-t09vSN3MdfsyCHoFcTRCH/iUtG7OJ0CsjzB8cjAmKc/va/kIgeDI/TxsigdncE/4be734m0cvIYwNaV4i2XqAw==} + engines: {node: '>=10'} + + '@sindresorhus/merge-streams@2.3.0': + resolution: {integrity: sha512-LtoMMhxAlorcGhmFYI+LhPgbPZCkgP6ra1YL604EeF6U98pLlQ3iWIGMdWSC+vWmPBWBNgmDBAhnAobLROJmwg==} + engines: {node: '>=18'} + + '@sindresorhus/merge-streams@4.0.0': + resolution: {integrity: sha512-tlqY9xq5ukxTUZBmoOp+m61cqwQD5pHJtFY3Mn8CA8ps6yghLH/Hw8UPdqg4OLmFW3IFlcXnQNmo/dh8HzXYIQ==} + engines: {node: '>=18'} + '@socket.io/component-emitter@3.1.2': resolution: {integrity: sha512-9BCxFwvbGg/RsZK9tjXd8s4UcwR0MWeFQ1XEKIQVVvAGJyINdrqKMcTRyLoK8Rse1GjzLV9cwjWV1olXRWEXVA==} @@ -3979,6 +4064,9 @@ packages: '@types/node@22.10.2': resolution: {integrity: sha512-Xxr6BBRCAOQixvonOye19wnzyDiUtTeqldOOmj3CkeblonbccA12PFwlufvRdrpjXxqnmUaeiU5EOA+7s5diUQ==} + '@types/normalize-package-data@2.4.4': + resolution: {integrity: sha512-37i+OaWTh9qeK4LSHPsyRC7NahnGotNuZvjLSgcPzblpHB3rrCJxAOgI5gCdKm7coonsaX1Of0ILiTcnZjbfxA==} + '@types/prismjs@1.26.5': resolution: {integrity: sha512-AUZTa7hQ2KY5L7AmtSiqxlhWxb4ina0yd8hNbl4TWuqnv/pFP0nDMb3YrfSBf4hJVGLh2YEIBfKaBW/9UEl6IQ==} @@ -4005,6 +4093,9 @@ packages: '@types/react@19.0.1': resolution: {integrity: sha512-YW6614BDhqbpR5KtUYzTA+zlA7nayzJRA9ljz9CQoxthR0sDisYZLuvSMsil36t4EH/uAt8T52Xb4sVw17G+SQ==} + '@types/semver@7.5.8': + resolution: {integrity: sha512-I8EUhyrgfLrcTkzV3TSsGyl1tSuPrEDzr0yd5m90UgNxQkyDXULk3b6MlQqTCpZpNtWe1K0hzclnZkTcLBe2UQ==} + '@types/send@0.17.4': resolution: {integrity: sha512-x2EM6TJOybec7c52BX0ZspPodMsQUd5L6PRwOunVyVUhXiBSKf3AezDL8Dgvgt5o0UfKNfuA0eMLr2wLT4AiBA==} @@ -4286,6 +4377,10 @@ packages: resolution: {integrity: sha512-4I7Td01quW/RpocfNayFdFVk1qSuoh0E7JrbRJ16nH01HhKFQ88INq9Sd+nd72zqRySlr9BmDA8xlEJ6vJMrYA==} engines: {node: '>=8'} + aggregate-error@5.0.0: + resolution: {integrity: sha512-gOsf2YwSlleG6IjRYG2A7k0HmBMEo6qVNk9Bp/EaLgAJT5ngH6PXbqa4ItvnEwCm/velL5jAnQgsHsWnjhGmvw==} + engines: {node: '>=18'} + ajv-keywords@3.5.2: resolution: {integrity: sha512-5p6WTN0DdTGVQk6VjcEju19IgaHudalcfabD7yhDGeA6bcQnmL+CpveLJq/3hvfwd1aof6L386Ougkx6RfyMIQ==} peerDependencies: @@ -4301,6 +4396,10 @@ packages: resolution: {integrity: sha512-gKXj5ALrKWQLsYG9jlTRmR/xKluxHV+Z9QEwNIgCfM1/uwPMCuzVVnh5mwTd+OuBZcwSIMbqssNWRm1lE51QaQ==} engines: {node: '>=8'} + ansi-escapes@7.0.0: + resolution: {integrity: sha512-GdYO7a61mR0fOlAsvC9/rIHf7L96sBc6dEWzeOu+KAea5bZyQRPIpojrVoI4AXGJS/ycu/fBTdLrUkA4ODrvjw==} + engines: {node: '>=18'} + ansi-regex@5.0.1: resolution: {integrity: sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==} engines: {node: '>=8'} @@ -4321,6 +4420,9 @@ packages: resolution: {integrity: sha512-bN798gFfQX+viw3R7yrGWRqnrN2oRkEkUjjl4JNn4E8GxxbjtG3FbrEIIY3l8/hrwUwIeCZvi4QuOTP4MErVug==} engines: {node: '>=12'} + any-promise@1.3.0: + resolution: {integrity: sha512-7UvmKalWRt1wgjL1RrGxoSJW/0QZFIegpeGvZG9kjp8vrRu55XTHbwnqq2GpXm9uLbcuhxm3IqX9OB4MZR1b2A==} + apg-lite@1.0.4: resolution: {integrity: sha512-B32zCN3IdHIc99Vy7V9BaYTUzLeRA8YXYY1aQD1/5I2aqIrO0coi4t6hJPqMisidlBxhyME8UexkHt31SlR6Og==} @@ -4349,6 +4451,9 @@ packages: argparse@2.0.1: resolution: {integrity: sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q==} + argv-formatter@1.0.0: + resolution: {integrity: sha512-F2+Hkm9xFaRg+GkaNnbwXNDV5O6pnCFEmqyhvfC/Ic5LbgOWjJh3L+mN/s91rxVL3znE7DYVpW0GJFT+4YBgWw==} + aria-query@5.3.2: resolution: {integrity: sha512-COROpnaoap1E2F000S62r6A60uHZnmlvomhfyT2DlTcrY1OrBKn2UhH7qn5wTC9zMvD0AY7csdPSNwKP+7WiQw==} engines: {node: '>= 0.4'} @@ -4357,6 +4462,9 @@ packages: resolution: {integrity: sha512-ahC5W1xgou+KTXix4sAO8Ki12Q+jf4i0+tmk3sC+zgcynshkHxzpXdImBehiUYKKKDwvfFiJl1tZt6ewscS1Mg==} engines: {node: '>= 0.4'} + array-ify@1.0.0: + resolution: {integrity: sha512-c5AMf34bKdvPhQ7tBGhqkgKNUzMr4WUs+WDtC2ZUGOUncbxKMTvqxYctiseW3+L4bA8ec+GcZ6/A/FW4m8ukng==} + array-includes@3.1.8: resolution: {integrity: sha512-itaWrbYbqpGXkGhZPGUulwnhVf5Hpy1xiCFsGqyIGglbBxmG5vSjxQen3/WGOjPpNEv1RtBLKxbmVXm8HpJStQ==} engines: {node: '>= 0.4'} @@ -4600,9 +4708,17 @@ packages: resolution: {integrity: sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==} engines: {node: '>=10'} + chalk@5.3.0: + resolution: {integrity: sha512-dLitG79d+GV1Nb/VYcCDFivJeK1hiukt9QjRNVOsUtTy1rR1YJsmpGGTZ3qJos+uw7WmWF4wUwBd9jxjocFC2w==} + engines: {node: ^12.17.0 || ^14.13 || >=16.0.0} + change-case@3.1.0: resolution: {integrity: sha512-2AZp7uJZbYEzRPsFoa+ijKdvp9zsrnnt6+yFokfwEpeJm0xuJDVoxiRCAaTzyJND8GJkofo2IcKWaUZ/OECVzw==} + char-regex@1.0.2: + resolution: {integrity: sha512-kWWXztvZ5SBQV+eRgKFeh8q5sLuZY2+8WUIzlxWVTg+oGwY14qylx1KbKzHd8P6ZYkAg0xyIDU9JMHhyJMZ1jw==} + engines: {node: '>=10'} + character-entities-legacy@1.1.4: resolution: {integrity: sha512-3Xnr+7ZFS1uxeiUDvV02wQ+QDbc55o97tIV5zHScSPJpcLm/r0DFPcoY3tYRp+VZukxuMeKgXYmsXQHO05zQeA==} @@ -4651,6 +4767,10 @@ packages: resolution: {integrity: sha512-4diC9HaTE+KRAMWhDhrGOECgWZxoevMc5TlkObMqNSsVU62PYzXZ/SMTjzyGAFF1YusgxGcSWTEXBhp0CPwQ1A==} engines: {node: '>=6'} + clean-stack@5.2.0: + resolution: {integrity: sha512-TyUIUJgdFnCISzG5zu3291TAsE77ddchd0bepon1VVQrKLGKFED4iXFEDQ24mIPdPBbyE16PK3F8MYE1CmcBEQ==} + engines: {node: '>=14.16'} + cli-boxes@2.2.1: resolution: {integrity: sha512-y4coMcylgSCdVinjiDBuR8PCC2bLjyGTwEmPb9NHR/QaNU6EUOXcTY/s6VjGMD6ENSEaeQYHCY0GNGS5jfMwPw==} engines: {node: '>=6'} @@ -4663,10 +4783,19 @@ packages: resolution: {integrity: sha512-q/CIxOggmzAw/67QYS4j1bMo72IpC+dAlswZl8xHxp8XvmWS97x3Q30pWNXq8mg0pZLSJwIFWZpUWTfcF119wA==} hasBin: true + cli-highlight@2.1.11: + resolution: {integrity: sha512-9KDcoEVwyUXrjcJNvHD0NFc/hiwe/WPVYIleQh2O1N2Zro5gWJZ/K+3DGn8w8P/F6FxOgzyC5bxDyHIgCSPhGg==} + engines: {node: '>=8.0.0', npm: '>=5.0.0'} + hasBin: true + cli-spinners@2.9.2: resolution: {integrity: sha512-ywqV+5MmyL4E7ybXgKys4DugZbX0FC6LnwrhjuykIjnK9k8OQacQ7axGKnjDXWNhns0xot3bZI5h55H8yo9cJg==} engines: {node: '>=6'} + cli-table3@0.6.5: + resolution: {integrity: sha512-+W/5efTR7y5HRD7gACw9yQjqMVvEMLBHmboM/kPWam+H+Hmyrgjh6YncVKK122YZkXrLudzTuAukUw9FnMf7IQ==} + engines: {node: 10.* || >= 12.*} + cli-width@3.0.0: resolution: {integrity: sha512-FxqpkPPwu1HjuN93Omfm4h8uIanXofW0RxVEW3k5RKx+mJJYSthzNhp32Kzxxy3YAEZ/Dc/EWN1vZRY0+kOhbw==} engines: {node: '>= 10'} @@ -4674,6 +4803,9 @@ packages: client-only@0.0.1: resolution: {integrity: sha512-IV3Ou0jSMzZrd3pZ48nLkT9DA7Ag1pnPzaiQhpW7c3RbcqqzvzzVu+L8gfqMp/8IM2MQtSiqaCxrrcfu8I8rMA==} + cliui@7.0.4: + resolution: {integrity: sha512-OcRE68cOsVMXp1Yvonl/fzkQOyjLSu/8bhPDfQt0e0/Eb283TKP20Fs2MqoPsr9SwA595rRCA+QMzYc9nBP+JQ==} + cliui@8.0.1: resolution: {integrity: sha512-BSeNnyus75C4//NQ9gQt1/csTXyo/8Sb+afLAkzAptFuMsod9HFokGNudZpi/oQV73hnVK+sR+5PVRMd+Dr7YQ==} engines: {node: '>=12'} @@ -4734,6 +4866,9 @@ packages: commander@2.20.3: resolution: {integrity: sha512-GpVkmM8vF2vQUkj2LvZmD35JxeJOLCwJ9cUkugyk2nuhbv3+mJvpLYYt+0+USMxE+oj+ey/lJEnhZw75x/OMcQ==} + compare-func@2.0.0: + resolution: {integrity: sha512-zHig5N+tPWARooBnb0Zx1MFcdfpyJrfTJ3Y5L+IFvUm8rM74hHz66z0gw0x4tijh5CorKkKUCnW82R2vmpeCRA==} + compress-commons@6.0.2: resolution: {integrity: sha512-6FqVXeETqWPoGcfzrXb37E50NP0LXT8kAMu5ooZayhWWdgEY4lBEEcbQNXtkuKQsGduxiIcI4gOTsxTmuq/bSg==} engines: {node: '>= 14'} @@ -4763,6 +4898,32 @@ packages: constant-case@2.0.0: resolution: {integrity: sha512-eS0N9WwmjTqrOmR3o83F5vW8Z+9R1HnVz3xmzT2PMFug9ly+Au/fxRWlEBSb6LcZwspSsEn9Xs1uw9YgzAg1EQ==} + conventional-changelog-angular@8.0.0: + resolution: {integrity: sha512-CLf+zr6St0wIxos4bmaKHRXWAcsCXrJU6F4VdNDrGRK3B8LDLKoX3zuMV5GhtbGkVR/LohZ6MT6im43vZLSjmA==} + engines: {node: '>=18'} + + conventional-changelog-conventionalcommits@8.0.0: + resolution: {integrity: sha512-eOvlTO6OcySPyyyk8pKz2dP4jjElYunj9hn9/s0OB+gapTO8zwS9UQWrZ1pmF2hFs3vw1xhonOLGcGjy/zgsuA==} + engines: {node: '>=18'} + + conventional-changelog-writer@8.0.0: + resolution: {integrity: sha512-TQcoYGRatlAnT2qEWDON/XSfnVG38JzA7E0wcGScu7RElQBkg9WWgZd1peCWFcWDh1xfb2CfsrcvOn1bbSzztA==} + engines: {node: '>=18'} + hasBin: true + + conventional-commits-filter@5.0.0: + resolution: {integrity: sha512-tQMagCOC59EVgNZcC5zl7XqO30Wki9i9J3acbUvkaosCT6JX3EeFwJD7Qqp4MCikRnzS18WXV3BLIQ66ytu6+Q==} + engines: {node: '>=18'} + + conventional-commits-parser@6.0.0: + resolution: {integrity: sha512-TbsINLp48XeMXR8EvGjTnKGsZqBemisPoyWESlpRyR8lif0lcwzqz+NMtYSj1ooF/WYjSuu7wX0CtdeeMEQAmA==} + engines: {node: '>=18'} + hasBin: true + + convert-hrtime@5.0.0: + resolution: {integrity: sha512-lOETlkIeYSJWcbbcvjRKGxVMXJR+8+OQb/mTPbA4ObPMytYIsUbuOE0Jzy60hjARYszq1id0j8KgVhC+WGZVTg==} + engines: {node: '>=12'} + convert-source-map@2.0.0: resolution: {integrity: sha512-Kvp459HrV2FEJ1CAsi1Ku+MY3kasH19TFykTz2xWmMeq6bk2NU3XXvfJ+Q61m0xktWwt+1HSYf3JZsTms3aRJg==} @@ -4802,6 +4963,15 @@ packages: resolution: {integrity: sha512-KIHbLJqu73RGr/hnbrO9uBeixNGuvSQjul/jdFvS/KFSIH1hWVd1ng7zOHx+YrEfInLG7q4n6GHQ9cDtxv/P6g==} engines: {node: '>= 0.10'} + cosmiconfig@9.0.0: + resolution: {integrity: sha512-itvL5h8RETACmOTFc4UfIyB2RfEHi71Ax6E/PivVxq9NseKbOWpeyHEOIbmAw1rs8Ak0VursQNww7lf7YtUwzg==} + engines: {node: '>=14'} + peerDependencies: + typescript: '>=4.9.5' + peerDependenciesMeta: + typescript: + optional: true + cpu-features@0.0.10: resolution: {integrity: sha512-9IkYqtX3YHPCzoVg1Py+o9057a3i0fp7S530UWokCSaFVTc7CwXPRiOjRjBQQ18ZCNafx78YfnG+HALxtVmOGA==} engines: {node: '>=10.0.0'} @@ -4844,6 +5014,10 @@ packages: resolution: {integrity: sha512-v1plID3y9r/lPhviJ1wrXpLeyUIGAZ2SHNYTEapm7/8A9nLPoyvVp3RK/EPFqn5kEznyWgYZNsRtYYIWbuG8KA==} engines: {node: '>=8'} + crypto-random-string@4.0.0: + resolution: {integrity: sha512-x8dy3RnvYdlUcPOjkEHqozhiwzKNSq7GcPuXFbnyMOCHxX8V3OgIg/pYuabl2sbUPfIJaeAQB7PMOK8DFIdoRA==} + engines: {node: '>=12'} + css.escape@1.5.1: resolution: {integrity: sha512-YUifsXXuknHlUsmlgyY0PKzgPOr7/FjCePfHNt0jxm83wHZi44VDMQ7/fGNkjY3/jV1MC+1CmZbaHzugyeRtpg==} @@ -5162,6 +5336,9 @@ packages: drizzle-orm: '>=0.36.0' zod: '>=3.0.0' + duplexer2@0.1.4: + resolution: {integrity: sha512-asLFVfWWtJ90ZyOUHMqk7/S2w2guQKxUI2itj3d92ADHhxUSbCMGi1f1cBcJ7xM1To+pE/Khbwo1yuNbMEPKeA==} + eastasianwidth@0.2.0: resolution: {integrity: sha512-I88TYZWc9XiYHRQ4/3c5rjjfgkjhLyW2luGIheGERbNQ6OY7yTybanSpDXZa8y7VUP9YmDcYa+eyq4ca7iLqWA==} @@ -5177,6 +5354,9 @@ packages: emoji-regex@9.2.2: resolution: {integrity: sha512-L18DaJsXSUk2+42pv8mLs5jJT2hqFkFE4j21wOmgbUqsZ2hL72NsUU785g9RXgo3s0ZNgVl42TiHp3ZtOv/Vyg==} + emojilib@2.4.0: + resolution: {integrity: sha512-5U0rVMU5Y2n2+ykNLQqMoqklN9ICBT/KsvC1Gz6vqHbz2AXXGkG+Pm5rMWk/8Vjrr/mY9985Hi8DYzn1F09Nyw==} + emojis-list@3.0.0: resolution: {integrity: sha512-/kyM18EfinwXZbno9FyUGeFh87KC8HRQBQGildHZbEuRyWFOmv1U10o9BBp8XVZDVNNuQKyIGIu5ZYAAXJ0V2Q==} engines: {node: '>= 4'} @@ -5206,6 +5386,21 @@ packages: resolution: {integrity: sha512-V0hjH4dGPh9Ao5p0MoRY6BVqtwCjhz6vI5LT8AJ55H+4g9/4vbHx1I54fS0XuclLhDHArPQCiMjDxjaL8fPxhw==} engines: {node: '>=0.12'} + env-ci@11.1.0: + resolution: {integrity: sha512-Z8dnwSDbV1XYM9SBF2J0GcNVvmfmfh3a49qddGIROhBoVro6MZVTji15z/sJbQ2ko2ei8n988EU1wzoLU/tF+g==} + engines: {node: ^18.17 || >=20.6.1} + + env-paths@2.2.1: + resolution: {integrity: sha512-+h1lkLKhZMTYjog1VEpJNG7NZJWcuc2DDk/qsqSTRRCOXiLjeQ1d1/udrUGhqMxUgAlwKNZ0cf2uqan5GLuS2A==} + engines: {node: '>=6'} + + environment@1.1.0: + resolution: {integrity: sha512-xUtoPkMggbz0MPyPiIWr1Kp4aeWJjDZ6SMvURhimjdZgsRuDplF5/s9hcgGhyXMhs+6vpnuoiZ2kFiu3FMnS8Q==} + engines: {node: '>=18'} + + error-ex@1.3.2: + resolution: {integrity: sha512-7dFHNmqeFSEt2ZBsCriorKnn3Z2pj+fd9kmI6QoWw4//DL+icEBfc0U7qJCisqrTsKTjw4fNFy2pW9OqStD84g==} + es-abstract@1.23.3: resolution: {integrity: sha512-e+HfNH61Bj1X9/jLc5v1owaLYuHdeHHSQlkhCBiTK8rBvKaULl/beGMxwrMXjpYrv4pz22BlY570vVePA2ho4A==} engines: {node: '>= 0.4'} @@ -5286,6 +5481,10 @@ packages: resolution: {integrity: sha512-TtpcNJ3XAzx3Gq8sWRzJaVajRs0uVxA2YAkdb1jm2YkPz4G6egUFAyA3n5vtEIZefPk5Wa4UXbKuS5fKkJWdgA==} engines: {node: '>=10'} + escape-string-regexp@5.0.0: + resolution: {integrity: sha512-/veY75JbMK4j1yjvuUxuVsiS/hr/4iHs9FTT6cgTexxdE0Ly/glccBAkloH/DofkjRbZU3bnoj38mOmhkZ0lHw==} + engines: {node: '>=12'} + escodegen@2.1.0: resolution: {integrity: sha512-2NlIDTwUWJN0mRPQOdtQBzbUHvdGY2P1VXSyU83Q3xKxM7WHX2Ql8dKq782Q9TgQUNOLEzEYu9bzLNj1q88I5w==} engines: {node: '>=6.0'} @@ -5432,6 +5631,14 @@ packages: resolution: {integrity: sha512-8uSpZZocAZRBAPIEINJj3Lo9HyGitllczc27Eh5YYojjMFMn8yHMDMaUHE2Jqfq05D/wucwI4JGURyXt1vchyg==} engines: {node: '>=10'} + execa@8.0.1: + resolution: {integrity: sha512-VyhnebXciFV2DESc+p6B+y0LjSm0krU4OgJN44qFAhBY0TJ+1V61tYD2+wHusZ6F9n5K+vl8k0sTy7PEfV4qpg==} + engines: {node: '>=16.17'} + + execa@9.5.2: + resolution: {integrity: sha512-EHlpxMCpHWSAh1dgS6bVeoLAXGnJNdR93aabr4QCGbzOM73o5XmRfM/e5FUqsw3aagP8S8XEWUWFAxnRBnAF0Q==} + engines: {node: ^18.19.0 || >=20.5.0} + expand-template@2.0.3: resolution: {integrity: sha512-XYfuKMvj4O35f/pOXLObndIRvyQ+/+6AhODh+OKWj9S9498pHHn/IMszH+gt0fBCRWMNfk1ZSp5x3AifmnI2vg==} engines: {node: '>=6'} @@ -5499,10 +5706,18 @@ packages: fflate@0.8.2: resolution: {integrity: sha512-cPJU47OaAoCbg0pBvzsgpTPhmhqI5eJjh/JIu8tPj5q+T7iLvW/JAYUqmE7KOB4R1ZyEhzBaIQpQpardBF5z8A==} + figures@2.0.0: + resolution: {integrity: sha512-Oa2M9atig69ZkfwiApY8F2Yy+tzMbazyvqv21R0NsSC8floSOC09BbT1ITWAdoMGQvJ/aZnR1KMwdx9tvHnTNA==} + engines: {node: '>=4'} + figures@3.2.0: resolution: {integrity: sha512-yaduQFRKLXYOGgEn6AZau90j3ggSOyiqXU0F9JZfeXYhNa+Jk4X+s45A2zg5jns87GAFa34BBm2kXw4XpNcbdg==} engines: {node: '>=8'} + figures@6.1.0: + resolution: {integrity: sha512-d+l3qxjSesT4V7v2fh+QnmFnUWv9lSpjarhShNTgBOfA0ttejbQUAlHLitbjkoRiDulW0OPoQPYIGhIC8ohejg==} + engines: {node: '>=18'} + file-entry-cache@8.0.0: resolution: {integrity: sha512-XXTUwCvisa5oacNGRP9SfNtYBNAMi+RPwBFmblZEF7N7swHYQS6/Zfk7SRwx4D5j3CH211YNRco1DEMNVfZCnQ==} engines: {node: '>=16.0.0'} @@ -5514,10 +5729,22 @@ packages: resolution: {integrity: sha512-YsGpe3WHLK8ZYi4tWDg2Jy3ebRz2rXowDxnld4bkQB00cc/1Zw9AWnC0i9ztDJitivtQvaI9KaLyKrc+hBW0yg==} engines: {node: '>=8'} + find-up-simple@1.0.0: + resolution: {integrity: sha512-q7Us7kcjj2VMePAa02hDAF6d+MzsdsAWEwYyOpwUtlerRBkOEPBCRZrAV4XfcSN8fHAgaD0hP7miwoay6DCprw==} + engines: {node: '>=18'} + + find-up@2.1.0: + resolution: {integrity: sha512-NWzkk0jSJtTt08+FBFMvXoeZnOJD+jTtsRmBYbAIzJdX6l7dLgR7CTubCM5/eDdPUBvLCeVasP1brfVR/9/EZQ==} + engines: {node: '>=4'} + find-up@5.0.0: resolution: {integrity: sha512-78/PXT1wlLLDgTzDs7sjq9hzz0vXD+zn+7wypEe4fXQxCmdmqfGsEPQxmiCSQI3ajFV91bVSsvNtrJRiW6nGng==} engines: {node: '>=10'} + find-versions@6.0.0: + resolution: {integrity: sha512-2kCCtc+JvcZ86IGAz3Z2Y0A1baIz9fL31pH/0S1IqZr9Iwnjq8izfPtrCyQKO6TLMPELLsQMre7VDqeIKCsHkA==} + engines: {node: '>=18'} + flag-icons@7.2.3: resolution: {integrity: sha512-X2gUdteNuqdNqob2KKTJTS+ZCvyWeLCtDz9Ty8uJP17Y4o82Y+U/Vd4JNrdwTAjagYsRznOn9DZ+E/Q52qbmqg==} @@ -5555,6 +5782,9 @@ packages: resolution: {integrity: sha512-wzsgA6WOq+09wrU1tsJ09udeR/YZRaeArL9e1wPbFg3GG2yDnC2ldKpxs4xunpFF9DgqCqOIra3bc1HWrJ37Ww==} engines: {node: '>=0.4.x'} + from2@2.3.0: + resolution: {integrity: sha512-OMcX/4IC/uqEPVgGeyfN22LJk6AZrMkRZHxcHBMBvHScDGgwTm2GT2Wkgtocyd3JfZffjj2kYUDXXII0Fk9W0g==} + fs-constants@1.0.0: resolution: {integrity: sha512-y6OAwoSIf7FyjMIv94u+b5rdheZEjzR63GTyZJm5qh4Bi+2YgwLCcI/fPFZkL5PSixOt6ZNKm+w+Hfp/Bciwow==} @@ -5586,6 +5816,10 @@ packages: function-bind@1.1.2: resolution: {integrity: sha512-7XHNxH7qX9xG5mIwxkhumTox/MIRNcOgDrxWsMt2pAr23WHp6MrRlN7FBSFpCpr+oVO0F744iUgR82nJMfG2SA==} + function-timeout@1.0.2: + resolution: {integrity: sha512-939eZS4gJ3htTHAldmyyuzlrD58P03fHG49v2JfFXbV6OhvZKRC9j2yAtdHw/zrp2zXHuv05zMIy40F0ge7spA==} + engines: {node: '>=18'} + function.prototype.name@1.1.6: resolution: {integrity: sha512-Z5kx79swU5P27WEayXM1tBi5Ze/lbIyiNgU3qyXUOf9b2rgXYyF9Dy9Cx+IQv/Lc8WCG6L82zwUPpSS9hGehIg==} engines: {node: '>= 0.4'} @@ -5629,6 +5863,18 @@ packages: resolution: {integrity: sha512-ts6Wi+2j3jQjqi70w5AlN8DFnkSwC+MqmxEzdEALB2qXZYV3X/b1CTfgPLGJNMeAWxdPfU8FO1ms3NUfaHCPYg==} engines: {node: '>=10'} + get-stream@7.0.1: + resolution: {integrity: sha512-3M8C1EOFN6r8AMUhwUAACIoXZJEOufDU5+0gFFN5uNs6XYOralD2Pqkl7m046va6x77FwposWXbAhPPIOus7mQ==} + engines: {node: '>=16'} + + get-stream@8.0.1: + resolution: {integrity: sha512-VaUJspBffn/LMCJVoMvSAdmscJyS1auj5Zulnn5UoYcY531UWmdwhRWkcGKnGU93m5HSXP9LP2usOryrBtQowA==} + engines: {node: '>=16'} + + get-stream@9.0.1: + resolution: {integrity: sha512-kVCxPF3vQM/N0B1PmoqVUqgHP+EeVjmZSQn+1oCRPxd2P21P2F19lIgbR3HBosbB1PUhOAoctJnfEn2GbN2eZA==} + engines: {node: '>=18'} + get-symbol-description@1.0.2: resolution: {integrity: sha512-g0QYk1dZBxGwk+Ngc+ltRH2IBp2f7zBkBMBJZCDerh6EhlhSR6+9irMCuT/09zD6qkarHUSn529sK/yL4S27mg==} engines: {node: '>= 0.4'} @@ -5643,6 +5889,9 @@ packages: git-hooks-list@3.1.0: resolution: {integrity: sha512-LF8VeHeR7v+wAbXqfgRlTSX/1BJR9Q1vEMR8JAz1cEg6GX07+zyj3sAdDvYjj/xnlIfVuGgj4qBei1K3hKH+PA==} + git-log-parser@1.2.1: + resolution: {integrity: sha512-PI+sPDvHXNPl5WNOErAK05s3j0lgwUzMN6o8cyQrDaKfT3qd7TmNJKeXX+SknI5I0QhG5fVPAEwSY4tRGDtYoQ==} + github-from-package@0.0.0: resolution: {integrity: sha512-SyHy3T1v2NUXn29OsWdxmK6RwHD+vkj3v8en8AOBZ1wBQ/hCAQ5bAQTD02kW4W9tUp/3Qh6J8r9EvntiyCmOOw==} @@ -5698,6 +5947,10 @@ packages: resolution: {integrity: sha512-7dUi7RvCoT/xast/o/dLN53oqND4yk0nsHkhRgn9w65C4PofCLOoJ39iSOg+qVDdWQPIEj+eszMHQ+aLVwwQSg==} engines: {node: '>=8'} + globby@14.0.2: + resolution: {integrity: sha512-s3Fq41ZVh7vbbe2PN3nrW7yC7U7MFVc5c98/iTl9c2GawNMKx/J648KQRW6WKkuU8GIbbh2IXfIRQjOZnXcTnw==} + engines: {node: '>=18'} + globrex@0.1.2: resolution: {integrity: sha512-uHJgbwAMwNFf5mLst7IWLNg14x1CkeqglJb/K3doi4dw6q2IvAAmM/Y81kevy83wP+Sst+nutFTYOGg3d1lsxg==} @@ -5784,6 +6037,18 @@ packages: resolution: {integrity: sha512-6NGwvttY1+HAFii08VYiEKI6ETPAFbpLntpm2M/MogEsAFWdZV74UNT+2M4bmqX90cIQhjlpBSP+tO+CfB0uww==} engines: {node: '>=16.0.0'} + hook-std@3.0.0: + resolution: {integrity: sha512-jHRQzjSDzMtFy34AGj1DN+vq54WVuhSvKgrHf0OMiFQTwDD4L/qqofVEWjLOBMTn5+lCD3fPg32W9yOfnEJTTw==} + engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0} + + hosted-git-info@7.0.2: + resolution: {integrity: sha512-puUZAUKT5m8Zzvs72XWy3HtvVbTWljRE66cP60bxJzAqf2DgICo7lYTY2IHUmLnNpjYvw5bvmoHvPc0QO2a62w==} + engines: {node: ^16.14.0 || >=18.0.0} + + hosted-git-info@8.0.2: + resolution: {integrity: sha512-sYKnA7eGln5ov8T8gnYlkSOxFJvywzEx9BueN6xo/GKO8PGiI6uK6xx+DIGe45T3bdVjLAQDQW1aicT8z8JwQg==} + engines: {node: ^18.17.0 || >=20.5.0} + html-encoding-sniffer@4.0.0: resolution: {integrity: sha512-Y22oTqIU4uuPgEemfz7NDJz6OeKf12Lsu+QC+s3BVpda64lTiMYCyGwg5ki4vFxkMwQdeZDl2adZoqUgdFuTgQ==} engines: {node: '>=18'} @@ -5814,6 +6079,14 @@ packages: resolution: {integrity: sha512-B4FFZ6q/T2jhhksgkbEW3HBvWIfDW85snkQgawt07S7J5QXTk6BkNV+0yAeZrM5QpMAdYlocGoljn0sJ/WQkFw==} engines: {node: '>=10.17.0'} + human-signals@5.0.0: + resolution: {integrity: sha512-AXcZb6vzzrFAUE61HnN4mpLqd/cSIwNQjtNWR0euPm6y0iqx3G4gOXaIDdtdDwZmhwe82LA6+zinmW4UBWVePQ==} + engines: {node: '>=16.17.0'} + + human-signals@8.0.0: + resolution: {integrity: sha512-/1/GPCpDUCCYwlERiYjxoczfP0zfvZMU/OWgQPMya9AbAE24vseigFdhAMObpc8Q4lc/kjutPfUddDYyAmejnA==} + engines: {node: '>=18.18.0'} + iconv-lite@0.4.24: resolution: {integrity: sha512-v3MXnZAcvnywkTUEZomIActle7RXXeedOR31wwl7VlyoXO4Qi9arvSenNQWne1TcRwhCL1HwLI21bEqdpj8/rA==} engines: {node: '>=0.10.0'} @@ -5840,10 +6113,17 @@ packages: resolution: {integrity: sha512-veYYhQa+D1QBKznvhUHxb8faxlrwUnxseDAbAp457E0wLNio2bOSKnjYDhMj+YiAq61xrMGhQk9iXVk5FzgQMw==} engines: {node: '>=6'} + import-from-esm@1.3.4: + resolution: {integrity: sha512-7EyUlPFC0HOlBDpUFGfYstsU7XHxZJKAAMzCT8wZ0hMW7b+hG51LIKTDcsgtz8Pu6YC0HqRVbX+rVUtsGMUKvg==} + engines: {node: '>=16.20'} + import-lazy@2.1.0: resolution: {integrity: sha512-m7ZEHgtw69qOGw+jwxXkHlrlIPdTGkyh66zXZ1ajZbxkDBNjSY/LGbmjc7h0s2ELsUDTAhFr55TrPSSqJGPG0A==} engines: {node: '>=4'} + import-meta-resolve@4.1.0: + resolution: {integrity: sha512-I6fiaX09Xivtk+THaMfAwnA3MVA5Big1WHF1Dfx9hFuvNIWpXnorlkzhcQf6ehrqQiiZECRt1poOAkPmer3ruw==} + imurmurhash@0.1.4: resolution: {integrity: sha512-JmXMZ6wuvDmLiHEml9ykzqO6lwFbof0GG4IkcGaENdCRDDmMVnny7s5HsIgHCbaq0w2MyPhDqkhTUgS2LU2PHA==} engines: {node: '>=0.8.19'} @@ -5852,6 +6132,14 @@ packages: resolution: {integrity: sha512-EdDDZu4A2OyIK7Lr/2zG+w5jmbuk1DVBnEwREQvBzspBJkCEbRa8GxU1lghYcaGJCnRWibjDXlq779X1/y5xwg==} engines: {node: '>=8'} + indent-string@5.0.0: + resolution: {integrity: sha512-m6FAo/spmsW2Ab2fU35JTYwtOKa2yAwXSwgjSv1TJzh4Mh7mC3lzAOVLBprb72XsTrgkEIsl7YrFNAiDiRhIGg==} + engines: {node: '>=12'} + + index-to-position@0.1.2: + resolution: {integrity: sha512-MWDKS3AS1bGCHLBA2VLImJz42f7bJh8wQsTGCzI3j519/CASStoDONUBVz2I/VID0MpiX3SGSnbOD2xUalbE5g==} + engines: {node: '>=18'} + inflation@2.1.0: resolution: {integrity: sha512-t54PPJHG1Pp7VQvxyVCJ9mBbjG3Hqryges9bXoOO6GExCPa+//i/d5GSuFtpx3ALLd7lgIAur6zrIlBQyJuMlQ==} engines: {node: '>= 0.8.0'} @@ -5885,6 +6173,10 @@ packages: intl-messageformat@10.7.1: resolution: {integrity: sha512-xQuJW2WcyzNJZWUu5xTVPOmNSA1Sowuu/NKFdUid5Fxx/Yl6/s4DefTU/y7zy+irZLDmFGmTLtnM8FqpN05wlA==} + into-stream@7.0.0: + resolution: {integrity: sha512-2dYz766i9HprMBasCMvHMuazJ7u4WzhJwo5kb3iPSiW/iRYV6uPari3zHoqZlnuaR7V1bEiNMxikhp37rdBXbw==} + engines: {node: '>=12'} + invariant@2.2.4: resolution: {integrity: sha512-phJfQVBuaJM5raOpJjSfkiD6BpbCE4Ns//LaXl6wGYtUBY83nWS6Rf9tXm2e8VaK60JEjYldbPif/A2B1C2gNA==} @@ -5909,6 +6201,9 @@ packages: resolution: {integrity: sha512-wcjaerHw0ydZwfhiKbXJWLDY8A7yV7KhjQOpb83hGgGfId/aQa4TOvwyzn2PuswW2gPCYEL/nEAiSVpdOj1lXw==} engines: {node: '>= 0.4'} + is-arrayish@0.2.1: + resolution: {integrity: sha512-zz06S8t0ozoDXMG+ube26zeCTNXcKIPJZJi8hBrF4idCLms4CG9QtK7qBl1boi5ODzFpjswb5JPmHCbMpjaYzg==} + is-arrayish@0.3.2: resolution: {integrity: sha512-eVRqCvVlZbuw3GrM63ovNSNAeA1K16kaR/LRY/92w0zxQ5/1YzwblUX652i4Xs9RwAGjW9d9y6X88t8OaAJfWQ==} @@ -6040,6 +6335,14 @@ packages: resolution: {integrity: sha512-hFoiJiTl63nn+kstHGBtewWSKnQLpyb155KHheA1l39uvtO9nWIop1p3udqPcUd/xbF1VLMO4n7OI6p7RbngDg==} engines: {node: '>=8'} + is-stream@3.0.0: + resolution: {integrity: sha512-LnQR4bZ9IADDRSkvpqMGvt/tEJWclzklNgSw48V5EAaAeDd6qGvN8ei6k5p0tvxSR171VmGyHuTiAOfxAbr8kA==} + engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0} + + is-stream@4.0.1: + resolution: {integrity: sha512-Dnz92NInDqYckGEUJv689RbRiTSEHCQ7wOVeALbkOz999YpqT46yMRIGtSNl2iCL1waAZSx40+h59NV/EwzV/A==} + engines: {node: '>=18'} + is-string@1.0.7: resolution: {integrity: sha512-tE2UXzivje6ofPW7l23cjDOMa09gb7xlAqG6jG5ej6uPV32TlWP3NKPigtaGeHNu9fohccRYvIiZMfOOnOYUtg==} engines: {node: '>= 0.4'} @@ -6059,6 +6362,10 @@ packages: resolution: {integrity: sha512-knxG2q4UC3u8stRGyAVJCOdxFmv5DZiRcdlIaAQXAbSfJya+OhopNotLQrstBhququ4ZpuKbDc/8S6mgXgPFPw==} engines: {node: '>=10'} + is-unicode-supported@2.1.0: + resolution: {integrity: sha512-mE00Gnza5EEB3Ds0HfMyllZzbBrmLOX3vfWoj9A9PEnTfratQ/BcaJOuMhnkhjXvb2+FkY3VuHqtAGpTPmglFQ==} + engines: {node: '>=18'} + is-upper-case@1.1.2: resolution: {integrity: sha512-GQYSJMgfeAmVwh9ixyk888l7OIhNAGKtY6QA+IrWlu9MDTCaXmeozOZ2S9Knj7bQwBO/H6J2kb+pbyTUiMNbsw==} @@ -6096,6 +6403,10 @@ packages: isomorphic-fetch@3.0.0: resolution: {integrity: sha512-qvUtwJ3j6qwsF3jLxkZ72qCgjMysPzDfeV240JHiGZsANBYd+EEuu35v7dfrJ9Up0Ak07D7GGSkGhCHTqg/5wA==} + issue-parser@7.0.1: + resolution: {integrity: sha512-3YZcUUR2Wt1WsapF+S/WiA2WmlW0cWAoPccMqne7AxEBhCdFeTPjfv/Axb8V2gyCgY3nRw+ksZ3xSUX+R47iAg==} + engines: {node: ^18.17 || >=20.6.1} + istanbul-lib-coverage@3.2.2: resolution: {integrity: sha512-O8dpsF+r0WV/8MNRKfnmrtCWhuKjxrq2w+jpzBL5UZKTi2LeVWnWOmWRxFlesJONmc+wLAGvKQZEOanko0LFTg==} engines: {node: '>=8'} @@ -6127,6 +6438,10 @@ packages: resolution: {integrity: sha512-cub8rahkh0Q/bw1+GxP7aeSe29hHHn2V4m29nnDlvCdlgU+3UGxkZp7Z53jLUdpX3jdTO0nJZUDl3xvbWc2Xog==} engines: {node: 20 || >=22} + java-properties@1.0.2: + resolution: {integrity: sha512-qjdpeo2yKlYTH7nFdK0vbZWuTCesk4o63v5iVOlhMQPfuIZQfW/HI35SjfhA+4qpg36rnFSvUK5b1m+ckIblQQ==} + engines: {node: '>= 0.6.0'} + jest-worker@27.5.1: resolution: {integrity: sha512-7vuh85V5cdDofPyxn58nrPjBktZo0u9x1g8WtjQol+jZDaE+fhN+cIvTj11GndBnMnyfrUOG1sZQxCdjKh+DKg==} engines: {node: '>= 10.13.0'} @@ -6182,6 +6497,9 @@ packages: json-buffer@3.0.1: resolution: {integrity: sha512-4bV5BfR2mqfQTJm+V5tPPdf+ZpuhiIvTuAB5g8kcrXOZpTT/QwwVRWBywX1ozr6lEuPdbHxwaJlm9G6mI2sfSQ==} + json-parse-better-errors@1.0.2: + resolution: {integrity: sha512-mrqyZKfX5EhL7hvqcV6WG1yYjnjeuYDzDhhcAAUrq8Po85NBQBJP+ZDUT75qZQ98IkUoBqdkExkukOU7Ts2wrw==} + json-parse-even-better-errors@2.3.1: resolution: {integrity: sha512-xyFwyhro/JEof6Ghe2iz2NcXoj2sloNsWr/XsERDK/oiPCfaNhl5ONfp+jQdAZRQQ0IJWNzH9zIZF7li91kh2w==} @@ -6244,12 +6562,19 @@ packages: resolution: {integrity: sha512-+bT2uH4E5LGE7h/n3evcS/sQlJXCpIp6ym8OWJ5eV6+67Dsql/LaaT7qJBAt2rzfoa/5QBGBhxDix1dMt2kQKQ==} engines: {node: '>= 0.8.0'} + lines-and-columns@1.2.4: + resolution: {integrity: sha512-7ylylesZQ/PV29jhEDl3Ufjo6ZX7gCqJr5F7PKrqc93v7fzSymt1BpwEU8nAUXs8qzzvqhbjhK5QZg6Mt/HkBg==} + linkify-it@5.0.0: resolution: {integrity: sha512-5aHCbzQRADcdP+ATqnDuhhJ/MRIqDkZX5pyjFHRRysS8vZ5AbqGEoFIb6pYHPZ+L/OC2Lc+xT8uHVVR5CAK/wQ==} linkifyjs@4.1.3: resolution: {integrity: sha512-auMesunaJ8yfkHvK4gfg1K0SaKX/6Wn9g2Aac/NwX+l5VdmFZzo/hdPGxEOETj+ryRa4/fiOPjeeKURSAJx1sg==} + load-json-file@4.0.0: + resolution: {integrity: sha512-Kx8hMakjX03tiGTLAIdJ+lL0htKnXjEZN6hk/tozf/WOuYGdZBJrZ+rCJRbVCugsjB3jMLn9746NsQIf5VjBMw==} + engines: {node: '>=4'} + loader-runner@4.3.0: resolution: {integrity: sha512-3R/1M+yS3j5ou80Me59j7F9IMs4PXs3VqRrm0TU3AbKPxlmpoY1TNscJV/oGJXo8qCatFGTfDbY6W6ipGOYXfg==} engines: {node: '>=6.11.5'} @@ -6258,10 +6583,20 @@ packages: resolution: {integrity: sha512-xXqpXoINfFhgua9xiqD8fPFHgkoq1mmmpE92WlDbm9rNRd/EbRb+Gqf908T2DMfuHjjJlksiK2RbHVOdD/MqSw==} engines: {node: '>=8.9.0'} + locate-path@2.0.0: + resolution: {integrity: sha512-NCI2kiDkyR7VeEKm27Kda/iQHyKJe1Bu0FlTbYp3CqJu+9IFe9bLyAjMxf5ZDDbEg+iMPzB5zYyUTSm8wVTKmA==} + engines: {node: '>=4'} + locate-path@6.0.0: resolution: {integrity: sha512-iPZK6eYjbxRu3uB4/WZ3EsEIMJFMqAoopl3R+zuq0UjcAm/MO6KCweDgPfP3elTztoKP3KtnVHxTn2NHBSDVUw==} engines: {node: '>=10'} + lodash-es@4.17.21: + resolution: {integrity: sha512-mKnC+QJ9pWVzv+C4/U3rRsHapFfHvQFoFB92e52xeyGMcX6/OlIl78je1u8vePzYZSkkogMPJ2yjxxsb89cxyw==} + + lodash.capitalize@4.2.1: + resolution: {integrity: sha512-kZzYOKspf8XVX5AvmQF94gQW0lejFVgb80G85bU4ZWzoJ6C03PQg3coYAUpSTpQWelrZELd3XWgHzw4Ck5kaIw==} + lodash.clonedeep@4.5.0: resolution: {integrity: sha512-H5ZhCF25riFd9uB5UCkVKo61m3S/xZk1x4wA6yp/L3RFP6Z/eHH1ymQcGLo7J3GMPfm0V/7m1tryHuGVxpqEBQ==} @@ -6271,15 +6606,27 @@ packages: lodash.defaults@4.2.0: resolution: {integrity: sha512-qjxPLHd3r5DnsdGacqOMU6pb/avJzdh9tFX2ymgoZE27BmjXrNy/y4LoaiTeAb+O3gL8AfpJGtqfX/ae2leYYQ==} + lodash.escaperegexp@4.1.2: + resolution: {integrity: sha512-TM9YBvyC84ZxE3rgfefxUWiQKLilstD6k7PTGt6wfbtXF8ixIJLOL3VYyV/z+ZiPLsVxAsKAFVwWlWeb2Y8Yyw==} + lodash.get@4.4.2: resolution: {integrity: sha512-z+Uw/vLuy6gQe8cfaFWD7p0wVv8fJl3mbzXh33RS+0oW2wvUqiRXiQ69gLWSLpgB5/6sU+r6BlQR0MBILadqTQ==} lodash.isarguments@3.1.0: resolution: {integrity: sha512-chi4NHZlZqZD18a0imDHnZPrDeBbTtVN7GXMwuGdRH9qotxAjYs3aVLKc7zNOG9eddR5Ksd8rvFEBc9SsggPpg==} + lodash.isplainobject@4.0.6: + resolution: {integrity: sha512-oSXzaWypCMHkPC3NvBEaPHf0KsA5mvPrOPgQWDsbg8n7orZ290M0BmC/jgRZ4vcJ6DTAhjrsSYgdsW/F+MFOBA==} + + lodash.isstring@4.0.1: + resolution: {integrity: sha512-0wJxfxH1wgO3GrbuP+dTTk7op+6L41QCXbGINEmD+ny/G/eCqGzxyCsh7159S+mgDDcoarnBw6PC1PS5+wUGgw==} + lodash.merge@4.6.2: resolution: {integrity: sha512-0KpjqXRVvrYyCsX1swR/XTK0va6VQkQM6MNo7PqW77ByjAhoARA8EfrP1N4+KlKj8YS0ZUCtRT/YUuhyYDujIQ==} + lodash.uniqby@4.7.0: + resolution: {integrity: sha512-e/zcLx6CSbmaEgFHCA7BnoQKyCtKMxnuWrJygbwPs/AIn+IMKl66L8/s+wBUn5LRw2pZx3bUHibiV1b6aTWIww==} + lodash@4.17.21: resolution: {integrity: sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg==} @@ -6369,6 +6716,17 @@ packages: resolution: {integrity: sha512-a54IwgWPaeBCAAsv13YgmALOF1elABB08FxO9i+r4VFk5Vl4pKokRPeX8u5TCgSsPi6ec1otfLjdOpVcgbpshg==} hasBin: true + marked-terminal@7.2.1: + resolution: {integrity: sha512-rQ1MoMFXZICWNsKMiiHwP/Z+92PLKskTPXj+e7uwXmuMPkNn7iTqC+IvDekVm1MPeC9wYQeLxeFaOvudRR/XbQ==} + engines: {node: '>=16.0.0'} + peerDependencies: + marked: '>=1 <15' + + marked@12.0.2: + resolution: {integrity: sha512-qXUm7e/YKFoqFPYPa3Ukg9xlI5cyAtGmyEIzMfW//m6kXwCy2Ps9DYf5ioijFKQ8qyuscrHoY04iJGctu2Kg0Q==} + engines: {node: '>= 18'} + hasBin: true + mdurl@2.0.0: resolution: {integrity: sha512-Lf+9+2r+Tdp5wXDXC4PcIBjTDtq4UKjCPMQhKIuzpJNW0b96kVqSwW0bT7FhRSfmAiFYgP+SCRvdrDozfh0U5w==} @@ -6376,6 +6734,10 @@ packages: resolution: {integrity: sha512-dq+qelQ9akHpcOl/gUVRTxVIOkAJ1wR3QAvb4RsVjS8oVoFjDGTc679wJYmUmknUF5HwMLOgb5O+a3KxfWapPQ==} engines: {node: '>= 0.6'} + meow@13.2.0: + resolution: {integrity: sha512-pxQJQzB6djGPXh08dacEloMFopsOqGVRKFPYvPOt9XDZ1HasbgDZA74CJGreSU4G3Ak7EFJGoiH2auq+yXISgA==} + engines: {node: '>=18'} + merge-stream@2.0.0: resolution: {integrity: sha512-abv/qOcuPfk3URPfDzmZU1LKmuw8kT+0nIHvKrKgFrwifol/doWcdA4ZqsWQ8ENrFKkd67Mfpo/LovbIUsbt3w==} @@ -6400,10 +6762,19 @@ packages: engines: {node: '>=10.0.0'} hasBin: true + mime@4.0.4: + resolution: {integrity: sha512-v8yqInVjhXyqP6+Kw4fV3ZzeMRqEW6FotRsKXjRS5VMTNIuXsdRoAvklpoRgSqXm6o9VNH4/C0mgedko9DdLsQ==} + engines: {node: '>=16'} + hasBin: true + mimic-fn@2.1.0: resolution: {integrity: sha512-OqbOk5oEQeAZ8WXWydlu9HJjz9WVdEIvamMCcXmuqUYjTknH/sqsWvhQ3vgwKFRR1HpjvNBKQ37nbJgYzGqGcg==} engines: {node: '>=6'} + mimic-fn@4.0.0: + resolution: {integrity: sha512-vqiC06CuhBTUdZH+RYl8sFrL096vA45Ok5ISO6sE/Mr1jRbGH4Csnhi8f3wKVl7x8mO4Au7Ir9D3Oyv1VYMFJw==} + engines: {node: '>=12'} + mimic-response@3.1.0: resolution: {integrity: sha512-z0yWI+4FDrrweS8Zmt4Ej5HdJmky15+L2e6Wgn3+iK5fWzb6T3fhNFq2+MeTRb064c6Wr4N/wv0DzQTjNzHNGQ==} engines: {node: '>=10'} @@ -6495,6 +6866,9 @@ packages: resolution: {integrity: sha512-0XFu8rUmFN9vC0ME36iBvCUObftiMHItrYFhlCRvFWbLgpNqtC4Br/NmZX1HNCszxT0GGy5QtP+k3Q3eCJPaYA==} engines: {node: '>= 8.0'} + mz@2.7.0: + resolution: {integrity: sha512-z81GNO7nnYMEhrGh9LeymoE4+Yr0Wn5McHIZMK5cfQCl+NDX08sCZgUc9/6MHni9IWuFLm1Z3HTCXu2z9fN62Q==} + named-placeholders@1.1.3: resolution: {integrity: sha512-eLoBxg6wE/rZkJPhU/xRX1WTpkFEwDJEN96oxFrTsqBdbT5ec295Q+CoHrL9IT0DipqKhmGcaZmwOt8OON5x1w==} engines: {node: '>=12.0.0'} @@ -6533,6 +6907,9 @@ packages: resolution: {integrity: sha512-Z4SmBUweYa09+o6pG+eASabEpP6QkQ70yHj351pQoEXIs8uHbaU2DWVmzBANKgflPa47A50PtB2+NgRpQvr7vA==} engines: {node: '>= 10'} + nerf-dart@1.0.0: + resolution: {integrity: sha512-EZSPZB70jiVsivaBLYDCyntd5eH8NTSMOn3rB+HxwdmKThGELLdYv8qVIMWvZEFy9w8ZZpW9h9OB32l1rGtj7g==} + netmask@2.0.2: resolution: {integrity: sha512-dBpDMdxv9Irdq66304OLfEmQ9tbNRFnFTuZiLo+bD+r332bBmMJ8GBLXklIXXgxd3+v9+KUnZaUR5PJMa75Gsg==} engines: {node: '>= 0.4.0'} @@ -6608,6 +6985,10 @@ packages: resolution: {integrity: sha512-/jKZoMpw0F8GRwl4/eLROPA3cfcXtLApP0QzLmUT/HuPCZWyB7IY9ZrMeKw2O/nFIqPQB3PVM9aYm0F312AXDQ==} engines: {node: '>=10.5.0'} + node-emoji@2.2.0: + resolution: {integrity: sha512-Z3lTE9pLaJF47NyMhd4ww1yFTAP8YhYI8SleJiHzM46Fgpm5cnNzSl9XfzFNqbaz+VlJrIj3fXQ4DeN1Rjm6cw==} + engines: {node: '>=18'} + node-fetch-commonjs@3.3.2: resolution: {integrity: sha512-VBlAiynj3VMLrotgwOS3OyECFxas5y7ltLcK4t41lMUZeaK15Ym4QRkqN0EQKAFL42q9i21EPKjzLUPfltR72A==} engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0} @@ -6646,14 +7027,104 @@ packages: engines: {node: '>=6'} hasBin: true + normalize-package-data@6.0.2: + resolution: {integrity: sha512-V6gygoYb/5EmNI+MEGrWkC+e6+Rr7mTmfHrxDbLzxQogBkgzo76rkok0Am6thgSF7Mv2nLOajAJj5vDJZEFn7g==} + engines: {node: ^16.14.0 || >=18.0.0} + normalize-path@3.0.0: resolution: {integrity: sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA==} engines: {node: '>=0.10.0'} + normalize-url@8.0.1: + resolution: {integrity: sha512-IO9QvjUMWxPQQhs60oOu10CRkWCiZzSUkzbXGGV9pviYl1fXYcvkzQ5jV9z8Y6un8ARoVRl4EtC6v6jNqbaJ/w==} + engines: {node: '>=14.16'} + npm-run-path@4.0.1: resolution: {integrity: sha512-S48WzZW777zhNIrn7gxOlISNAqi9ZC/uQFnRdbeIHhZhCA6UqpkOT8T1G7BvfdgP4Er8gF4sUbaS0i7QvIfCWw==} engines: {node: '>=8'} + npm-run-path@5.3.0: + resolution: {integrity: sha512-ppwTtiJZq0O/ai0z7yfudtBpWIoxM8yE6nHi1X47eFR2EWORqfbu6CnPlNsjeN683eT0qG6H/Pyf9fCcvjnnnQ==} + engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0} + + npm-run-path@6.0.0: + resolution: {integrity: sha512-9qny7Z9DsQU8Ou39ERsPU4OZQlSTP47ShQzuKZ6PRXpYLtIFgl/DEBYEXKlvcEa+9tHVcK8CF81Y2V72qaZhWA==} + engines: {node: '>=18'} + + npm@10.9.2: + resolution: {integrity: sha512-iriPEPIkoMYUy3F6f3wwSZAU93E0Eg6cHwIR6jzzOXWSy+SD/rOODEs74cVONHKSx2obXtuUoyidVEhISrisgQ==} + engines: {node: ^18.17.0 || >=20.5.0} + hasBin: true + bundledDependencies: + - '@isaacs/string-locale-compare' + - '@npmcli/arborist' + - '@npmcli/config' + - '@npmcli/fs' + - '@npmcli/map-workspaces' + - '@npmcli/package-json' + - '@npmcli/promise-spawn' + - '@npmcli/redact' + - '@npmcli/run-script' + - '@sigstore/tuf' + - abbrev + - archy + - cacache + - chalk + - ci-info + - cli-columns + - fastest-levenshtein + - fs-minipass + - glob + - graceful-fs + - hosted-git-info + - ini + - init-package-json + - is-cidr + - json-parse-even-better-errors + - libnpmaccess + - libnpmdiff + - libnpmexec + - libnpmfund + - libnpmhook + - libnpmorg + - libnpmpack + - libnpmpublish + - libnpmsearch + - libnpmteam + - libnpmversion + - make-fetch-happen + - minimatch + - minipass + - minipass-pipeline + - ms + - node-gyp + - nopt + - normalize-package-data + - npm-audit-report + - npm-install-checks + - npm-package-arg + - npm-pick-manifest + - npm-profile + - npm-registry-fetch + - npm-user-validate + - p-map + - pacote + - parse-conflict-json + - proc-log + - qrcode-terminal + - read + - semver + - spdx-expression-parse + - ssri + - supports-color + - tar + - text-table + - tiny-relative-date + - treeverse + - validate-npm-package-name + - which + - write-file-atomic + npmlog@5.0.1: resolution: {integrity: sha512-AqZtDUWOMKs1G/8lwylVjrdYgqA4d9nu8hc+0gzRxlDb1I10+FHBGMXs6aiQHFdCUUlqH99MUMuLfzWDNDtfxw==} deprecated: This package is no longer supported. @@ -6719,6 +7190,10 @@ packages: resolution: {integrity: sha512-kbpaSSGJTWdAY5KPVeMOKXSrPtr8C8C7wodJbcsd51jRnmD+GZu8Y0VoU6Dm5Z4vWr0Ig/1NKuWRKf7j5aaYSg==} engines: {node: '>=6'} + onetime@6.0.0: + resolution: {integrity: sha512-1FlR+gjXK7X+AsAHso35MnyN5KqGwJRi/31ft6x0M194ht7S+rWAvd7PHss9xSKMzE0asv1pyIHaJYq+BbacAQ==} + engines: {node: '>=12'} + openapi-path-templating@1.6.0: resolution: {integrity: sha512-1atBNwOUrZXthTvlvvX8k8ovFEF3iA8mDidYMkdOtvVdndBhTrspbwGXNOzEUaJhm9iUl4Tf5uQaeTLAJvwPig==} engines: {node: '>=12.20.0'} @@ -6749,10 +7224,30 @@ packages: resolution: {integrity: sha512-D2FR03Vir7FIu45XBY20mTb+/ZSWB00sjU9jdQXt83gDrI4Ztz5Fs7/yy74g2N5SVQY4xY1qDr4rNddwYRVX0g==} engines: {node: '>=0.10.0'} + p-each-series@3.0.0: + resolution: {integrity: sha512-lastgtAdoH9YaLyDa5i5z64q+kzOcQHsQ5SsZJD3q0VEyI8mq872S3geuNbRUQLVAE9siMfgKrpj7MloKFHruw==} + engines: {node: '>=12'} + + p-filter@4.1.0: + resolution: {integrity: sha512-37/tPdZ3oJwHaS3gNJdenCDB3Tz26i9sjhnguBtvN0vYlRIiDNnvTWkuh+0hETV9rLPdJ3rlL3yVOYPIAnM8rw==} + engines: {node: '>=18'} + + p-is-promise@3.0.0: + resolution: {integrity: sha512-Wo8VsW4IRQSKVXsJCn7TomUaVtyfjVDn3nUP7kE967BQk0CwFpdbZs0X0uk5sW9mkBa9eNM7hCMaG93WUAwxYQ==} + engines: {node: '>=8'} + + p-limit@1.3.0: + resolution: {integrity: sha512-vvcXsLAJ9Dr5rQOPk7toZQZJApBl2K4J6dANSsEuh6QI41JYcsS/qhTGa9ErIUUgK3WNQoJYvylxvjqmiqEA9Q==} + engines: {node: '>=4'} + p-limit@3.1.0: resolution: {integrity: sha512-TYOanM3wGwNGsZN2cVTYPArw454xnXj5qmWF1bEoAc4+cU/ol7GVh7odevjp1FNHduHc3KZMcFduxU5Xc6uJRQ==} engines: {node: '>=10'} + p-locate@2.0.0: + resolution: {integrity: sha512-nQja7m7gSKuewoVRen45CtVfODR3crN3goVQ0DDZ9N3yHxgpkuBhZqsaiotSQRrADUrne346peY7kT3TSACykg==} + engines: {node: '>=4'} + p-locate@5.0.0: resolution: {integrity: sha512-LaNjtRWUBY++zB5nE/NwcaoMylSPk+S+ZHNB1TzdbMJMny6dynpAGt7X/tl/QYq3TIeE6nxHppbo2LGymrG5Pw==} engines: {node: '>=10'} @@ -6761,6 +7256,22 @@ packages: resolution: {integrity: sha512-d3qXVTF/s+W+CdJ5A29wywV2n8CQQYahlgz2bFiA+4eVNJbHJodPZ+/gXwPGh0bOqA+j8S+6+ckmvLGPk1QpxQ==} engines: {node: '>=8'} + p-map@7.0.3: + resolution: {integrity: sha512-VkndIv2fIB99swvQoA65bm+fsmt6UNdGeIB0oxBs+WhAhdh08QA04JXpI7rbB9r08/nkbysKoya9rtDERYOYMA==} + engines: {node: '>=18'} + + p-reduce@2.1.0: + resolution: {integrity: sha512-2USApvnsutq8uoxZBGbbWM0JIYLiEMJ9RlaN7fAzVNb9OZN0SHjjTTfIcb667XynS5Y1VhwDJVDa72TnPzAYWw==} + engines: {node: '>=8'} + + p-reduce@3.0.0: + resolution: {integrity: sha512-xsrIUgI0Kn6iyDYm9StOpOeK29XM1aboGji26+QEortiFST1hGZaUQOLhtEbqHErPpGW/aSz6allwK2qcptp0Q==} + engines: {node: '>=12'} + + p-try@1.0.0: + resolution: {integrity: sha512-U1etNYuMJoIz3ZXSrrySFjsXQTWOx2/jdi86L+2pRvph/qMKL6sbcCYdH23fqsbm8TH2Gn0OybpT4eSFlCVHww==} + engines: {node: '>=4'} + pac-proxy-agent@7.0.2: resolution: {integrity: sha512-BFi3vZnO9X5Qt6NRz7ZOaPja3ic0PhlsmCRYLOpN11+mWBCR6XJDqW5RF3j8jm4WGGQZtBA+bTfxYzeKW73eHg==} engines: {node: '>= 14'} @@ -6785,10 +7296,35 @@ packages: parse-entities@2.0.0: resolution: {integrity: sha512-kkywGpCcRYhqQIchaWqZ875wzpS/bMKhz5HnN3p7wveJTkTtyAB/AlnS0f8DFSqYW1T82t6yEAkEcB+A1I3MbQ==} + parse-json@4.0.0: + resolution: {integrity: sha512-aOIos8bujGN93/8Ox/jPLh7RwVnPEysynVFE+fQZyg6jKELEHwzgKdLRFHUgXJL6kylijVSBC4BvN9OmsB48Rw==} + engines: {node: '>=4'} + + parse-json@5.2.0: + resolution: {integrity: sha512-ayCKvm/phCGxOkYRSCM82iDwct8/EonSEgCSxWxD7ve6jHggsFl4fZVQBPRNgQoKiuV/odhFrGzQXZwbifC8Rg==} + engines: {node: '>=8'} + + parse-json@8.1.0: + resolution: {integrity: sha512-rum1bPifK5SSar35Z6EKZuYPJx85pkNaFrxBK3mwdfSJ1/WKbYrjoW/zTPSjRRamfmVX1ACBIdFAO0VRErW/EA==} + engines: {node: '>=18'} + parse-ms@3.0.0: resolution: {integrity: sha512-Tpb8Z7r7XbbtBTrM9UhpkzzaMrqA2VXMT3YChzYltwV3P3pM6t8wl7TvpMnSTosz1aQAdVib7kdoys7vYOPerw==} engines: {node: '>=12'} + parse-ms@4.0.0: + resolution: {integrity: sha512-TXfryirbmq34y8QBwgqCVLi+8oA3oWx2eAnSn62ITyEhEYaWRlVZ2DvMM9eZbMs/RfxPu/PK/aBLyGj4IrqMHw==} + engines: {node: '>=18'} + + parse5-htmlparser2-tree-adapter@6.0.1: + resolution: {integrity: sha512-qPuWvbLgvDGilKc5BoicRovlT4MtYT6JfJyBOMDsKoiT+GiuP5qyrPCnR9HcPECIJJmZh5jRndyNThnhhb/vlA==} + + parse5@5.1.1: + resolution: {integrity: sha512-ugq4DFI0Ptb+WWjAdOK16+u/nHfiIrcE+sh8kZMaM0WllQKLI9rOUq6c2b7cwPkXdzfQESqvoqK6ug7U/Yyzug==} + + parse5@6.0.1: + resolution: {integrity: sha512-Ofn/CTFzRGTTxwpNEs9PP93gXShHcTq255nzRYSKe8AkVpZY7e1fpmTfOyoIvjP5HG7Z2ZM7VS9PPhQGW2pOpw==} + parse5@7.1.2: resolution: {integrity: sha512-Czj1WaSVpaoj0wbhMzLmWD69anp2WH7FXMB9n1Sy8/ZFF9jolSQVMu1Ij5WIyGmcBmhk7EOndpO4mIpihVqAXw==} @@ -6798,6 +7334,10 @@ packages: path-case@2.1.1: resolution: {integrity: sha512-Ou0N05MioItesaLr9q8TtHVWmJ6fxWdqKB2RohFmNWVyJ+2zeKIeDNWAN6B/Pe7wpzWChhZX6nONYmOnMeJQ/Q==} + path-exists@3.0.0: + resolution: {integrity: sha512-bpC7GYwiDYQ4wYLe+FA8lhRjhQCMcQGuSgGGqDkg/QerRWw9CmGRT0iSOVRSZJ29NMLZgIzqaljJ63oaL4NIJQ==} + engines: {node: '>=4'} + path-exists@4.0.0: resolution: {integrity: sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w==} engines: {node: '>=8'} @@ -6810,6 +7350,10 @@ packages: resolution: {integrity: sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q==} engines: {node: '>=8'} + path-key@4.0.0: + resolution: {integrity: sha512-haREypq7xkM7ErfgIyA0z+Bj4AGKlMSdlQE2jvJo6huWD1EdkKYV+G/T4nq0YEF2vgTT8kqMFKo1uHn950r4SQ==} + engines: {node: '>=12'} + path-parse@1.0.7: resolution: {integrity: sha512-LDJzPVEEEPR+y48z93A0Ed0yXb8pAByGWo/k5YYdYgpY2/2EsOsksJrq7lOHxryrVOn1ejG6oAp8ahvOIQD8sw==} @@ -6825,6 +7369,10 @@ packages: resolution: {integrity: sha512-gDKb8aZMDeD/tZWs9P6+q0J9Mwkdl6xMV8TjnGP3qJVJ06bdMgkbBlLU8IdfOsIsFz2BW1rNVT3XuNEl8zPAvw==} engines: {node: '>=8'} + path-type@5.0.0: + resolution: {integrity: sha512-5HviZNaZcfqP95rwpv+1HDgUamezbqdSYTyzjTvwtJSnIH+3vnbmWsItli8OFEndS984VT55M3jduxZbX351gg==} + engines: {node: '>=12'} + pathe@1.1.2: resolution: {integrity: sha512-whLdWMYL2TwI08hn8/ZqAbrVemu0LNaNNJZX73O6qaIdCTfXutsLhMkjdENX0qhsQ9uIimo4/aQOmXkoon2nDQ==} @@ -6846,6 +7394,10 @@ packages: resolution: {integrity: sha512-M7BAV6Rlcy5u+m6oPhAPFgJTzAioX/6B0DxyvDlo9l8+T3nLKbrczg2WLUyzd45L8RqfUMyGPzekbMvX2Ldkwg==} engines: {node: '>=12'} + pify@3.0.0: + resolution: {integrity: sha512-C3FsVNH1udSEX48gGX1xfvwTWfsYWj5U+8/uK15BGzIGrKoUpghX8hWZwa/OFnakBiiVNmBvemTJR5mcy7iPcg==} + engines: {node: '>=4'} + piscina@4.6.1: resolution: {integrity: sha512-z30AwWGtQE+Apr+2WBZensP2lIvwoaMcOPkQlIEmSGMJNUvaYACylPYrQM6wSdUNJlnDVMSpLv7xTMJqlVshOA==} @@ -6853,6 +7405,10 @@ packages: resolution: {integrity: sha512-afRERtHn54AlwaF2/+LFszyAANTCggGilmcmILUzEjvs3XgFZT+xE6+QWQcAGmu4xajy+Xtj7acLOPdx5/eXWQ==} hasBin: true + pkg-conf@2.1.0: + resolution: {integrity: sha512-C+VUP+8jis7EsQZIhDYmS5qlNtjv2yP4SNtjXK9AP1ZcTRlnSfuumaTnRfYZnYgUUYVIKqL0fRvmUGDV2fmp6g==} + engines: {node: '>=4'} + playwright-core@1.49.0: resolution: {integrity: sha512-R+3KKTQF3npy5GTiKH/T+kdhoJfJojjHESR1YEWhYuEKRVfVaxH3+4+GvXE5xyCngCxhxnykk0Vlah9v8fs3jA==} engines: {node: '>=18'} @@ -6953,6 +7509,10 @@ packages: resolution: {integrity: sha512-ASJqOugUF1bbzI35STMBUpZqdfYKlJugy6JBziGi2EE+AL5JPJGSzvpeVXojxrr0ViUYoToUjb5kjSEGf7Y83Q==} engines: {node: '>=14.16'} + pretty-ms@9.2.0: + resolution: {integrity: sha512-4yf0QO/sllf/1zbZWYnvWw3NxCQwLXKzIj0G849LSufP15BXKM0rbD2Z3wVnkMfjdn/CB0Dpp444gYAACdsplg==} + engines: {node: '>=18'} + pretty-print-error@1.1.2: resolution: {integrity: sha512-XkKN3W8aeRYApO17WpzuaJZmqH3WNSFeqR4Sxt7vu+C7pcWB+3+JDJ2dnnhzSCqvC1IaYR36CVh4VsFZyBicQA==} @@ -7236,6 +7796,14 @@ packages: resolution: {integrity: sha512-V8AVnmPIICiWpGfm6GLzCR/W5FXLchHop40W4nXBmdlEceh16rCN8O8LNWm5bh5XUX91fh7KpA+W0TgMKmgTpQ==} engines: {node: '>=0.10.0'} + read-package-up@11.0.0: + resolution: {integrity: sha512-MbgfoNPANMdb4oRBNg5eqLbB2t2r+o5Ua1pNt8BqGp4I0FJZhuVSOj3PaBPni4azWuSzEdNn2evevzVmEk1ohQ==} + engines: {node: '>=18'} + + read-pkg@9.0.1: + resolution: {integrity: sha512-9viLL4/n1BJUCT1NXVTdS1jtm80yDEgR5T4yCelII49Mbj0v1rZdKqj7zCiYdbB0CuCgdrvHcNogAKTFPBocFA==} + engines: {node: '>=18'} + readable-stream@2.3.8: resolution: {integrity: sha512-8p0AUk4XODgIewSi0l8Epjs+EVnWiK7NoDIEGU0HhE7+ZyY8D1IMY7odu5lRrFXGg71L15KG8QrPmum45RTtdA==} @@ -7329,6 +7897,10 @@ packages: resolution: {integrity: sha512-pb/MYmXstAkysRFx8piNI1tGFNQIFA3vkE3Gq4EuA1dF6gHp/+vgZqsCGJapvy8N3Q+4o7FwvquPJcnZ7RYy4g==} engines: {node: '>=4'} + resolve-from@5.0.0: + resolution: {integrity: sha512-qYg9KP24dD5qka9J47d0aVky0N+b4fTU89LN9iDnjB5waksiC49rvMB0PrUJQGoTmH50XPiqOvAjDfaijGxYZw==} + engines: {node: '>=8'} + resolve-pkg-maps@1.0.0: resolution: {integrity: sha512-seS2Tj26TBVOC2NIc2rOe2y2ZO7efxITtLZcGSOnHHNOQ7CkiUBfw0Iw2ck6xkIhPwLhKNLS8BO+hEpngQlqzw==} @@ -7444,13 +8016,26 @@ packages: resolution: {integrity: sha512-pN/yOAvcC+5rQ5nERGuwrjLlYvLTbCibnZ1I7B1LaiAz9BRBlE9GMgE/eqV30P7aJQUf7Ddimy/RsbYO/GrVGg==} engines: {node: '>= 10.13.0'} + semantic-release@24.2.0: + resolution: {integrity: sha512-fQfn6e/aYToRtVJYKqneFM1Rg3KP2gh3wSWtpYsLlz6uaPKlISrTzvYAFn+mYWo07F0X1Cz5ucU89AVE8X1mbg==} + engines: {node: '>=20.8.1'} + hasBin: true + semver-diff@3.1.1: resolution: {integrity: sha512-GX0Ix/CJcHyB8c4ykpHGIAvLyOwOobtM/8d+TQkAd81/bEjgPHrfba41Vpesr7jX/t8Uh+R3EX9eAS5be+jQYg==} engines: {node: '>=8'} + semver-diff@4.0.0: + resolution: {integrity: sha512-0Ju4+6A8iOnpL/Thra7dZsSlOHYAHIeMxfhWQRI1/VLcT3WDBZKKtQt/QkBOsiIN9ZpuvHE6cGZ0x4glCMmfiA==} + engines: {node: '>=12'} + semver-parser@4.1.7: resolution: {integrity: sha512-RNNvmr1JKZ4Eia7Cyfxtr6aR7eiQs1bPGBv4EC3OJ5pTKEoHjLsT+dY1SSny2tq/uqx9bzNR4lL8tzaB70TN9A==} + semver-regex@4.0.5: + resolution: {integrity: sha512-hunMQrEy1T6Jr2uEVjrAIqjwWcQTgOAcIM52C8MY1EZSD3DDNft04XzvYKPqjED65bNVVko0YI38nYeEHCX3yw==} + engines: {node: '>=12'} + semver@6.3.1: resolution: {integrity: sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==} hasBin: true @@ -7525,6 +8110,10 @@ packages: resolution: {integrity: sha512-bzyZ1e88w9O1iNJbKnOlvYTrWPDl46O1bG0D3XInv+9tkPrxrN8jUUTiFlDkkmKWgn1M6CfIA13SuGqOa9Korw==} engines: {node: '>=14'} + signale@1.4.0: + resolution: {integrity: sha512-iuh+gPf28RkltuJC7W5MRi6XAjTDCAPC/prJUpQoG4vIP3MJZ+GTydVnodXA7pwvTKb2cA0m9OFZW/cdWy/I/w==} + engines: {node: '>=6'} + simple-concat@1.0.1: resolution: {integrity: sha512-cSFtAPtRhljv69IK0hTVZQ+OfE9nePi/rtJmw5UjHeVyVroEqJXP1sFztKUy1qU+xvz3u/sfYJLa947b7nAN2Q==} @@ -7541,10 +8130,18 @@ packages: sisteransi@1.0.5: resolution: {integrity: sha512-bLGGlR1QxBcynn2d5YmDX4MGjlZvy2MRBDRNHLJ8VI6l6+9FUiyTFNJ0IveOSP0bcXgVDPRcfGqA0pjaqUpfVg==} + skin-tone@2.0.0: + resolution: {integrity: sha512-kUMbT1oBJCpgrnKoSr0o6wPtvRWT9W9UKvGLwfJYO2WuahZRHOpEyL1ckyMGgMWh0UdpmaoFqKKD29WTomNEGA==} + engines: {node: '>=8'} + slash@3.0.0: resolution: {integrity: sha512-g9Q1haeby36OSStwb4ntCGGGaKsaVSjQ68fBxoQcutl5fS1vuY18H3wSt3jFyFtrkx+Kz0V1G85A4MyAdDMi2Q==} engines: {node: '>=8'} + slash@5.1.0: + resolution: {integrity: sha512-ZA6oR3T/pEyuqwMgAKT0/hAv8oAXckzbkmR0UkUosQ+Mc4RxGoJkRmwHgHufaenlyAgE1Mxgpdcrf75y6XcnDg==} + engines: {node: '>=14.16'} + smart-buffer@4.2.0: resolution: {integrity: sha512-94hK0Hh8rPqQl2xXc3HsaBoOXKV20MToPkcXvwbISWLEs+64sBq5kFgn2kJDHb1Pry9yrP0dxrCI9RRci7RXKg==} engines: {node: '>= 6.0.0', npm: '>= 3.0.0'} @@ -7596,9 +8193,27 @@ packages: space-separated-tokens@1.1.5: resolution: {integrity: sha512-q/JSVd1Lptzhf5bkYm4ob4iWPjx0KiRe3sRFBNrVqbJkFaBm5vbbowy1mymoPNLRa52+oadOhJ+K49wsSeSjTA==} + spawn-error-forwarder@1.0.0: + resolution: {integrity: sha512-gRjMgK5uFjbCvdibeGJuy3I5OYz6VLoVdsOJdA6wV0WlfQVLFueoqMxwwYD9RODdgb6oUIvlRlsyFSiQkMKu0g==} + + spdx-correct@3.2.0: + resolution: {integrity: sha512-kN9dJbvnySHULIluDHy32WHRUu3Og7B9sbY7tsFLctQkIqnMh3hErYgdMjTYuqmcXX+lK5T1lnUt3G7zNswmZA==} + + spdx-exceptions@2.5.0: + resolution: {integrity: sha512-PiU42r+xO4UbUS1buo3LPJkjlO7430Xn5SVAhdpzzsPHsjbYVflnnFdATgabnLude+Cqu25p6N+g2lw/PFsa4w==} + + spdx-expression-parse@3.0.1: + resolution: {integrity: sha512-cbqHunsQWnJNE6KhVSMsMeH5H/L9EpymbzqTQ3uLwNCLZ1Q481oWaofqH7nO6V07xlXwY6PhQdQ2IedWx/ZK4Q==} + + spdx-license-ids@3.0.20: + resolution: {integrity: sha512-jg25NiDV/1fLtSgEgyvVyDunvaNHbuwF9lfNV17gSmPFAlYzdfNBlLtLzXTevwkPj7DhGbmN9VnmJIgLnhvaBw==} + split-ca@1.0.1: resolution: {integrity: sha512-Q5thBSxp5t8WPTTJQS59LrGqOZqOsrhDGDVm8azCqIBjSBd7nd9o2PM+mDulQQkh8h//4U6hFZnc/mul8t5pWQ==} + split2@1.0.0: + resolution: {integrity: sha512-NKywug4u4pX/AZBB1FCPzZ6/7O+Xhz1qMVbzTvvKvikjO99oPN87SkK08mEY9P63/5lWjK+wgOOgApnTg5r6qg==} + sprintf-js@1.0.3: resolution: {integrity: sha512-D9cPgkvLlV3t3IzL0D0YLvGA9Ahk4PcvVwUbN0dSGr1aP0Nrt4AEnTUbuGvquEC0mA64Gqt1fzirlRs5ibXx8g==} @@ -7632,6 +8247,9 @@ packages: std-env@3.8.0: resolution: {integrity: sha512-Bc3YwwCB+OzldMxOXJIIvC6cPRWr/LxOp48CdQTOkPyk/t4JWWJbrilwBd7RJzKV8QW7tJkcgAmeuLLJugl5/w==} + stream-combiner2@1.1.1: + resolution: {integrity: sha512-3PnJbYgS56AeWgtKF5jtJRT6uFJe56Z0Hc5Ngg/6sI6rIt8iiMBTa9cvdyFfpMQjaVHr8dusbNeFGIIonxOvKw==} + streamsearch@1.1.0: resolution: {integrity: sha512-Mcc5wHehp9aXz1ax6bZUyY5afg9u2rv5cqQI3mRrYkGC8rW2hM02jWuwjtL++LS5qinSyhj2QfLyNsuc+VsExg==} engines: {node: '>=10.0.0'} @@ -7694,6 +8312,14 @@ packages: resolution: {integrity: sha512-BrpvfNAE3dcvq7ll3xVumzjKjZQ5tI1sEUIKr3Uoks0XUl45St3FlatVqef9prk4jRDzhW6WZg+3bk93y6pLjA==} engines: {node: '>=6'} + strip-final-newline@3.0.0: + resolution: {integrity: sha512-dOESqjYr96iWYylGObzd39EuNTa5VJxyvVAEm5Jnh7KGo75V43Hk1odPQkNDyXNmUR6k+gEiDVXnjB8HJ3crXw==} + engines: {node: '>=12'} + + strip-final-newline@4.0.0: + resolution: {integrity: sha512-aulFJcD6YK8V1G7iRB5tigAP4TsHBZZrOV8pjV++zdUwmeV8uzbY7yn6h9MswN62adStNZFuCIx4haBnRuMDaw==} + engines: {node: '>=18'} + strip-json-comments@2.0.1: resolution: {integrity: sha512-4gB8na07fecVVkOI6Rs4e7T6NOTki5EmL7TUduTs6bu3EdnSycntVJ4re8kgZA+wx9IueI2Y11bfbgwtzuE0KQ==} engines: {node: '>=0.10.0'} @@ -7727,6 +8353,10 @@ packages: peerDependencies: postcss: ^8.3.3 + super-regex@1.0.0: + resolution: {integrity: sha512-CY8u7DtbvucKuquCmOFEKhr9Besln7n9uN8eFbwcoGYWXOMW07u2o8njWaiXt11ylS3qoGF55pILjRmPlbodyg==} + engines: {node: '>=18'} + superjson@2.2.2: resolution: {integrity: sha512-5JRxVqC8I8NuOUjzBbvVJAKNM8qoVuH0O77h4WInc/qC2q5IreqKxYwgkga3PfA22OayK2ikceb/B26dztPl+Q==} engines: {node: '>=16'} @@ -7743,6 +8373,10 @@ packages: resolution: {integrity: sha512-MpUEN2OodtUzxvKQl72cUF7RQ5EiHsGvSsVG0ia9c5RbWGL2CI4C7EpPS8UTBIplnlzZiNuV56w+FuNxy3ty2Q==} engines: {node: '>=10'} + supports-hyperlinks@3.1.0: + resolution: {integrity: sha512-2rn0BZ+/f7puLOHZm1HOJfwBggfaHXUpPUSSG/SWM4TWp5KCfmNYwnC3hruy2rZlMnmWZ+QAGpZfchu3f3695A==} + engines: {node: '>=14.18'} + supports-preserve-symlinks-flag@1.0.0: resolution: {integrity: sha512-ot0WnXS9fgdkgIcePe6RHNk1WA8+muPa6cSjeR3V8K27q9BB1rTE3R1p7Hv0z1ZyAc8s6Vvv8DIyWf681MAt0w==} engines: {node: '>= 0.4'} @@ -7793,6 +8427,14 @@ packages: resolution: {integrity: sha512-DZ4yORTwrbTj/7MZYq2w+/ZFdI6OZ/f9SFHR+71gIVUZhOQPHzVCLpvRnPgyaMpfWxxk/4ONva3GQSyNIKRv6A==} engines: {node: '>=10'} + temp-dir@3.0.0: + resolution: {integrity: sha512-nHc6S/bwIilKHNRgK/3jlhDoIHcp45YgyiwcAk46Tr0LfEqGBVpmiAyuiuxeVE44m3mXnEeVhaipLOEWmH+Njw==} + engines: {node: '>=14.16'} + + tempy@3.1.0: + resolution: {integrity: sha512-7jDLIdD2Zp0bDe5r3D2qtkd1QOCacylBuL7oa4udvN6v2pqr4+LcCr67C8DR1zkpaZ8XosF5m1yQSabKAW6f2g==} + engines: {node: '>=14.16'} + terser-webpack-plugin@5.3.10: resolution: {integrity: sha512-BKFPWlPDndPs+NGGCr1U59t0XScL5317Y0UReNrHaw9/FwhPENlq6bfgs+4yPfyP51vqC1bQ4rp1EfXW5ZSH9w==} engines: {node: '>= 10.13.0'} @@ -7827,9 +8469,23 @@ packages: text-hex@1.0.0: resolution: {integrity: sha512-uuVGNWzgJ4yhRaNSiubPY7OjISw4sw4E5Uv0wbjp+OzcbmVU/rsT8ujgcXJhn9ypzsgr5vlzpPqP+MBBKcGvbg==} + thenify-all@1.6.0: + resolution: {integrity: sha512-RNxQH/qI8/t3thXJDwcstUO4zeqo64+Uy/+sNVRBx4Xn2OX+OZ9oP+iJnNFqplFra2ZUVeKCSa2oVWi3T4uVmA==} + engines: {node: '>=0.8'} + + thenify@3.3.1: + resolution: {integrity: sha512-RVZSIV5IG10Hk3enotrhvz0T9em6cyHBLkH/YAZuKqd8hRkKhSfCGIcP2KUY0EPxndzANBmNllzWPwak+bheSw==} + + through2@2.0.5: + resolution: {integrity: sha512-/mrRod8xqpA+IHSLyGCQ2s8SPHiCDEeQJSep1jqLYeEUClOFG2Qsh+4FU6G9VeqpZnGW/Su8LQGc4YKni5rYSQ==} + through@2.3.8: resolution: {integrity: sha512-w89qg7PI8wAdvX60bMDP+bFoD5Dvhm9oLheFp5O4a2QF0cSBGsBX4qZmadPMvVqlLJBBci+WqGGOAPvcDeNSVg==} + time-span@5.1.0: + resolution: {integrity: sha512-75voc/9G4rDIJleOo4jPvN4/YC4GRZrY8yy1uU4lwrB3XEQbWve8zXoO5No4eFrGcTAMYyoY67p8jRQdtA1HbA==} + engines: {node: '>=12'} + tiny-invariant@1.3.3: resolution: {integrity: sha512-+FbBPE1o9QAYvviau/qC5SE3caw21q3xkvWKBtja5vgqOWIHHJ3ioaq1VPfn/Szqctz2bU/oYeKd9/z5BL+PVg==} @@ -7912,6 +8568,10 @@ packages: resolution: {integrity: sha512-tk2G5R2KRwBd+ZN0zaEXpmzdKyOYksXwywulIX95MBODjSzMIuQnQ3m8JxgbhnL1LeVo7lqQKsYa1O3Htl7K5g==} engines: {node: '>=18'} + traverse@0.6.8: + resolution: {integrity: sha512-aXJDbk6SnumuaZSANd21XAo15ucCDE38H4fkqiGsc3MhCK+wOlZvLP9cB/TvpHT0mOyWgC4Z8EwRlzqYSUzdsA==} + engines: {node: '>= 0.4'} + tree-kill@1.2.2: resolution: {integrity: sha512-L0Orpi8qGpRG//Nd+H90vFB+3iHnue1zSSGmNOOCh1GLJ7rUKVwV2HvijphGQS2UmhUZewS9VgvxYIdgr+fG1A==} hasBin: true @@ -8042,6 +8702,14 @@ packages: resolution: {integrity: sha512-t0rzBq87m3fVcduHDUFhKmyyX+9eo6WQjZvf51Ea/M0Q7+T374Jp1aUiyUl0GKxp8M/OETVHSDvmkyPgvX+X2w==} engines: {node: '>=10'} + type-fest@1.4.0: + resolution: {integrity: sha512-yGSza74xk0UG8k+pLh5oeoYirvIiWo5t0/o3zHHAO2tRDiZcxWP7fywNlXhqb6/r6sWvwi+RsyQMWhVLe4BVuA==} + engines: {node: '>=10'} + + type-fest@2.19.0: + resolution: {integrity: sha512-RAH822pAdBgcNMAfWnCBU3CFZcfZ/i1eZjwFU/dsLKumyuuP3niueg2UAukXYF0E2AAoc82ZSSf9J0WQBinzHA==} + engines: {node: '>=12.20'} + type-fest@4.28.0: resolution: {integrity: sha512-jXMwges/FVbFRe5lTMJZVEZCrO9kI9c8k0PA/z7nF3bo0JSCCLysvokFjNPIUK/itEMas10MQM+AiHoHt/T/XA==} engines: {node: '>=16'} @@ -8122,10 +8790,26 @@ packages: unenv@1.10.0: resolution: {integrity: sha512-wY5bskBQFL9n3Eca5XnhH6KbUo/tfvkwm9OpcdCvLaeA7piBNbavbOKJySEwQ1V0RH6HvNlSAFRTpvTqgKRQXQ==} + unicode-emoji-modifier-base@1.0.0: + resolution: {integrity: sha512-yLSH4py7oFH3oG/9K+XWrz1pSi3dfUrWEnInbxMfArOfc1+33BlGPQtLsOYwvdMy11AwUBetYuaRxSPqgkq+8g==} + engines: {node: '>=4'} + + unicorn-magic@0.1.0: + resolution: {integrity: sha512-lRfVq8fE8gz6QMBuDM6a+LO3IAzTi05H6gCVaUpir2E1Rwpo4ZUog45KpNXKC/Mn3Yb9UDuHumeFTo9iV/D9FQ==} + engines: {node: '>=18'} + + unicorn-magic@0.3.0: + resolution: {integrity: sha512-+QBBXBCvifc56fsbuxZQ6Sic3wqqc3WWaqxs58gvJrcOuN83HGTCwz3oS5phzU9LthRNE9VrJCFCLUgHeeFnfA==} + engines: {node: '>=18'} + unique-string@2.0.0: resolution: {integrity: sha512-uNaeirEPvpZWSgzwsPGtU2zVSTrn/8L5q/IexZmH0eH6SA73CmAA5U4GwORTxQAZs95TAXLNqeLoPPNO5gZfWg==} engines: {node: '>=8'} + unique-string@3.0.0: + resolution: {integrity: sha512-VGXBUVwxKMBUznyffQweQABPRRW1vHZAbadFZud4pLFAqRGvv/96vafgjWFqzourzr8YonlQiPgH0YCJfawoGQ==} + engines: {node: '>=12'} + universal-github-app-jwt@2.2.0: resolution: {integrity: sha512-G5o6f95b5BggDGuUfKDApKaCgNYy2x7OdHY0zSMF081O0EJobw+1130VONhrA7ezGSV2FNOGyM+KQpQZAr9bIQ==} @@ -8174,6 +8858,10 @@ packages: uri-js@4.4.1: resolution: {integrity: sha512-7rKUyy33Q1yc98pQ1DAmLtwX109F7TIfWlW1Ydo8Wl1ii1SeHieeh0HHfPeL2fMXK6z0s8ecKs9frCuLJvndBg==} + url-join@5.0.0: + resolution: {integrity: sha512-n2huDr9h9yzd6exQVnH/jU5mr+Pfx08LRXXZhkLLetAMESRj+anQsTAh940iMrIetKAmry9coFuZQ2jY8/p3WA==} + engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0} + url-parse@1.5.10: resolution: {integrity: sha512-WypcfiRhfeUP9vvF0j6rw0J3hrWrw6iZv3+22h6iRMJ/8z1Tj6XfLP4DsUix5MhMPnXpiHDoKyoZ/bdCkwBCiQ==} @@ -8253,6 +8941,9 @@ packages: v8-compile-cache-lib@3.0.1: resolution: {integrity: sha512-wa7YjyUGfNZngI/vtK0UHAN+lgDCxBPCylVXGp0zu59Fz5aiGtNXaq3DhIov063MorB+VfufLh3JlF2KdTK3xg==} + validate-npm-package-license@3.0.4: + resolution: {integrity: sha512-DpKm2Ui/xN7/HQKCtpZxoRWBhZ9Z0kqtygG8XCgNQ8ZlDnxuQmWhj566j8fN4Cu3/JmbhsDo7fcAJq4s9h27Ew==} + validate-npm-package-name@5.0.1: resolution: {integrity: sha512-OljLrQ9SQdOUqTaQxqL5dEfZWrXExyyWsozYlAWFawPVNuD83igl7uJD2RTkNMbniIYgt8l81eCJGIdQF7avLQ==} engines: {node: ^14.17.0 || ^16.13.0 || >=18.0.0} @@ -8548,10 +9239,18 @@ packages: engines: {node: '>= 14'} hasBin: true + yargs-parser@20.2.9: + resolution: {integrity: sha512-y11nGElTIV+CT3Zv9t7VKl+Q3hTQoT9a1Qzezhhl6Rp21gJ/IVTW7Z3y9EWXhuUBC2Shnf+DX0antecpAwSP8w==} + engines: {node: '>=10'} + yargs-parser@21.1.1: resolution: {integrity: sha512-tVpsJW7DdjecAiFpbIB1e3qxIQsE6NoPc5/eTdrbbIC4h0LVsWhnoa3g+m2HclBIujHzsxZ4VJVA+GUuc2/LBw==} engines: {node: '>=12'} + yargs@16.2.0: + resolution: {integrity: sha512-D1mvvtDG0L5ft/jGWkLpG1+m0eQxOfaBvTNELraWj22wSVUMWxZUvYgJYcKh6jGGIkJFhH4IZPQhR4TKpc8mBw==} + engines: {node: '>=10'} + yargs@17.7.2: resolution: {integrity: sha512-7dSzzRQ++CKnNI/krKnYRV7JKKPUXMEh61soaHKg9mrWEhzFWhFnxPxGl+69cD1Ou63C13NUPCnmIcrvqCuM6w==} engines: {node: '>=12'} @@ -8564,6 +9263,10 @@ packages: resolution: {integrity: sha512-rVksvsnNCdJ/ohGc6xgPwyN8eheCxsiLM8mxuE/t/mOVqJewPuO1miLpTHQiRgTKCLexL4MeAFVagts7HmNZ2Q==} engines: {node: '>=10'} + yoctocolors@2.1.1: + resolution: {integrity: sha512-GQHQqAopRhwU8Kt1DDM8NjibDXHC8eoh1erhGAJPEyveY9qqVeXvVikNKrDz69sHowPMorbPUrH/mx8c50eiBQ==} + engines: {node: '>=18'} + zenscroll@4.0.2: resolution: {integrity: sha512-jEA1znR7b4C/NnaycInCU6h/d15ZzCd1jmsruqOKnZP6WXQSMH3W2GL+OXbkruslU4h+Tzuos0HdswzRUk/Vgg==} @@ -8767,6 +9470,9 @@ snapshots: picocolors: 1.1.0 sisteransi: 1.0.5 + '@colors/colors@1.5.0': + optional: true + '@colors/colors@1.6.0': {} '@cspotcode/source-map-support@0.8.1': @@ -9909,6 +10615,109 @@ snapshots: '@scarf/scarf@1.4.0': {} + '@sec-ant/readable-stream@0.4.1': {} + + '@semantic-release/changelog@6.0.3(semantic-release@24.2.0(typescript@5.7.2))': + dependencies: + '@semantic-release/error': 3.0.0 + aggregate-error: 3.1.0 + fs-extra: 11.2.0 + lodash: 4.17.21 + semantic-release: 24.2.0(typescript@5.7.2) + + '@semantic-release/commit-analyzer@13.0.0(semantic-release@24.2.0(typescript@5.7.2))': + dependencies: + conventional-changelog-angular: 8.0.0 + conventional-changelog-writer: 8.0.0 + conventional-commits-filter: 5.0.0 + conventional-commits-parser: 6.0.0 + debug: 4.3.7 + import-from-esm: 1.3.4 + lodash-es: 4.17.21 + micromatch: 4.0.8 + semantic-release: 24.2.0(typescript@5.7.2) + transitivePeerDependencies: + - supports-color + + '@semantic-release/error@3.0.0': {} + + '@semantic-release/error@4.0.0': {} + + '@semantic-release/git@10.0.1(semantic-release@24.2.0(typescript@5.7.2))': + dependencies: + '@semantic-release/error': 3.0.0 + aggregate-error: 3.1.0 + debug: 4.3.7 + dir-glob: 3.0.1 + execa: 5.1.1 + lodash: 4.17.21 + micromatch: 4.0.8 + p-reduce: 2.1.0 + semantic-release: 24.2.0(typescript@5.7.2) + transitivePeerDependencies: + - supports-color + + '@semantic-release/github@11.0.1(semantic-release@24.2.0(typescript@5.7.2))': + dependencies: + '@octokit/core': 6.1.2 + '@octokit/plugin-paginate-rest': 11.3.6(@octokit/core@6.1.2) + '@octokit/plugin-retry': 7.1.2(@octokit/core@6.1.2) + '@octokit/plugin-throttling': 9.3.2(@octokit/core@6.1.2) + '@semantic-release/error': 4.0.0 + aggregate-error: 5.0.0 + debug: 4.3.7 + dir-glob: 3.0.1 + globby: 14.0.2 + http-proxy-agent: 7.0.2 + https-proxy-agent: 7.0.5 + issue-parser: 7.0.1 + lodash-es: 4.17.21 + mime: 4.0.4 + p-filter: 4.1.0 + semantic-release: 24.2.0(typescript@5.7.2) + url-join: 5.0.0 + transitivePeerDependencies: + - supports-color + + '@semantic-release/npm@12.0.1(semantic-release@24.2.0(typescript@5.7.2))': + dependencies: + '@semantic-release/error': 4.0.0 + aggregate-error: 5.0.0 + execa: 9.5.2 + fs-extra: 11.2.0 + lodash-es: 4.17.21 + nerf-dart: 1.0.0 + normalize-url: 8.0.1 + npm: 10.9.2 + rc: 1.2.8 + read-pkg: 9.0.1 + registry-auth-token: 5.0.2 + semantic-release: 24.2.0(typescript@5.7.2) + semver: 7.6.3 + tempy: 3.1.0 + + '@semantic-release/release-notes-generator@14.0.2(semantic-release@24.2.0(typescript@5.7.2))': + dependencies: + conventional-changelog-angular: 8.0.0 + conventional-changelog-writer: 8.0.0 + conventional-commits-filter: 5.0.0 + conventional-commits-parser: 6.0.0 + debug: 4.3.7 + get-stream: 7.0.1 + import-from-esm: 1.3.4 + into-stream: 7.0.0 + lodash-es: 4.17.21 + read-package-up: 11.0.0 + semantic-release: 24.2.0(typescript@5.7.2) + transitivePeerDependencies: + - supports-color + + '@sindresorhus/is@4.6.0': {} + + '@sindresorhus/merge-streams@2.3.0': {} + + '@sindresorhus/merge-streams@4.0.0': {} + '@socket.io/component-emitter@3.1.2': {} '@swagger-api/apidom-ast@1.0.0-alpha.9': @@ -10743,6 +11552,8 @@ snapshots: dependencies: undici-types: 6.20.0 + '@types/normalize-package-data@2.4.4': {} + '@types/prismjs@1.26.5': {} '@types/prop-types@15.7.12': @@ -10770,6 +11581,8 @@ snapshots: dependencies: csstype: 3.1.3 + '@types/semver@7.5.8': {} + '@types/send@0.17.4': dependencies: '@types/mime': 1.3.5 @@ -11154,6 +11967,11 @@ snapshots: clean-stack: 2.2.0 indent-string: 4.0.0 + aggregate-error@5.0.0: + dependencies: + clean-stack: 5.2.0 + indent-string: 5.0.0 + ajv-keywords@3.5.2(ajv@6.12.6): dependencies: ajv: 6.12.6 @@ -11173,6 +11991,10 @@ snapshots: dependencies: type-fest: 0.21.3 + ansi-escapes@7.0.0: + dependencies: + environment: 1.1.0 + ansi-regex@5.0.1: {} ansi-regex@6.1.0: {} @@ -11187,6 +12009,8 @@ snapshots: ansi-styles@6.2.1: {} + any-promise@1.3.0: {} + apg-lite@1.0.4: {} aproba@2.0.0: {} @@ -11224,6 +12048,8 @@ snapshots: argparse@2.0.1: {} + argv-formatter@1.0.0: {} + aria-query@5.3.2: {} array-buffer-byte-length@1.0.1: @@ -11231,6 +12057,8 @@ snapshots: call-bind: 1.0.7 is-array-buffer: 3.0.4 + array-ify@1.0.0: {} + array-includes@3.1.8: dependencies: call-bind: 1.0.7 @@ -11519,6 +12347,8 @@ snapshots: ansi-styles: 4.3.0 supports-color: 7.2.0 + chalk@5.3.0: {} + change-case@3.1.0: dependencies: camel-case: 3.0.0 @@ -11540,6 +12370,8 @@ snapshots: upper-case: 1.1.3 upper-case-first: 1.1.2 + char-regex@1.0.2: {} + character-entities-legacy@1.1.4: {} character-entities@1.2.4: {} @@ -11570,6 +12402,10 @@ snapshots: clean-stack@2.2.0: {} + clean-stack@5.2.0: + dependencies: + escape-string-regexp: 5.0.0 + cli-boxes@2.2.1: {} cli-cursor@3.1.0: @@ -11583,12 +12419,33 @@ snapshots: xycolors: 0.1.2 yargs: 17.7.2 + cli-highlight@2.1.11: + dependencies: + chalk: 4.1.2 + highlight.js: 10.7.3 + mz: 2.7.0 + parse5: 5.1.1 + parse5-htmlparser2-tree-adapter: 6.0.1 + yargs: 16.2.0 + cli-spinners@2.9.2: {} + cli-table3@0.6.5: + dependencies: + string-width: 4.2.3 + optionalDependencies: + '@colors/colors': 1.5.0 + cli-width@3.0.0: {} client-only@0.0.1: {} + cliui@7.0.4: + dependencies: + string-width: 4.2.3 + strip-ansi: 6.0.1 + wrap-ansi: 7.0.0 + cliui@8.0.1: dependencies: string-width: 4.2.3 @@ -11648,6 +12505,11 @@ snapshots: commander@2.20.3: {} + compare-func@2.0.0: + dependencies: + array-ify: 1.0.0 + dot-prop: 5.3.0 + compress-commons@6.0.2: dependencies: crc-32: 1.2.2 @@ -11691,6 +12553,30 @@ snapshots: snake-case: 2.1.0 upper-case: 1.1.3 + conventional-changelog-angular@8.0.0: + dependencies: + compare-func: 2.0.0 + + conventional-changelog-conventionalcommits@8.0.0: + dependencies: + compare-func: 2.0.0 + + conventional-changelog-writer@8.0.0: + dependencies: + '@types/semver': 7.5.8 + conventional-commits-filter: 5.0.0 + handlebars: 4.7.8 + meow: 13.2.0 + semver: 7.6.3 + + conventional-commits-filter@5.0.0: {} + + conventional-commits-parser@6.0.0: + dependencies: + meow: 13.2.0 + + convert-hrtime@5.0.0: {} + convert-source-map@2.0.0: {} cookie-es@1.2.2: {} @@ -11723,6 +12609,15 @@ snapshots: object-assign: 4.1.1 vary: 1.1.2 + cosmiconfig@9.0.0(typescript@5.7.2): + dependencies: + env-paths: 2.2.1 + import-fresh: 3.3.0 + js-yaml: 4.1.0 + parse-json: 5.2.0 + optionalDependencies: + typescript: 5.7.2 + cpu-features@0.0.10: dependencies: buildcheck: 0.0.6 @@ -11768,6 +12663,10 @@ snapshots: crypto-random-string@2.0.0: {} + crypto-random-string@4.0.0: + dependencies: + type-fest: 1.4.0 + css.escape@1.5.1: {} cssesc@3.0.0: {} @@ -11992,6 +12891,10 @@ snapshots: drizzle-orm: 0.38.2(@libsql/client-wasm@0.14.0)(@types/better-sqlite3@7.6.12)(@types/react@19.0.1)(better-sqlite3@11.7.0)(mysql2@3.11.5)(react@19.0.0) zod: 3.24.1 + duplexer2@0.1.4: + dependencies: + readable-stream: 2.3.8 + eastasianwidth@0.2.0: {} effect@3.9.2: {} @@ -12002,6 +12905,8 @@ snapshots: emoji-regex@9.2.2: {} + emojilib@2.4.0: {} + emojis-list@3.0.0: {} enabled@2.0.0: {} @@ -12048,6 +12953,19 @@ snapshots: entities@4.5.0: {} + env-ci@11.1.0: + dependencies: + execa: 8.0.1 + java-properties: 1.0.2 + + env-paths@2.2.1: {} + + environment@1.1.0: {} + + error-ex@1.3.2: + dependencies: + is-arrayish: 0.2.1 + es-abstract@1.23.3: dependencies: array-buffer-byte-length: 1.0.1 @@ -12287,6 +13205,8 @@ snapshots: escape-string-regexp@4.0.0: {} + escape-string-regexp@5.0.0: {} + escodegen@2.1.0: dependencies: esprima: 4.0.1 @@ -12498,6 +13418,33 @@ snapshots: signal-exit: 3.0.7 strip-final-newline: 2.0.0 + execa@8.0.1: + dependencies: + cross-spawn: 7.0.6 + get-stream: 8.0.1 + human-signals: 5.0.0 + is-stream: 3.0.0 + merge-stream: 2.0.0 + npm-run-path: 5.3.0 + onetime: 6.0.0 + signal-exit: 4.1.0 + strip-final-newline: 3.0.0 + + execa@9.5.2: + dependencies: + '@sindresorhus/merge-streams': 4.0.0 + cross-spawn: 7.0.6 + figures: 6.1.0 + get-stream: 9.0.1 + human-signals: 8.0.0 + is-plain-obj: 4.1.0 + is-stream: 4.0.1 + npm-run-path: 6.0.0 + pretty-ms: 9.2.0 + signal-exit: 4.1.0 + strip-final-newline: 4.0.0 + yoctocolors: 2.1.1 + expand-template@2.0.3: {} expect-type@1.1.0: {} @@ -12554,10 +13501,18 @@ snapshots: fflate@0.8.2: {} + figures@2.0.0: + dependencies: + escape-string-regexp: 1.0.5 + figures@3.2.0: dependencies: escape-string-regexp: 1.0.5 + figures@6.1.0: + dependencies: + is-unicode-supported: 2.1.0 + file-entry-cache@8.0.0: dependencies: flat-cache: 4.0.1 @@ -12568,11 +13523,22 @@ snapshots: dependencies: to-regex-range: 5.0.1 + find-up-simple@1.0.0: {} + + find-up@2.1.0: + dependencies: + locate-path: 2.0.0 + find-up@5.0.0: dependencies: locate-path: 6.0.0 path-exists: 4.0.0 + find-versions@6.0.0: + dependencies: + semver-regex: 4.0.5 + super-regex: 1.0.0 + flag-icons@7.2.3: {} flat-cache@4.0.1: @@ -12603,6 +13569,11 @@ snapshots: format@0.2.2: {} + from2@2.3.0: + dependencies: + inherits: 2.0.4 + readable-stream: 2.3.8 + fs-constants@1.0.0: {} fs-extra@10.1.0: @@ -12631,6 +13602,8 @@ snapshots: function-bind@1.1.2: {} + function-timeout@1.0.2: {} + function.prototype.name@1.1.6: dependencies: call-bind: 1.0.7 @@ -12676,6 +13649,15 @@ snapshots: get-stream@6.0.1: {} + get-stream@7.0.1: {} + + get-stream@8.0.1: {} + + get-stream@9.0.1: + dependencies: + '@sec-ant/readable-stream': 0.4.1 + is-stream: 4.0.1 + get-symbol-description@1.0.2: dependencies: call-bind: 1.0.7 @@ -12697,6 +13679,15 @@ snapshots: git-hooks-list@3.1.0: {} + git-log-parser@1.2.1: + dependencies: + argv-formatter: 1.0.0 + spawn-error-forwarder: 1.0.0 + split2: 1.0.0 + stream-combiner2: 1.1.1 + through2: 2.0.5 + traverse: 0.6.8 + github-from-package@0.0.0: {} glob-parent@5.1.2: @@ -12773,6 +13764,15 @@ snapshots: merge2: 1.4.1 slash: 3.0.0 + globby@14.0.2: + dependencies: + '@sindresorhus/merge-streams': 2.3.0 + fast-glob: 3.3.2 + ignore: 5.3.2 + path-type: 5.0.0 + slash: 5.1.0 + unicorn-magic: 0.1.0 + globrex@0.1.2: {} gopd@1.0.1: @@ -12863,6 +13863,16 @@ snapshots: hono@4.6.1: {} + hook-std@3.0.0: {} + + hosted-git-info@7.0.2: + dependencies: + lru-cache: 10.4.3 + + hosted-git-info@8.0.2: + dependencies: + lru-cache: 10.4.3 + html-encoding-sniffer@4.0.0: dependencies: whatwg-encoding: 3.1.1 @@ -12902,6 +13912,10 @@ snapshots: human-signals@2.1.0: {} + human-signals@5.0.0: {} + + human-signals@8.0.0: {} + iconv-lite@0.4.24: dependencies: safer-buffer: 2.1.2 @@ -12923,12 +13937,25 @@ snapshots: parent-module: 1.0.1 resolve-from: 4.0.0 + import-from-esm@1.3.4: + dependencies: + debug: 4.3.7 + import-meta-resolve: 4.1.0 + transitivePeerDependencies: + - supports-color + import-lazy@2.1.0: {} + import-meta-resolve@4.1.0: {} + imurmurhash@0.1.4: {} indent-string@4.0.0: {} + indent-string@5.0.0: {} + + index-to-position@0.1.2: {} + inflation@2.1.0: {} inflight@1.0.6: @@ -12989,6 +14016,11 @@ snapshots: '@formatjs/icu-messageformat-parser': 2.8.0 tslib: 2.7.0 + into-stream@7.0.0: + dependencies: + from2: 2.3.0 + p-is-promise: 3.0.0 + invariant@2.2.4: dependencies: loose-envify: 1.4.0 @@ -13026,6 +14058,8 @@ snapshots: call-bind: 1.0.7 get-intrinsic: 1.2.4 + is-arrayish@0.2.1: {} + is-arrayish@0.3.2: {} is-async-function@2.0.0: @@ -13129,6 +14163,10 @@ snapshots: is-stream@2.0.1: {} + is-stream@3.0.0: {} + + is-stream@4.0.1: {} + is-string@1.0.7: dependencies: has-tostringtag: 1.0.2 @@ -13145,6 +14183,8 @@ snapshots: is-unicode-supported@0.1.0: {} + is-unicode-supported@2.1.0: {} + is-upper-case@1.1.2: dependencies: upper-case: 1.1.3 @@ -13179,6 +14219,14 @@ snapshots: transitivePeerDependencies: - encoding + issue-parser@7.0.1: + dependencies: + lodash.capitalize: 4.2.1 + lodash.escaperegexp: 4.1.2 + lodash.isplainobject: 4.0.6 + lodash.isstring: 4.0.1 + lodash.uniqby: 4.7.0 + istanbul-lib-coverage@3.2.2: {} istanbul-lib-report@3.0.1: @@ -13226,6 +14274,8 @@ snapshots: optionalDependencies: '@pkgjs/parseargs': 0.11.0 + java-properties@1.0.2: {} + jest-worker@27.5.1: dependencies: '@types/node': 22.10.2 @@ -13291,6 +14341,8 @@ snapshots: json-buffer@3.0.1: {} + json-parse-better-errors@1.0.2: {} + json-parse-even-better-errors@2.3.1: {} json-schema-traverse@0.4.1: {} @@ -13356,12 +14408,21 @@ snapshots: prelude-ls: 1.2.1 type-check: 0.4.0 + lines-and-columns@1.2.4: {} + linkify-it@5.0.0: dependencies: uc.micro: 2.1.0 linkifyjs@4.1.3: {} + load-json-file@4.0.0: + dependencies: + graceful-fs: 4.2.11 + parse-json: 4.0.0 + pify: 3.0.0 + strip-bom: 3.0.0 + loader-runner@4.3.0: {} loader-utils@2.0.4: @@ -13370,22 +14431,39 @@ snapshots: emojis-list: 3.0.0 json5: 2.2.3 + locate-path@2.0.0: + dependencies: + p-locate: 2.0.0 + path-exists: 3.0.0 + locate-path@6.0.0: dependencies: p-locate: 5.0.0 + lodash-es@4.17.21: {} + + lodash.capitalize@4.2.1: {} + lodash.clonedeep@4.5.0: {} lodash.debounce@4.0.8: {} lodash.defaults@4.2.0: {} + lodash.escaperegexp@4.1.2: {} + lodash.get@4.4.2: {} lodash.isarguments@3.1.0: {} + lodash.isplainobject@4.0.6: {} + + lodash.isstring@4.0.1: {} + lodash.merge@4.6.2: {} + lodash.uniqby@4.7.0: {} + lodash@4.17.21: {} log-symbols@3.0.0: @@ -13500,10 +14578,25 @@ snapshots: punycode.js: 2.3.1 uc.micro: 2.1.0 + marked-terminal@7.2.1(marked@12.0.2): + dependencies: + ansi-escapes: 7.0.0 + ansi-regex: 6.1.0 + chalk: 5.3.0 + cli-highlight: 2.1.11 + cli-table3: 0.6.5 + marked: 12.0.2 + node-emoji: 2.2.0 + supports-hyperlinks: 3.1.0 + + marked@12.0.2: {} + mdurl@2.0.0: {} media-typer@0.3.0: {} + meow@13.2.0: {} + merge-stream@2.0.0: {} merge2@1.4.1: {} @@ -13521,8 +14614,12 @@ snapshots: mime@3.0.0: {} + mime@4.0.4: {} + mimic-fn@2.1.0: {} + mimic-fn@4.0.0: {} + mimic-response@3.1.0: {} min-document@2.19.0: @@ -13610,6 +14707,12 @@ snapshots: seq-queue: 0.0.5 sqlstring: 2.3.3 + mz@2.7.0: + dependencies: + any-promise: 1.3.0 + object-assign: 4.1.1 + thenify-all: 1.6.0 + named-placeholders@1.1.3: dependencies: lru-cache: 7.18.3 @@ -13633,6 +14736,8 @@ snapshots: neotraverse@0.6.18: {} + nerf-dart@1.0.0: {} + netmask@2.0.2: {} next-auth@5.0.0-beta.25(next@14.2.20(@babel/core@7.26.0)(react-dom@19.0.0(react@19.0.0))(react@19.0.0)(sass@1.83.0))(react@19.0.0): @@ -13705,6 +14810,13 @@ snapshots: node-domexception@1.0.0: {} + node-emoji@2.2.0: + dependencies: + '@sindresorhus/is': 4.6.0 + char-regex: 1.0.2 + emojilib: 2.4.0 + skin-tone: 2.0.0 + node-fetch-commonjs@3.3.2: dependencies: node-domexception: 1.0.0 @@ -13744,12 +14856,31 @@ snapshots: dependencies: abbrev: 1.1.1 + normalize-package-data@6.0.2: + dependencies: + hosted-git-info: 7.0.2 + semver: 7.6.3 + validate-npm-package-license: 3.0.4 + normalize-path@3.0.0: {} + normalize-url@8.0.1: {} + npm-run-path@4.0.1: dependencies: path-key: 3.1.1 + npm-run-path@5.3.0: + dependencies: + path-key: 4.0.0 + + npm-run-path@6.0.0: + dependencies: + path-key: 4.0.0 + unicorn-magic: 0.3.0 + + npm@10.9.2: {} + npmlog@5.0.1: dependencies: are-we-there-yet: 2.0.0 @@ -13834,6 +14965,10 @@ snapshots: dependencies: mimic-fn: 2.1.0 + onetime@6.0.0: + dependencies: + mimic-fn: 4.0.0 + openapi-path-templating@1.6.0: dependencies: apg-lite: 1.0.4 @@ -13882,10 +15017,26 @@ snapshots: os-tmpdir@1.0.2: {} + p-each-series@3.0.0: {} + + p-filter@4.1.0: + dependencies: + p-map: 7.0.3 + + p-is-promise@3.0.0: {} + + p-limit@1.3.0: + dependencies: + p-try: 1.0.0 + p-limit@3.1.0: dependencies: yocto-queue: 0.1.0 + p-locate@2.0.0: + dependencies: + p-limit: 1.3.0 + p-locate@5.0.0: dependencies: p-limit: 3.1.0 @@ -13894,6 +15045,14 @@ snapshots: dependencies: aggregate-error: 3.1.0 + p-map@7.0.3: {} + + p-reduce@2.1.0: {} + + p-reduce@3.0.0: {} + + p-try@1.0.0: {} + pac-proxy-agent@7.0.2: dependencies: '@tootallnate/quickjs-emscripten': 0.23.0 @@ -13933,8 +15092,36 @@ snapshots: is-decimal: 1.0.4 is-hexadecimal: 1.0.4 + parse-json@4.0.0: + dependencies: + error-ex: 1.3.2 + json-parse-better-errors: 1.0.2 + + parse-json@5.2.0: + dependencies: + '@babel/code-frame': 7.26.2 + error-ex: 1.3.2 + json-parse-even-better-errors: 2.3.1 + lines-and-columns: 1.2.4 + + parse-json@8.1.0: + dependencies: + '@babel/code-frame': 7.26.2 + index-to-position: 0.1.2 + type-fest: 4.28.0 + parse-ms@3.0.0: {} + parse-ms@4.0.0: {} + + parse5-htmlparser2-tree-adapter@6.0.1: + dependencies: + parse5: 6.0.1 + + parse5@5.1.1: {} + + parse5@6.0.1: {} + parse5@7.1.2: dependencies: entities: 4.5.0 @@ -13948,12 +15135,16 @@ snapshots: dependencies: no-case: 2.3.2 + path-exists@3.0.0: {} + path-exists@4.0.0: {} path-is-absolute@1.0.1: {} path-key@3.1.1: {} + path-key@4.0.0: {} + path-parse@1.0.7: {} path-scurry@1.11.1: @@ -13968,6 +15159,8 @@ snapshots: path-type@4.0.0: {} + path-type@5.0.0: {} + pathe@1.1.2: {} pathval@2.0.0: {} @@ -13980,6 +15173,8 @@ snapshots: picomatch@4.0.2: {} + pify@3.0.0: {} + piscina@4.6.1: optionalDependencies: nice-napi: 1.0.2 @@ -13988,6 +15183,11 @@ snapshots: dependencies: '@babel/runtime': 7.25.6 + pkg-conf@2.1.0: + dependencies: + find-up: 2.1.0 + load-json-file: 4.0.0 + playwright-core@1.49.0: {} playwright@1.49.0: @@ -14088,6 +15288,10 @@ snapshots: dependencies: parse-ms: 3.0.0 + pretty-ms@9.2.0: + dependencies: + parse-ms: 4.0.0 + pretty-print-error@1.1.2(patch_hash=4arrfgbz7em6s4gqywse7esg4u): dependencies: kleur: 4.1.5 @@ -14461,6 +15665,20 @@ snapshots: react@19.0.0: {} + read-package-up@11.0.0: + dependencies: + find-up-simple: 1.0.0 + read-pkg: 9.0.1 + type-fest: 4.28.0 + + read-pkg@9.0.1: + dependencies: + '@types/normalize-package-data': 2.4.4 + normalize-package-data: 6.0.2 + parse-json: 8.1.0 + type-fest: 4.28.0 + unicorn-magic: 0.1.0 + readable-stream@2.3.8: dependencies: core-util-is: 1.0.3 @@ -14570,6 +15788,8 @@ snapshots: resolve-from@4.0.0: {} + resolve-from@5.0.0: {} + resolve-pkg-maps@1.0.0: {} resolve@1.22.8: @@ -14710,12 +15930,53 @@ snapshots: ajv: 6.12.6 ajv-keywords: 3.5.2(ajv@6.12.6) + semantic-release@24.2.0(typescript@5.7.2): + dependencies: + '@semantic-release/commit-analyzer': 13.0.0(semantic-release@24.2.0(typescript@5.7.2)) + '@semantic-release/error': 4.0.0 + '@semantic-release/github': 11.0.1(semantic-release@24.2.0(typescript@5.7.2)) + '@semantic-release/npm': 12.0.1(semantic-release@24.2.0(typescript@5.7.2)) + '@semantic-release/release-notes-generator': 14.0.2(semantic-release@24.2.0(typescript@5.7.2)) + aggregate-error: 5.0.0 + cosmiconfig: 9.0.0(typescript@5.7.2) + debug: 4.3.7 + env-ci: 11.1.0 + execa: 9.5.2 + figures: 6.1.0 + find-versions: 6.0.0 + get-stream: 6.0.1 + git-log-parser: 1.2.1 + hook-std: 3.0.0 + hosted-git-info: 8.0.2 + import-from-esm: 1.3.4 + lodash-es: 4.17.21 + marked: 12.0.2 + marked-terminal: 7.2.1(marked@12.0.2) + micromatch: 4.0.8 + p-each-series: 3.0.0 + p-reduce: 3.0.0 + read-package-up: 11.0.0 + resolve-from: 5.0.0 + semver: 7.6.3 + semver-diff: 4.0.0 + signale: 1.4.0 + yargs: 17.7.2 + transitivePeerDependencies: + - supports-color + - typescript + semver-diff@3.1.1: dependencies: semver: 6.3.1 + semver-diff@4.0.0: + dependencies: + semver: 7.6.3 + semver-parser@4.1.7: {} + semver-regex@4.0.5: {} + semver@6.3.1: {} semver@7.6.2: {} @@ -14785,6 +16046,12 @@ snapshots: signal-exit@4.1.0: {} + signale@1.4.0: + dependencies: + chalk: 2.4.2 + figures: 2.0.0 + pkg-conf: 2.1.0 + simple-concat@1.0.1: {} simple-get@4.0.1: @@ -14805,8 +16072,14 @@ snapshots: sisteransi@1.0.5: {} + skin-tone@2.0.0: + dependencies: + unicode-emoji-modifier-base: 1.0.0 + slash@3.0.0: {} + slash@5.1.0: {} + smart-buffer@4.2.0: {} snake-case@2.1.0: @@ -14891,8 +16164,28 @@ snapshots: space-separated-tokens@1.1.5: {} + spawn-error-forwarder@1.0.0: {} + + spdx-correct@3.2.0: + dependencies: + spdx-expression-parse: 3.0.1 + spdx-license-ids: 3.0.20 + + spdx-exceptions@2.5.0: {} + + spdx-expression-parse@3.0.1: + dependencies: + spdx-exceptions: 2.5.0 + spdx-license-ids: 3.0.20 + + spdx-license-ids@3.0.20: {} + split-ca@1.0.1: {} + split2@1.0.0: + dependencies: + through2: 2.0.5 + sprintf-js@1.0.3: {} sprintf-js@1.1.3: {} @@ -14922,6 +16215,11 @@ snapshots: std-env@3.8.0: {} + stream-combiner2@1.1.1: + dependencies: + duplexer2: 0.1.4 + readable-stream: 2.3.8 + streamsearch@1.1.0: {} streamx@2.20.1: @@ -15011,6 +16309,10 @@ snapshots: strip-final-newline@2.0.0: {} + strip-final-newline@3.0.0: {} + + strip-final-newline@4.0.0: {} + strip-json-comments@2.0.1: {} strip-json-comments@3.1.1: {} @@ -15030,6 +16332,11 @@ snapshots: dependencies: postcss: 8.4.47 + super-regex@1.0.0: + dependencies: + function-timeout: 1.0.2 + time-span: 5.1.0 + superjson@2.2.2: dependencies: copy-anything: 3.0.5 @@ -15046,6 +16353,11 @@ snapshots: dependencies: has-flag: 4.0.0 + supports-hyperlinks@3.1.0: + dependencies: + has-flag: 4.0.0 + supports-color: 7.2.0 + supports-preserve-symlinks-flag@1.0.0: {} swagger-client@3.31.0: @@ -15174,6 +16486,15 @@ snapshots: mkdirp: 1.0.4 yallist: 4.0.0 + temp-dir@3.0.0: {} + + tempy@3.1.0: + dependencies: + is-stream: 3.0.0 + temp-dir: 3.0.0 + type-fest: 2.19.0 + unique-string: 3.0.0 + terser-webpack-plugin@5.3.10(webpack@5.94.0): dependencies: '@jridgewell/trace-mapping': 0.3.25 @@ -15222,8 +16543,25 @@ snapshots: text-hex@1.0.0: {} + thenify-all@1.6.0: + dependencies: + thenify: 3.3.1 + + thenify@3.3.1: + dependencies: + any-promise: 1.3.0 + + through2@2.0.5: + dependencies: + readable-stream: 2.3.8 + xtend: 4.0.2 + through@2.3.8: {} + time-span@5.1.0: + dependencies: + convert-hrtime: 5.0.0 + tiny-invariant@1.3.3: {} tinybench@2.9.0: {} @@ -15291,6 +16629,8 @@ snapshots: dependencies: punycode: 2.3.1 + traverse@0.6.8: {} + tree-kill@1.2.2: {} tree-sitter-json@0.20.2: @@ -15414,6 +16754,10 @@ snapshots: type-fest@0.21.3: {} + type-fest@1.4.0: {} + + type-fest@2.19.0: {} + type-fest@4.28.0: {} type-is@1.6.18: @@ -15509,10 +16853,20 @@ snapshots: node-fetch-native: 1.6.4 pathe: 1.1.2 + unicode-emoji-modifier-base@1.0.0: {} + + unicorn-magic@0.1.0: {} + + unicorn-magic@0.3.0: {} + unique-string@2.0.0: dependencies: crypto-random-string: 2.0.0 + unique-string@3.0.0: + dependencies: + crypto-random-string: 4.0.0 + universal-github-app-jwt@2.2.0: {} universal-user-agent@7.0.2: {} @@ -15572,6 +16926,8 @@ snapshots: dependencies: punycode: 2.3.1 + url-join@5.0.0: {} + url-parse@1.5.10: dependencies: querystringify: 2.2.0 @@ -15663,6 +17019,11 @@ snapshots: v8-compile-cache-lib@3.0.1: {} + validate-npm-package-license@3.0.4: + dependencies: + spdx-correct: 3.2.0 + spdx-expression-parse: 3.0.1 + validate-npm-package-name@5.0.1: {} vary@1.1.2: {} @@ -15990,8 +17351,20 @@ snapshots: yaml@2.5.1: {} + yargs-parser@20.2.9: {} + yargs-parser@21.1.1: {} + yargs@16.2.0: + dependencies: + cliui: 7.0.4 + escalade: 3.2.0 + get-caller-file: 2.0.5 + require-directory: 2.1.1 + string-width: 4.2.3 + y18n: 5.0.8 + yargs-parser: 20.2.9 + yargs@17.7.2: dependencies: cliui: 8.0.1 @@ -16006,6 +17379,8 @@ snapshots: yocto-queue@0.1.0: {} + yoctocolors@2.1.1: {} + zenscroll@4.0.2: {} zip-stream@6.0.1: diff --git a/tooling/semver/package.json b/tooling/semver/package.json deleted file mode 100644 index 160e32039..000000000 --- a/tooling/semver/package.json +++ /dev/null @@ -1,13 +0,0 @@ -{ - "name": "@alparr/semver", - "private": true, - "version": "0.1.0", - "plugins": [ - "@semantic-release/commit-analyzer", - "@semantic-release/release-notes-generator", - "@semantic-release/changelog", - "@semantic-release/github", - "@semantic-release/npm", - "@semantic-release/git" - ] -} diff --git a/tooling/semver/release.config.cjs b/tooling/semver/release.config.cjs deleted file mode 100644 index 5b2b41cbd..000000000 --- a/tooling/semver/release.config.cjs +++ /dev/null @@ -1,16 +0,0 @@ -/** - * @type {import('semantic-release').GlobalConfig} - */ -module.exports = { - branches: ["main"], - prepare: [ - "@semantic-release/changelog", - "@semantic-release/npm", - { - path: "@semantic-release/git", - assets: ["package.json", "package-lock.json", "CHANGELOG.md"], - message: - "chore(release): ${nextRelease.version} [skip ci]\n\n${nextRelease.notes}", - }, - ], -};