From 378eb0f3b8497431e5ab61fe2e0d41357267ea33 Mon Sep 17 00:00:00 2001 From: vincanger <70215737+vincanger@users.noreply.github.com> Date: Thu, 20 Nov 2025 16:42:04 +0100 Subject: [PATCH 1/5] Add roadmap feature and update dependencies Introduces a new Roadmap component and related operations to the landing page, adds a getGithubRoadmap query, and updates navigation constants. Also updates several dependencies and lockfile entries, including TailwindCSS and React-related packages. --- opensaas-sh/app_diff/main.wasp.diff | 18 +- opensaas-sh/app_diff/package-lock.json.diff | 982 +++++++++++++++++- opensaas-sh/app_diff/src/client/App.tsx.diff | 17 + .../components/NavBar/constants.ts.diff | 7 +- .../src/landing-page/LandingPage.tsx.diff | 8 +- .../components/Examples/Auth.tsx.diff | 3 +- .../components/Hero/Hero.tsx.diff | 4 +- .../components/HighlightedFeature.tsx.diff | 22 +- .../landing-page/components/Roadmap.tsx.diff | 150 +++ .../src/landing-page/contentSections.tsx.diff | 7 +- .../src/landing-page/operations.ts.diff | 211 ++++ 11 files changed, 1403 insertions(+), 26 deletions(-) create mode 100644 opensaas-sh/app_diff/src/landing-page/components/Roadmap.tsx.diff create mode 100644 opensaas-sh/app_diff/src/landing-page/operations.ts.diff diff --git a/opensaas-sh/app_diff/main.wasp.diff b/opensaas-sh/app_diff/main.wasp.diff index 826d36a94..48d953476 100644 --- a/opensaas-sh/app_diff/main.wasp.diff +++ b/opensaas-sh/app_diff/main.wasp.diff @@ -106,7 +106,19 @@ }, }, } -@@ -207,9 +205,9 @@ +@@ -101,6 +99,11 @@ + component: import LandingPage from "@src/landing-page/LandingPage" + } + ++query getGithubRoadmap { ++ fn: import { getGithubRoadmap } from "@src/landing-page/operations", ++ entities: [] ++} ++ + //#region Auth Pages + route LoginRoute { path: "/login", to: LoginPage } + page LoginPage { +@@ -207,9 +210,9 @@ } api paymentsWebhook { @@ -118,7 +130,7 @@ httpRoute: (POST, "/payments-webhook") } //#endregion -@@ -245,6 +243,17 @@ +@@ -245,6 +248,17 @@ fn: import { deleteFile } from "@src/file-upload/operations", entities: [User, File] } @@ -136,7 +148,7 @@ //#endregion //#region Analytics -@@ -291,7 +300,6 @@ +@@ -291,7 +305,6 @@ component: import AdminCalendar from "@src/admin/elements/calendar/CalendarPage" } diff --git a/opensaas-sh/app_diff/package-lock.json.diff b/opensaas-sh/app_diff/package-lock.json.diff index 2c9374ae6..ba5c8408e 100644 --- a/opensaas-sh/app_diff/package-lock.json.diff +++ b/opensaas-sh/app_diff/package-lock.json.diff @@ -1,6 +1,6 @@ --- template/app/package-lock.json +++ opensaas-sh/app/package-lock.json -@@ -0,0 +1,14527 @@ +@@ -0,0 +1,15497 @@ +{ + "name": "opensaas", + "lockfileVersion": 3, @@ -8,6 +8,10 @@ + "packages": { + "": { + "name": "opensaas", ++ "workspaces": [ ++ ".wasp/build/*", ++ ".wasp/out/*" ++ ], + "dependencies": { + "@aws-sdk/client-s3": "^3.523.0", + "@aws-sdk/s3-presigned-post": "^3.750.0", @@ -89,7 +93,7 @@ + "react-hook-form": "^7.45.4", + "react-router-dom": "^6.26.2", + "superjson": "^2.2.1", -+ "tailwindcss": "^3.2.7", ++ "tailwindcss": "^3.4.17", + "vitest": "^1.2.1", + "zod": "^3.23.8" + }, @@ -101,6 +105,72 @@ + "@tanstack/react-query": "~4.41.0" + } + }, ++ ".wasp/out/server": { ++ "name": "@wasp.sh/generated-server-dev", ++ "version": "0.0.0", ++ "dependencies": { ++ "cookie-parser": "~1.4.6", ++ "cors": "^2.8.5", ++ "dotenv": "^16.0.2", ++ "express": "~5.1.0", ++ "helmet": "^6.0.0", ++ "morgan": "~1.10.0", ++ "superjson": "^2.2.1" ++ }, ++ "devDependencies": { ++ "@rollup/plugin-node-resolve": "^16.0.0", ++ "@tsconfig/node22": "latest", ++ "@types/cors": "^2.8.5", ++ "@types/express": "^5.0.0", ++ "@types/express-serve-static-core": "^5.0.0", ++ "@types/node": "^22.0.0", ++ "nodemon": "^2.0.19", ++ "rollup": "^4.9.6", ++ "rollup-plugin-esbuild": "^6.1.1", ++ "typescript": "5.8.2" ++ }, ++ "engines": { ++ "node": ">=22.12.0" ++ } ++ }, ++ ".wasp/out/server/node_modules/@types/node": { ++ "version": "22.19.1", ++ "resolved": "https://registry.npmjs.org/@types/node/-/node-22.19.1.tgz", ++ "integrity": "sha512-LCCV0HdSZZZb34qifBsyWlUmok6W7ouER+oQIGBScS8EsZsQbrtFTUrDX4hOl+CS6p7cnNC4td+qrSVGSCTUfQ==", ++ "dev": true, ++ "license": "MIT", ++ "dependencies": { ++ "undici-types": "~6.21.0" ++ } ++ }, ++ ".wasp/out/server/node_modules/undici-types": { ++ "version": "6.21.0", ++ "resolved": "https://registry.npmjs.org/undici-types/-/undici-types-6.21.0.tgz", ++ "integrity": "sha512-iwDZqg0QAGrg9Rav5H4n0M64c3mkR59cJ6wQp+7C4nI0gsmExaedaYLNO44eT4AtBBwjbTiGPMlt2Md0T9H9JQ==", ++ "dev": true, ++ "license": "MIT" ++ }, ++ ".wasp/out/web-app": { ++ "name": "@wasp.sh/generated-webapp-dev", ++ "version": "0.0.0", ++ "dependencies": { ++ "@tanstack/react-query": "~4.41.0", ++ "axios": "^1.4.0", ++ "react": "^18.2.0", ++ "react-dom": "^18.2.0", ++ "react-router-dom": "^6.26.2" ++ }, ++ "devDependencies": { ++ "@tsconfig/vite-react": "^7.0.0", ++ "@types/react": "^18.0.37", ++ "@types/react-dom": "^18.0.11", ++ "@vitejs/plugin-react": "^4.7.0", ++ "typescript": "5.8.2" ++ }, ++ "engines": { ++ "node": ">=22.12.0" ++ } ++ }, + "node_modules/@adobe/css-tools": { + "version": "4.4.4", + "resolved": "https://registry.npmjs.org/@adobe/css-tools/-/css-tools-4.4.4.tgz", @@ -1054,15 +1124,234 @@ + "node": ">=6.9.0" + } + }, ++ "node_modules/@babel/compat-data": { ++ "version": "7.28.5", ++ "resolved": "https://registry.npmjs.org/@babel/compat-data/-/compat-data-7.28.5.tgz", ++ "integrity": "sha512-6uFXyCayocRbqhZOB+6XcuZbkMNimwfVGFji8CTZnCzOHVGvDqzvitu1re2AU5LROliz7eQPhB8CpAMvnx9EjA==", ++ "dev": true, ++ "license": "MIT", ++ "engines": { ++ "node": ">=6.9.0" ++ } ++ }, ++ "node_modules/@babel/core": { ++ "version": "7.28.5", ++ "resolved": "https://registry.npmjs.org/@babel/core/-/core-7.28.5.tgz", ++ "integrity": "sha512-e7jT4DxYvIDLk1ZHmU/m/mB19rex9sv0c2ftBtjSBv+kVM/902eh0fINUzD7UwLLNR+jU585GxUJ8/EBfAM5fw==", ++ "dev": true, ++ "license": "MIT", ++ "dependencies": { ++ "@babel/code-frame": "^7.27.1", ++ "@babel/generator": "^7.28.5", ++ "@babel/helper-compilation-targets": "^7.27.2", ++ "@babel/helper-module-transforms": "^7.28.3", ++ "@babel/helpers": "^7.28.4", ++ "@babel/parser": "^7.28.5", ++ "@babel/template": "^7.27.2", ++ "@babel/traverse": "^7.28.5", ++ "@babel/types": "^7.28.5", ++ "@jridgewell/remapping": "^2.3.5", ++ "convert-source-map": "^2.0.0", ++ "debug": "^4.1.0", ++ "gensync": "^1.0.0-beta.2", ++ "json5": "^2.2.3", ++ "semver": "^6.3.1" ++ }, ++ "engines": { ++ "node": ">=6.9.0" ++ }, ++ "funding": { ++ "type": "opencollective", ++ "url": "https://opencollective.com/babel" ++ } ++ }, ++ "node_modules/@babel/generator": { ++ "version": "7.28.5", ++ "resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.28.5.tgz", ++ "integrity": "sha512-3EwLFhZ38J4VyIP6WNtt2kUdW9dokXA9Cr4IVIFHuCpZ3H8/YFOl5JjZHisrn1fATPBmKKqXzDFvh9fUwHz6CQ==", ++ "dev": true, ++ "license": "MIT", ++ "dependencies": { ++ "@babel/parser": "^7.28.5", ++ "@babel/types": "^7.28.5", ++ "@jridgewell/gen-mapping": "^0.3.12", ++ "@jridgewell/trace-mapping": "^0.3.28", ++ "jsesc": "^3.0.2" ++ }, ++ "engines": { ++ "node": ">=6.9.0" ++ } ++ }, ++ "node_modules/@babel/helper-compilation-targets": { ++ "version": "7.27.2", ++ "resolved": "https://registry.npmjs.org/@babel/helper-compilation-targets/-/helper-compilation-targets-7.27.2.tgz", ++ "integrity": "sha512-2+1thGUUWWjLTYTHZWK1n8Yga0ijBz1XAhUXcKy81rd5g6yh7hGqMp45v7cadSbEHc9G3OTv45SyneRN3ps4DQ==", ++ "dev": true, ++ "license": "MIT", ++ "dependencies": { ++ "@babel/compat-data": "^7.27.2", ++ "@babel/helper-validator-option": "^7.27.1", ++ "browserslist": "^4.24.0", ++ "lru-cache": "^5.1.1", ++ "semver": "^6.3.1" ++ }, ++ "engines": { ++ "node": ">=6.9.0" ++ } ++ }, ++ "node_modules/@babel/helper-compilation-targets/node_modules/lru-cache": { ++ "version": "5.1.1", ++ "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-5.1.1.tgz", ++ "integrity": "sha512-KpNARQA3Iwv+jTA0utUVVbrh+Jlrr1Fv0e56GGzAFOXN7dk/FviaDW8LHmK52DlcH4WP2n6gI8vN1aesBFgo9w==", ++ "dev": true, ++ "license": "ISC", ++ "dependencies": { ++ "yallist": "^3.0.2" ++ } ++ }, ++ "node_modules/@babel/helper-globals": { ++ "version": "7.28.0", ++ "resolved": "https://registry.npmjs.org/@babel/helper-globals/-/helper-globals-7.28.0.tgz", ++ "integrity": "sha512-+W6cISkXFa1jXsDEdYA8HeevQT/FULhxzR99pxphltZcVaugps53THCeiWA8SguxxpSp3gKPiuYfSWopkLQ4hw==", ++ "dev": true, ++ "license": "MIT", ++ "engines": { ++ "node": ">=6.9.0" ++ } ++ }, ++ "node_modules/@babel/helper-module-imports": { ++ "version": "7.27.1", ++ "resolved": "https://registry.npmjs.org/@babel/helper-module-imports/-/helper-module-imports-7.27.1.tgz", ++ "integrity": "sha512-0gSFWUPNXNopqtIPQvlD5WgXYI5GY2kP2cCvoT8kczjbfcfuIljTbcWrulD1CIPIX2gt1wghbDy08yE1p+/r3w==", ++ "dev": true, ++ "license": "MIT", ++ "dependencies": { ++ "@babel/traverse": "^7.27.1", ++ "@babel/types": "^7.27.1" ++ }, ++ "engines": { ++ "node": ">=6.9.0" ++ } ++ }, ++ "node_modules/@babel/helper-module-transforms": { ++ "version": "7.28.3", ++ "resolved": "https://registry.npmjs.org/@babel/helper-module-transforms/-/helper-module-transforms-7.28.3.tgz", ++ "integrity": "sha512-gytXUbs8k2sXS9PnQptz5o0QnpLL51SwASIORY6XaBKF88nsOT0Zw9szLqlSGQDP/4TljBAD5y98p2U1fqkdsw==", ++ "dev": true, ++ "license": "MIT", ++ "dependencies": { ++ "@babel/helper-module-imports": "^7.27.1", ++ "@babel/helper-validator-identifier": "^7.27.1", ++ "@babel/traverse": "^7.28.3" ++ }, ++ "engines": { ++ "node": ">=6.9.0" ++ }, ++ "peerDependencies": { ++ "@babel/core": "^7.0.0" ++ } ++ }, ++ "node_modules/@babel/helper-plugin-utils": { ++ "version": "7.27.1", ++ "resolved": "https://registry.npmjs.org/@babel/helper-plugin-utils/-/helper-plugin-utils-7.27.1.tgz", ++ "integrity": "sha512-1gn1Up5YXka3YYAHGKpbideQ5Yjf1tDa9qYcgysz+cNCXukyLl6DjPXhD3VRwSb8c0J9tA4b2+rHEZtc6R0tlw==", ++ "dev": true, ++ "license": "MIT", ++ "engines": { ++ "node": ">=6.9.0" ++ } ++ }, ++ "node_modules/@babel/helper-string-parser": { ++ "version": "7.27.1", ++ "resolved": "https://registry.npmjs.org/@babel/helper-string-parser/-/helper-string-parser-7.27.1.tgz", ++ "integrity": "sha512-qMlSxKbpRlAridDExk92nSobyDdpPijUq2DW6oDnUqd0iOGxmQjyqhMIihI9+zv4LPyZdRje2cavWPbCbWm3eA==", ++ "dev": true, ++ "license": "MIT", ++ "engines": { ++ "node": ">=6.9.0" ++ } ++ }, + "node_modules/@babel/helper-validator-identifier": { ++ "version": "7.28.5", ++ "resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.28.5.tgz", ++ "integrity": "sha512-qSs4ifwzKJSV39ucNjsvc6WVHs6b7S03sOh2OcHF9UHfVPqWWALUsNUVzhSBiItjRZoLHx7nIarVjqKVusUZ1Q==", ++ "license": "MIT", ++ "engines": { ++ "node": ">=6.9.0" ++ } ++ }, ++ "node_modules/@babel/helper-validator-option": { + "version": "7.27.1", -+ "resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.27.1.tgz", -+ "integrity": "sha512-D2hP9eA+Sqx1kBZgzxZh0y1trbuU+JoDkiEwqhQ36nodYqJwyEIhPSdMNd7lOm/4io72luTPWH20Yda0xOuUow==", ++ "resolved": "https://registry.npmjs.org/@babel/helper-validator-option/-/helper-validator-option-7.27.1.tgz", ++ "integrity": "sha512-YvjJow9FxbhFFKDSuFnVCe2WxXk1zWc22fFePVNEaWJEu8IrZVlda6N0uHwzZrUM1il7NC9Mlp4MaJYbYd9JSg==", ++ "dev": true, ++ "license": "MIT", ++ "engines": { ++ "node": ">=6.9.0" ++ } ++ }, ++ "node_modules/@babel/helpers": { ++ "version": "7.28.4", ++ "resolved": "https://registry.npmjs.org/@babel/helpers/-/helpers-7.28.4.tgz", ++ "integrity": "sha512-HFN59MmQXGHVyYadKLVumYsA9dBFun/ldYxipEjzA4196jpLZd8UjEEBLkbEkvfYreDqJhZxYAWFPtrfhNpj4w==", ++ "dev": true, + "license": "MIT", ++ "dependencies": { ++ "@babel/template": "^7.27.2", ++ "@babel/types": "^7.28.4" ++ }, + "engines": { + "node": ">=6.9.0" + } + }, ++ "node_modules/@babel/parser": { ++ "version": "7.28.5", ++ "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.28.5.tgz", ++ "integrity": "sha512-KKBU1VGYR7ORr3At5HAtUQ+TV3SzRCXmA/8OdDZiLDBIZxVyzXuztPjfLd3BV1PRAQGCMWWSHYhL0F8d5uHBDQ==", ++ "dev": true, ++ "license": "MIT", ++ "dependencies": { ++ "@babel/types": "^7.28.5" ++ }, ++ "bin": { ++ "parser": "bin/babel-parser.js" ++ }, ++ "engines": { ++ "node": ">=6.0.0" ++ } ++ }, ++ "node_modules/@babel/plugin-transform-react-jsx-self": { ++ "version": "7.27.1", ++ "resolved": "https://registry.npmjs.org/@babel/plugin-transform-react-jsx-self/-/plugin-transform-react-jsx-self-7.27.1.tgz", ++ "integrity": "sha512-6UzkCs+ejGdZ5mFFC/OCUrv028ab2fp1znZmCZjAOBKiBK2jXD1O+BPSfX8X2qjJ75fZBMSnQn3Rq2mrBJK2mw==", ++ "dev": true, ++ "license": "MIT", ++ "dependencies": { ++ "@babel/helper-plugin-utils": "^7.27.1" ++ }, ++ "engines": { ++ "node": ">=6.9.0" ++ }, ++ "peerDependencies": { ++ "@babel/core": "^7.0.0-0" ++ } ++ }, ++ "node_modules/@babel/plugin-transform-react-jsx-source": { ++ "version": "7.27.1", ++ "resolved": "https://registry.npmjs.org/@babel/plugin-transform-react-jsx-source/-/plugin-transform-react-jsx-source-7.27.1.tgz", ++ "integrity": "sha512-zbwoTsBruTeKB9hSq73ha66iFeJHuaFkUbwvqElnygoNbj/jHRsSeokowZFN3CZ64IvEqcmmkVe89OPXc7ldAw==", ++ "dev": true, ++ "license": "MIT", ++ "dependencies": { ++ "@babel/helper-plugin-utils": "^7.27.1" ++ }, ++ "engines": { ++ "node": ">=6.9.0" ++ }, ++ "peerDependencies": { ++ "@babel/core": "^7.0.0-0" ++ } ++ }, + "node_modules/@babel/runtime": { + "version": "7.28.4", + "resolved": "https://registry.npmjs.org/@babel/runtime/-/runtime-7.28.4.tgz", @@ -1072,6 +1361,54 @@ + "node": ">=6.9.0" + } + }, ++ "node_modules/@babel/template": { ++ "version": "7.27.2", ++ "resolved": "https://registry.npmjs.org/@babel/template/-/template-7.27.2.tgz", ++ "integrity": "sha512-LPDZ85aEJyYSd18/DkjNh4/y1ntkE5KwUHWTiqgRxruuZL2F1yuHligVHLvcHY2vMHXttKFpJn6LwfI7cw7ODw==", ++ "dev": true, ++ "license": "MIT", ++ "dependencies": { ++ "@babel/code-frame": "^7.27.1", ++ "@babel/parser": "^7.27.2", ++ "@babel/types": "^7.27.1" ++ }, ++ "engines": { ++ "node": ">=6.9.0" ++ } ++ }, ++ "node_modules/@babel/traverse": { ++ "version": "7.28.5", ++ "resolved": "https://registry.npmjs.org/@babel/traverse/-/traverse-7.28.5.tgz", ++ "integrity": "sha512-TCCj4t55U90khlYkVV/0TfkJkAkUg3jZFA3Neb7unZT8CPok7iiRfaX0F+WnqWqt7OxhOn0uBKXCw4lbL8W0aQ==", ++ "dev": true, ++ "license": "MIT", ++ "dependencies": { ++ "@babel/code-frame": "^7.27.1", ++ "@babel/generator": "^7.28.5", ++ "@babel/helper-globals": "^7.28.0", ++ "@babel/parser": "^7.28.5", ++ "@babel/template": "^7.27.2", ++ "@babel/types": "^7.28.5", ++ "debug": "^4.3.1" ++ }, ++ "engines": { ++ "node": ">=6.9.0" ++ } ++ }, ++ "node_modules/@babel/types": { ++ "version": "7.28.5", ++ "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.28.5.tgz", ++ "integrity": "sha512-qQ5m48eI/MFLQ5PxQj4PFaprjyCTLI37ElWMmNs0K8Lk3dVeOdNpB3ks8jc7yM5CDmVC73eMVk/trk3fgmrUpA==", ++ "dev": true, ++ "license": "MIT", ++ "dependencies": { ++ "@babel/helper-string-parser": "^7.27.1", ++ "@babel/helper-validator-identifier": "^7.28.5" ++ }, ++ "engines": { ++ "node": ">=6.9.0" ++ } ++ }, + "node_modules/@emnapi/core": { + "version": "1.5.0", + "resolved": "https://registry.npmjs.org/@emnapi/core/-/core-1.5.0.tgz", @@ -1766,6 +2103,17 @@ + "@jridgewell/trace-mapping": "^0.3.24" + } + }, ++ "node_modules/@jridgewell/remapping": { ++ "version": "2.3.5", ++ "resolved": "https://registry.npmjs.org/@jridgewell/remapping/-/remapping-2.3.5.tgz", ++ "integrity": "sha512-LI9u/+laYG4Ds1TDKSJW2YPrIlcVYOwi2fUC6xB43lueCjgxV4lffOCZCtYFiH6TNOX+tQKXx97T4IKHbhyHEQ==", ++ "dev": true, ++ "license": "MIT", ++ "dependencies": { ++ "@jridgewell/gen-mapping": "^0.3.5", ++ "@jridgewell/trace-mapping": "^0.3.24" ++ } ++ }, + "node_modules/@jridgewell/resolve-uri": { + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/@jridgewell/resolve-uri/-/resolve-uri-3.1.2.tgz", @@ -4243,6 +4591,81 @@ + "node": ">=14.0.0" + } + }, ++ "node_modules/@rolldown/pluginutils": { ++ "version": "1.0.0-beta.27", ++ "resolved": "https://registry.npmjs.org/@rolldown/pluginutils/-/pluginutils-1.0.0-beta.27.tgz", ++ "integrity": "sha512-+d0F4MKMCbeVUJwG96uQ4SgAznZNSq93I3V+9NHA4OpvqG8mRCpGdKmK8l/dl02h2CCDHwW2FqilnTyDcAnqjA==", ++ "dev": true, ++ "license": "MIT" ++ }, ++ "node_modules/@rollup/plugin-node-resolve": { ++ "version": "16.0.3", ++ "resolved": "https://registry.npmjs.org/@rollup/plugin-node-resolve/-/plugin-node-resolve-16.0.3.tgz", ++ "integrity": "sha512-lUYM3UBGuM93CnMPG1YocWu7X802BrNF3jW2zny5gQyLQgRFJhV1Sq0Zi74+dh/6NBx1DxFC4b4GXg9wUCG5Qg==", ++ "dev": true, ++ "license": "MIT", ++ "dependencies": { ++ "@rollup/pluginutils": "^5.0.1", ++ "@types/resolve": "1.20.2", ++ "deepmerge": "^4.2.2", ++ "is-module": "^1.0.0", ++ "resolve": "^1.22.1" ++ }, ++ "engines": { ++ "node": ">=14.0.0" ++ }, ++ "peerDependencies": { ++ "rollup": "^2.78.0||^3.0.0||^4.0.0" ++ }, ++ "peerDependenciesMeta": { ++ "rollup": { ++ "optional": true ++ } ++ } ++ }, ++ "node_modules/@rollup/pluginutils": { ++ "version": "5.3.0", ++ "resolved": "https://registry.npmjs.org/@rollup/pluginutils/-/pluginutils-5.3.0.tgz", ++ "integrity": "sha512-5EdhGZtnu3V88ces7s53hhfK5KSASnJZv8Lulpc04cWO3REESroJXg73DFsOmgbU2BhwV0E20bu2IDZb3VKW4Q==", ++ "dev": true, ++ "license": "MIT", ++ "dependencies": { ++ "@types/estree": "^1.0.0", ++ "estree-walker": "^2.0.2", ++ "picomatch": "^4.0.2" ++ }, ++ "engines": { ++ "node": ">=14.0.0" ++ }, ++ "peerDependencies": { ++ "rollup": "^1.20.0||^2.0.0||^3.0.0||^4.0.0" ++ }, ++ "peerDependenciesMeta": { ++ "rollup": { ++ "optional": true ++ } ++ } ++ }, ++ "node_modules/@rollup/pluginutils/node_modules/estree-walker": { ++ "version": "2.0.2", ++ "resolved": "https://registry.npmjs.org/estree-walker/-/estree-walker-2.0.2.tgz", ++ "integrity": "sha512-Rfkk/Mp/DL7JVje3u18FxFujQlTNR2q6QfMSMB7AvCBx91NGj/ba3kCfza0f6dVDbw7YlRf/nDrn7pQrCCyQ/w==", ++ "dev": true, ++ "license": "MIT" ++ }, ++ "node_modules/@rollup/pluginutils/node_modules/picomatch": { ++ "version": "4.0.3", ++ "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-4.0.3.tgz", ++ "integrity": "sha512-5gTmgEY/sqK6gFXLIsQNH19lWb4ebPDLA4SdLP7dsWkIXHWlG66oPuVvXSGFPppYZz8ZDZq0dYYrbHfBCVUb1Q==", ++ "dev": true, ++ "license": "MIT", ++ "engines": { ++ "node": ">=12" ++ }, ++ "funding": { ++ "url": "https://github.com/sponsors/jonschlinkert" ++ } ++ }, + "node_modules/@rollup/rollup-android-arm-eabi": { + "version": "4.52.4", + "resolved": "https://registry.npmjs.org/@rollup/rollup-android-arm-eabi/-/rollup-android-arm-eabi-4.52.4.tgz", @@ -5348,7 +5771,6 @@ + "resolved": "https://registry.npmjs.org/@tanstack/query-core/-/query-core-4.41.0.tgz", + "integrity": "sha512-193R4Jp9hjvlij6LryxrB5Mpbffd2L9PeWh3KlIy/hJV4SkBOfiQZ+jc5qAZLDCrdbkA5FjGj+UoDYw6TcNnyA==", + "license": "MIT", -+ "peer": true, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/tannerlinsley" @@ -5359,7 +5781,6 @@ + "resolved": "https://registry.npmjs.org/@tanstack/react-query/-/react-query-4.41.0.tgz", + "integrity": "sha512-4/euCZAv8zeaB5P/nQiySzB0JHM3tiraU9KjSvSlJAX7oIE9uPDZlHCkDg/bHYNXewzvsg0FtOMq0VUq8XMMOQ==", + "license": "MIT", -+ "peer": true, + "dependencies": { + "@tanstack/query-core": "4.41.0", + "use-sync-external-store": "^1.2.0" @@ -5462,6 +5883,20 @@ + "node": ">= 10" + } + }, ++ "node_modules/@tsconfig/node22": { ++ "version": "22.0.5", ++ "resolved": "https://registry.npmjs.org/@tsconfig/node22/-/node22-22.0.5.tgz", ++ "integrity": "sha512-hLf2ld+sYN/BtOJjHUWOk568dvjFQkHnLNa6zce25GIH+vxKfvTgm3qpaH6ToF5tu/NN0IH66s+Bb5wElHrLcw==", ++ "dev": true, ++ "license": "MIT" ++ }, ++ "node_modules/@tsconfig/vite-react": { ++ "version": "7.0.2", ++ "resolved": "https://registry.npmjs.org/@tsconfig/vite-react/-/vite-react-7.0.2.tgz", ++ "integrity": "sha512-lEj4y5SPRcH+bjw0tyuxrEnPqQUwfQzBKgd1YamD9xyet9zLwh2gwy5F8w/Nxg5DjdgYVjjKo5aLJUf0BTDz4w==", ++ "dev": true, ++ "license": "MIT" ++ }, + "node_modules/@tybys/wasm-util": { + "version": "0.10.1", + "resolved": "https://registry.npmjs.org/@tybys/wasm-util/-/wasm-util-0.10.1.tgz", @@ -5478,6 +5913,51 @@ + "integrity": "sha512-rfT93uj5s0PRL7EzccGMs3brplhcrghnDoV26NqKhCAS1hVo+WdNsPvE/yb6ilfr5hi2MEk6d5EWJTKdxg8jVw==", + "license": "MIT" + }, ++ "node_modules/@types/babel__core": { ++ "version": "7.20.5", ++ "resolved": "https://registry.npmjs.org/@types/babel__core/-/babel__core-7.20.5.tgz", ++ "integrity": "sha512-qoQprZvz5wQFJwMDqeseRXWv3rqMvhgpbXFfVyWhbx9X47POIA6i/+dXefEmZKoAgOaTdaIgNSMqMIU61yRyzA==", ++ "dev": true, ++ "license": "MIT", ++ "dependencies": { ++ "@babel/parser": "^7.20.7", ++ "@babel/types": "^7.20.7", ++ "@types/babel__generator": "*", ++ "@types/babel__template": "*", ++ "@types/babel__traverse": "*" ++ } ++ }, ++ "node_modules/@types/babel__generator": { ++ "version": "7.27.0", ++ "resolved": "https://registry.npmjs.org/@types/babel__generator/-/babel__generator-7.27.0.tgz", ++ "integrity": "sha512-ufFd2Xi92OAVPYsy+P4n7/U7e68fex0+Ee8gSG9KX7eo084CWiQ4sdxktvdl0bOPupXtVJPY19zk6EwWqUQ8lg==", ++ "dev": true, ++ "license": "MIT", ++ "dependencies": { ++ "@babel/types": "^7.0.0" ++ } ++ }, ++ "node_modules/@types/babel__template": { ++ "version": "7.4.4", ++ "resolved": "https://registry.npmjs.org/@types/babel__template/-/babel__template-7.4.4.tgz", ++ "integrity": "sha512-h/NUaSyG5EyxBIp8YRxo4RMe2/qQgvyowRwVMzhYhBCONbW8PUsg4lkFMrhgZhUe5z3L3MiLDuvyJ/CaPa2A8A==", ++ "dev": true, ++ "license": "MIT", ++ "dependencies": { ++ "@babel/parser": "^7.1.0", ++ "@babel/types": "^7.0.0" ++ } ++ }, ++ "node_modules/@types/babel__traverse": { ++ "version": "7.28.0", ++ "resolved": "https://registry.npmjs.org/@types/babel__traverse/-/babel__traverse-7.28.0.tgz", ++ "integrity": "sha512-8PvcXf70gTDZBgt9ptxJ8elBeBjcLOAcOtoO/mPJjtji1+CdGbHgm77om1GrsPxsiE+uXIpNSK64UYaIwQXd4Q==", ++ "dev": true, ++ "license": "MIT", ++ "dependencies": { ++ "@babel/types": "^7.28.2" ++ } ++ }, + "node_modules/@types/body-parser": { + "version": "1.19.6", + "resolved": "https://registry.npmjs.org/@types/body-parser/-/body-parser-1.19.6.tgz", @@ -5511,6 +5991,16 @@ + "integrity": "sha512-XW/Aa8APYr6jSVVA1y/DEIZX0/GMKLEVekNG727R8cs56ahETkRAy/3DR7+fJyh7oUgGwNQaRfXCun0+KbWY7Q==", + "license": "MIT" + }, ++ "node_modules/@types/cors": { ++ "version": "2.8.19", ++ "resolved": "https://registry.npmjs.org/@types/cors/-/cors-2.8.19.tgz", ++ "integrity": "sha512-mFNylyeyqN93lfe/9CSxOGREz8cpzAhH+E93xJ4xWQf62V8sQ/24reV2nyzUWM6H6Xji+GGHpkbLe7pVoUEskg==", ++ "dev": true, ++ "license": "MIT", ++ "dependencies": { ++ "@types/node": "*" ++ } ++ }, + "node_modules/@types/debug": { + "version": "4.1.12", + "resolved": "https://registry.npmjs.org/@types/debug/-/debug-4.1.12.tgz", @@ -5670,6 +6160,13 @@ + "node": ">= 0.12" + } + }, ++ "node_modules/@types/resolve": { ++ "version": "1.20.2", ++ "resolved": "https://registry.npmjs.org/@types/resolve/-/resolve-1.20.2.tgz", ++ "integrity": "sha512-60BCwRFOZCQhDncwQdxxeOEEkbc5dIMccYLwbxsS4TUNeVECQ/pBJ0j09mrHOl/JJvpRPGwO9SvE4nR2Nb/a4Q==", ++ "dev": true, ++ "license": "MIT" ++ }, + "node_modules/@types/send": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/@types/send/-/send-1.2.0.tgz", @@ -5718,6 +6215,27 @@ + "integrity": "sha512-/Ad8+nIOV7Rl++6f1BdKxFSMgmoqEoYbHRpPcx3JEfv8VRsQe9Z4mCXeJBzxs7mbHY/XOZZuXlRNfhpVPbs6ZA==", + "license": "MIT" + }, ++ "node_modules/@vitejs/plugin-react": { ++ "version": "4.7.0", ++ "resolved": "https://registry.npmjs.org/@vitejs/plugin-react/-/plugin-react-4.7.0.tgz", ++ "integrity": "sha512-gUu9hwfWvvEDBBmgtAowQCojwZmJ5mcLn3aufeCsitijs3+f2NsrPtlAWIR6OPiqljl96GVCUbLe0HyqIpVaoA==", ++ "dev": true, ++ "license": "MIT", ++ "dependencies": { ++ "@babel/core": "^7.28.0", ++ "@babel/plugin-transform-react-jsx-self": "^7.27.1", ++ "@babel/plugin-transform-react-jsx-source": "^7.27.1", ++ "@rolldown/pluginutils": "1.0.0-beta.27", ++ "@types/babel__core": "^7.20.5", ++ "react-refresh": "^0.17.0" ++ }, ++ "engines": { ++ "node": "^14.18.0 || >=16.0.0" ++ }, ++ "peerDependencies": { ++ "vite": "^4.2.0 || ^5.0.0 || ^6.0.0 || ^7.0.0" ++ } ++ }, + "node_modules/@vitest/expect": { + "version": "1.6.1", + "resolved": "https://registry.npmjs.org/@vitest/expect/-/expect-1.6.1.tgz", @@ -5872,6 +6390,14 @@ + "integrity": "sha512-/LLMVyas0ljjAtoYiPqYiL8VWXzUUdThrmU5+n20DZv+a+ClRoevUzw5JxU+Ieh5/c87ytoTBV9G1FiKfNJdmg==", + "license": "MIT" + }, ++ "node_modules/@wasp.sh/generated-server-dev": { ++ "resolved": ".wasp/out/server", ++ "link": true ++ }, ++ "node_modules/@wasp.sh/generated-webapp-dev": { ++ "resolved": ".wasp/out/web-app", ++ "link": true ++ }, + "node_modules/@xmldom/xmldom": { + "version": "0.8.11", + "resolved": "https://registry.npmjs.org/@xmldom/xmldom/-/xmldom-0.8.11.tgz", @@ -6551,6 +7077,24 @@ + "baseline-browser-mapping": "dist/cli.js" + } + }, ++ "node_modules/basic-auth": { ++ "version": "2.0.1", ++ "resolved": "https://registry.npmjs.org/basic-auth/-/basic-auth-2.0.1.tgz", ++ "integrity": "sha512-NF+epuEdnUYVlGuhaxbbq+dvJttwLnGY+YixlXlME5KpQ5W3CnXA5cVTneY3SPbPDRkcjMbifrwmFYcClgOZeg==", ++ "license": "MIT", ++ "dependencies": { ++ "safe-buffer": "5.1.2" ++ }, ++ "engines": { ++ "node": ">= 0.8" ++ } ++ }, ++ "node_modules/basic-auth/node_modules/safe-buffer": { ++ "version": "5.1.2", ++ "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz", ++ "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==", ++ "license": "MIT" ++ }, + "node_modules/bignumber.js": { + "version": "9.3.1", + "resolved": "https://registry.npmjs.org/bignumber.js/-/bignumber.js-9.3.1.tgz", @@ -7094,6 +7638,13 @@ + "node": ">= 6" + } + }, ++ "node_modules/concat-map": { ++ "version": "0.0.1", ++ "resolved": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz", ++ "integrity": "sha512-/Srv4dswyQNBfohGpz9o6Yb3Gz3SrUDqBH5rTuhGR7ahtlbYKnVxw2bCFMRljaA7EXHaXZ8wsHdodFvbkhKmqg==", ++ "dev": true, ++ "license": "MIT" ++ }, + "node_modules/confbox": { + "version": "0.1.8", + "resolved": "https://registry.npmjs.org/confbox/-/confbox-0.1.8.tgz", @@ -7121,6 +7672,13 @@ + "node": ">= 0.6" + } + }, ++ "node_modules/convert-source-map": { ++ "version": "2.0.0", ++ "resolved": "https://registry.npmjs.org/convert-source-map/-/convert-source-map-2.0.0.tgz", ++ "integrity": "sha512-Kvp459HrV2FEJ1CAsi1Ku+MY3kasH19TFykTz2xWmMeq6bk2NU3XXvfJ+Q61m0xktWwt+1HSYf3JZsTms3aRJg==", ++ "dev": true, ++ "license": "MIT" ++ }, + "node_modules/cookie": { + "version": "0.7.2", + "resolved": "https://registry.npmjs.org/cookie/-/cookie-0.7.2.tgz", @@ -7130,6 +7688,25 @@ + "node": ">= 0.6" + } + }, ++ "node_modules/cookie-parser": { ++ "version": "1.4.7", ++ "resolved": "https://registry.npmjs.org/cookie-parser/-/cookie-parser-1.4.7.tgz", ++ "integrity": "sha512-nGUvgXnotP3BsjiLX2ypbQnWoGUPIIfHQNZkkC668ntrzGWEZVW70HDEB1qnNGMicPje6EttlIgzo51YSwNQGw==", ++ "license": "MIT", ++ "dependencies": { ++ "cookie": "0.7.2", ++ "cookie-signature": "1.0.6" ++ }, ++ "engines": { ++ "node": ">= 0.8.0" ++ } ++ }, ++ "node_modules/cookie-parser/node_modules/cookie-signature": { ++ "version": "1.0.6", ++ "resolved": "https://registry.npmjs.org/cookie-signature/-/cookie-signature-1.0.6.tgz", ++ "integrity": "sha512-QADzlaHc8icV8I7vbaJXJwod9HWYp8uCqf1xa4OfNu1T7JVxQIrUgOWtHdNDtPiywmFbiS12VjotIXLrKM3orQ==", ++ "license": "MIT" ++ }, + "node_modules/cookie-signature": { + "version": "1.2.2", + "resolved": "https://registry.npmjs.org/cookie-signature/-/cookie-signature-1.2.2.tgz", @@ -7154,6 +7731,19 @@ + "url": "https://github.com/sponsors/mesqueeb" + } + }, ++ "node_modules/cors": { ++ "version": "2.8.5", ++ "resolved": "https://registry.npmjs.org/cors/-/cors-2.8.5.tgz", ++ "integrity": "sha512-KIHbLJqu73RGr/hnbrO9uBeixNGuvSQjul/jdFvS/KFSIH1hWVd1ng7zOHx+YrEfInLG7q4n6GHQ9cDtxv/P6g==", ++ "license": "MIT", ++ "dependencies": { ++ "object-assign": "^4", ++ "vary": "^1" ++ }, ++ "engines": { ++ "node": ">= 0.10" ++ } ++ }, + "node_modules/cron-parser": { + "version": "4.9.0", + "resolved": "https://registry.npmjs.org/cron-parser/-/cron-parser-4.9.0.tgz", @@ -7480,6 +8070,18 @@ + "node": ">=12" + } + }, ++ "node_modules/dotenv": { ++ "version": "16.6.1", ++ "resolved": "https://registry.npmjs.org/dotenv/-/dotenv-16.6.1.tgz", ++ "integrity": "sha512-uBq4egWHTcTt33a72vpSG0z3HnPuIl6NqYcTrKEg2azoEyl2hpW0zqlxysq2pK9HlDIHyHyakeYaYnSAwd8bow==", ++ "license": "BSD-2-Clause", ++ "engines": { ++ "node": ">=12" ++ }, ++ "funding": { ++ "url": "https://dotenvx.com" ++ } ++ }, + "node_modules/dunder-proto": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/dunder-proto/-/dunder-proto-1.0.1.tgz", @@ -7607,6 +8209,13 @@ + "url": "https://github.com/sponsors/ljharb" + } + }, ++ "node_modules/es-module-lexer": { ++ "version": "1.7.0", ++ "resolved": "https://registry.npmjs.org/es-module-lexer/-/es-module-lexer-1.7.0.tgz", ++ "integrity": "sha512-jEQoCwk8hyb2AZziIOLhDqpm5+2ww5uIE6lkO/6jcOCusfk6LhMHpXXfBLXTZ7Ydyt0j4VoUQv6uGNYbdW+kBA==", ++ "dev": true, ++ "license": "MIT" ++ }, + "node_modules/es-object-atoms": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/es-object-atoms/-/es-object-atoms-1.1.1.tgz", @@ -8289,6 +8898,16 @@ + "node": ">= 0.4" + } + }, ++ "node_modules/gensync": { ++ "version": "1.0.0-beta.2", ++ "resolved": "https://registry.npmjs.org/gensync/-/gensync-1.0.0-beta.2.tgz", ++ "integrity": "sha512-3hN7NaskYvMDLQY55gnW3NQ+mesEAepTqlg+VEbj7zzqEMBVNhzcGYYeqFo/TlYz6eQiFcp1HcsCZO+nGgS8zg==", ++ "dev": true, ++ "license": "MIT", ++ "engines": { ++ "node": ">=6.9.0" ++ } ++ }, + "node_modules/get-caller-file": { + "version": "2.0.5", + "resolved": "https://registry.npmjs.org/get-caller-file/-/get-caller-file-2.0.5.tgz", @@ -8365,6 +8984,19 @@ + "url": "https://github.com/sponsors/sindresorhus" + } + }, ++ "node_modules/get-tsconfig": { ++ "version": "4.13.0", ++ "resolved": "https://registry.npmjs.org/get-tsconfig/-/get-tsconfig-4.13.0.tgz", ++ "integrity": "sha512-1VKTZJCwBrvbd+Wn3AOgQP/2Av+TfTCOlE4AcRJE72W1ksZXbAx8PPBR9RzgTeSPzlPMHrbANMH3LbltH73wxQ==", ++ "dev": true, ++ "license": "MIT", ++ "dependencies": { ++ "resolve-pkg-maps": "^1.0.0" ++ }, ++ "funding": { ++ "url": "https://github.com/privatenumber/get-tsconfig?sponsor=1" ++ } ++ }, + "node_modules/glob": { + "version": "10.4.5", + "resolved": "https://registry.npmjs.org/glob/-/glob-10.4.5.tgz", @@ -8584,6 +9216,15 @@ + "integrity": "sha512-CHvacVPbl8AqIg2sBNKySUmumu7o15jSrCaTrIh9GW2Eq4y/krCN/vZFOsKCwlrhWQbO4267a8xvvP8bs+qREQ==", + "license": "MIT" + }, ++ "node_modules/helmet": { ++ "version": "6.2.0", ++ "resolved": "https://registry.npmjs.org/helmet/-/helmet-6.2.0.tgz", ++ "integrity": "sha512-DWlwuXLLqbrIOltR6tFQXShj/+7Cyp0gLi6uAb8qMdFh/YBBFbKSgQ6nbXmScYd8emMctuthmgIa7tUfo9Rtyg==", ++ "license": "MIT", ++ "engines": { ++ "node": ">=14.0.0" ++ } ++ }, + "node_modules/html-encoding-sniffer": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/html-encoding-sniffer/-/html-encoding-sniffer-3.0.0.tgz", @@ -8710,6 +9351,13 @@ + ], + "license": "BSD-3-Clause" + }, ++ "node_modules/ignore-by-default": { ++ "version": "1.0.1", ++ "resolved": "https://registry.npmjs.org/ignore-by-default/-/ignore-by-default-1.0.1.tgz", ++ "integrity": "sha512-Ius2VYcGNk7T90CppJqcIkS5ooHUZyIQK+ClZfMfMNFEF9VSE73Fq+906u/CWu92x4gzZMWOwfFYckPObzdEbA==", ++ "dev": true, ++ "license": "ISC" ++ }, + "node_modules/indent-string": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/indent-string/-/indent-string-4.0.0.tgz", @@ -9033,6 +9681,13 @@ + "url": "https://github.com/sponsors/ljharb" + } + }, ++ "node_modules/is-module": { ++ "version": "1.0.0", ++ "resolved": "https://registry.npmjs.org/is-module/-/is-module-1.0.0.tgz", ++ "integrity": "sha512-51ypPSPCoTEIN9dy5Oy+h4pShgJmPCygKfyRCISBI+JoWT/2oJvK8QPxmwv7b/p239jXrm9M1mlQbyKJ5A152g==", ++ "dev": true, ++ "license": "MIT" ++ }, + "node_modules/is-node-process": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/is-node-process/-/is-node-process-1.2.0.tgz", @@ -9388,6 +10043,19 @@ + "node": ">=14" + } + }, ++ "node_modules/jsesc": { ++ "version": "3.1.0", ++ "resolved": "https://registry.npmjs.org/jsesc/-/jsesc-3.1.0.tgz", ++ "integrity": "sha512-/sM3dO2FOzXjKQhJuo0Q173wf2KOo8t4I8vHy6lF9poUp7bKT0/NHE8fPX23PwfhnykfqnC2xRxOnVw5XuGIaA==", ++ "dev": true, ++ "license": "MIT", ++ "bin": { ++ "jsesc": "bin/jsesc" ++ }, ++ "engines": { ++ "node": ">=6" ++ } ++ }, + "node_modules/json-bigint": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/json-bigint/-/json-bigint-1.0.0.tgz", @@ -9397,6 +10065,19 @@ + "bignumber.js": "^9.0.0" + } + }, ++ "node_modules/json5": { ++ "version": "2.2.3", ++ "resolved": "https://registry.npmjs.org/json5/-/json5-2.2.3.tgz", ++ "integrity": "sha512-XmOWe7eyHYH14cLdVPoyg+GOH3rYX++KpzrylJwSW98t3Nk+U8XOl8FWKOgwtzdb8lXGf6zYwDUzeHMWfxasyg==", ++ "dev": true, ++ "license": "MIT", ++ "bin": { ++ "json5": "lib/cli.js" ++ }, ++ "engines": { ++ "node": ">=6" ++ } ++ }, + "node_modules/jwa": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/jwa/-/jwa-2.0.1.tgz", @@ -9743,6 +10424,49 @@ + "integrity": "sha512-WUjGcAqP1gQacoQe+OBJsFA7Ld4DyXuUIjZ5cc75cLHvJ7dtNsTugphxIADwspS+AraAUePCKrSVtPLFj/F88w==", + "license": "MIT" + }, ++ "node_modules/morgan": { ++ "version": "1.10.1", ++ "resolved": "https://registry.npmjs.org/morgan/-/morgan-1.10.1.tgz", ++ "integrity": "sha512-223dMRJtI/l25dJKWpgij2cMtywuG/WiUKXdvwfbhGKBhy1puASqXwFzmWZ7+K73vUPoR7SS2Qz2cI/g9MKw0A==", ++ "license": "MIT", ++ "dependencies": { ++ "basic-auth": "~2.0.1", ++ "debug": "2.6.9", ++ "depd": "~2.0.0", ++ "on-finished": "~2.3.0", ++ "on-headers": "~1.1.0" ++ }, ++ "engines": { ++ "node": ">= 0.8.0" ++ } ++ }, ++ "node_modules/morgan/node_modules/debug": { ++ "version": "2.6.9", ++ "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", ++ "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", ++ "license": "MIT", ++ "dependencies": { ++ "ms": "2.0.0" ++ } ++ }, ++ "node_modules/morgan/node_modules/ms": { ++ "version": "2.0.0", ++ "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", ++ "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==", ++ "license": "MIT" ++ }, ++ "node_modules/morgan/node_modules/on-finished": { ++ "version": "2.3.0", ++ "resolved": "https://registry.npmjs.org/on-finished/-/on-finished-2.3.0.tgz", ++ "integrity": "sha512-ikqdkGAAyf/X/gPhXGvfgAytDZtDbr+bkNUJ0N9h5MI/dmdgCs3l6hoHrcUv41sRKew3jIwrp4qQDXiK99Utww==", ++ "license": "MIT", ++ "dependencies": { ++ "ee-first": "1.1.1" ++ }, ++ "engines": { ++ "node": ">= 0.8" ++ } ++ }, + "node_modules/mrmime": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/mrmime/-/mrmime-2.0.1.tgz", @@ -9921,6 +10645,102 @@ + "integrity": "sha512-cCmFDMSm26S6tQSDpBCg/NR8NENrVPhAJSf+XbxBG4rPFaaonlEoE9wHQmun+cls499TQGSb7ZyPBRlzgKfpeg==", + "license": "MIT" + }, ++ "node_modules/nodemon": { ++ "version": "2.0.22", ++ "resolved": "https://registry.npmjs.org/nodemon/-/nodemon-2.0.22.tgz", ++ "integrity": "sha512-B8YqaKMmyuCO7BowF1Z1/mkPqLk6cs/l63Ojtd6otKjMx47Dq1utxfRxcavH1I7VSaL8n5BUaoutadnsX3AAVQ==", ++ "dev": true, ++ "license": "MIT", ++ "dependencies": { ++ "chokidar": "^3.5.2", ++ "debug": "^3.2.7", ++ "ignore-by-default": "^1.0.1", ++ "minimatch": "^3.1.2", ++ "pstree.remy": "^1.1.8", ++ "semver": "^5.7.1", ++ "simple-update-notifier": "^1.0.7", ++ "supports-color": "^5.5.0", ++ "touch": "^3.1.0", ++ "undefsafe": "^2.0.5" ++ }, ++ "bin": { ++ "nodemon": "bin/nodemon.js" ++ }, ++ "engines": { ++ "node": ">=8.10.0" ++ }, ++ "funding": { ++ "type": "opencollective", ++ "url": "https://opencollective.com/nodemon" ++ } ++ }, ++ "node_modules/nodemon/node_modules/brace-expansion": { ++ "version": "1.1.12", ++ "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.12.tgz", ++ "integrity": "sha512-9T9UjW3r0UW5c1Q7GTwllptXwhvYmEzFhzMfZ9H7FQWt+uZePjZPjBP/W1ZEyZ1twGWom5/56TF4lPcqjnDHcg==", ++ "dev": true, ++ "license": "MIT", ++ "dependencies": { ++ "balanced-match": "^1.0.0", ++ "concat-map": "0.0.1" ++ } ++ }, ++ "node_modules/nodemon/node_modules/debug": { ++ "version": "3.2.7", ++ "resolved": "https://registry.npmjs.org/debug/-/debug-3.2.7.tgz", ++ "integrity": "sha512-CFjzYYAi4ThfiQvizrFQevTTXHtnCqWfe7x1AhgEscTz6ZbLbfoLRLPugTQyBth6f8ZERVUSyWHFD/7Wu4t1XQ==", ++ "dev": true, ++ "license": "MIT", ++ "dependencies": { ++ "ms": "^2.1.1" ++ } ++ }, ++ "node_modules/nodemon/node_modules/has-flag": { ++ "version": "3.0.0", ++ "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz", ++ "integrity": "sha512-sKJf1+ceQBr4SMkvQnBDNDtf4TXpVhVGateu0t918bl30FnbE2m4vNLX+VWe/dpjlb+HugGYzW7uQXH98HPEYw==", ++ "dev": true, ++ "license": "MIT", ++ "engines": { ++ "node": ">=4" ++ } ++ }, ++ "node_modules/nodemon/node_modules/minimatch": { ++ "version": "3.1.2", ++ "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz", ++ "integrity": "sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==", ++ "dev": true, ++ "license": "ISC", ++ "dependencies": { ++ "brace-expansion": "^1.1.7" ++ }, ++ "engines": { ++ "node": "*" ++ } ++ }, ++ "node_modules/nodemon/node_modules/semver": { ++ "version": "5.7.2", ++ "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.2.tgz", ++ "integrity": "sha512-cBznnQ9KjJqU67B52RMC65CMarK2600WFnbkcaiwWq3xy/5haFJlshgnpjovMVJ+Hff49d8GEn0b87C5pDQ10g==", ++ "dev": true, ++ "license": "ISC", ++ "bin": { ++ "semver": "bin/semver" ++ } ++ }, ++ "node_modules/nodemon/node_modules/supports-color": { ++ "version": "5.5.0", ++ "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz", ++ "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==", ++ "dev": true, ++ "license": "MIT", ++ "dependencies": { ++ "has-flag": "^3.0.0" ++ }, ++ "engines": { ++ "node": ">=4" ++ } ++ }, + "node_modules/normalize-path": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/normalize-path/-/normalize-path-3.0.0.tgz", @@ -10059,6 +10879,15 @@ + "node": ">= 0.8" + } + }, ++ "node_modules/on-headers": { ++ "version": "1.1.0", ++ "resolved": "https://registry.npmjs.org/on-headers/-/on-headers-1.1.0.tgz", ++ "integrity": "sha512-737ZY3yNnXy37FHkQxPzt4UZ2UWPWiCZWLvFZ4fu5cueciegX0zGPnrlY6bwRg4FdQOe9YU8MkmJwGhoMybl8A==", ++ "license": "MIT", ++ "engines": { ++ "node": ">= 0.8" ++ } ++ }, + "node_modules/once": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/once/-/once-1.4.0.tgz", @@ -11199,6 +12028,13 @@ + "url": "https://github.com/sponsors/lupomontero" + } + }, ++ "node_modules/pstree.remy": { ++ "version": "1.1.8", ++ "resolved": "https://registry.npmjs.org/pstree.remy/-/pstree.remy-1.1.8.tgz", ++ "integrity": "sha512-77DZwxQmxKnu3aR542U+X8FypNzbfJ+C5XQDk3uWjWxn6151aIMGthWYRXTqT1E5oJvg+ljaa2OJi+VfvCOQ8w==", ++ "dev": true, ++ "license": "MIT" ++ }, + "node_modules/punycode": { + "version": "2.3.1", + "resolved": "https://registry.npmjs.org/punycode/-/punycode-2.3.1.tgz", @@ -11358,6 +12194,16 @@ + "integrity": "sha512-24e6ynE2H+OKt4kqsOvNd8kBpV65zoxbA4BVsEOB3ARVWQki/DHzaUoC5KuON/BiccDaCCTZBuOcfZs70kR8bQ==", + "license": "MIT" + }, ++ "node_modules/react-refresh": { ++ "version": "0.17.0", ++ "resolved": "https://registry.npmjs.org/react-refresh/-/react-refresh-0.17.0.tgz", ++ "integrity": "sha512-z6F7K9bV85EfseRCp2bzrpyQ0Gkw1uLoCel9XBVWPg/TjRj94SkJzUTGfOa4bs7iJvBWtQG0Wq7wnI0syw3EBQ==", ++ "dev": true, ++ "license": "MIT", ++ "engines": { ++ "node": ">=0.10.0" ++ } ++ }, + "node_modules/react-remove-scroll": { + "version": "2.7.1", + "resolved": "https://registry.npmjs.org/react-remove-scroll/-/react-remove-scroll-2.7.1.tgz", @@ -11562,6 +12408,16 @@ + "url": "https://github.com/sponsors/ljharb" + } + }, ++ "node_modules/resolve-pkg-maps": { ++ "version": "1.0.0", ++ "resolved": "https://registry.npmjs.org/resolve-pkg-maps/-/resolve-pkg-maps-1.0.0.tgz", ++ "integrity": "sha512-seS2Tj26TBVOC2NIc2rOe2y2ZO7efxITtLZcGSOnHHNOQ7CkiUBfw0Iw2ck6xkIhPwLhKNLS8BO+hEpngQlqzw==", ++ "dev": true, ++ "license": "MIT", ++ "funding": { ++ "url": "https://github.com/privatenumber/resolve-pkg-maps?sponsor=1" ++ } ++ }, + "node_modules/restore-cursor": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/restore-cursor/-/restore-cursor-3.1.0.tgz", @@ -11646,6 +12502,26 @@ + "fsevents": "~2.3.2" + } + }, ++ "node_modules/rollup-plugin-esbuild": { ++ "version": "6.2.1", ++ "resolved": "https://registry.npmjs.org/rollup-plugin-esbuild/-/rollup-plugin-esbuild-6.2.1.tgz", ++ "integrity": "sha512-jTNOMGoMRhs0JuueJrJqbW8tOwxumaWYq+V5i+PD+8ecSCVkuX27tGW7BXqDgoULQ55rO7IdNxPcnsWtshz3AA==", ++ "dev": true, ++ "license": "MIT", ++ "dependencies": { ++ "debug": "^4.4.0", ++ "es-module-lexer": "^1.6.0", ++ "get-tsconfig": "^4.10.0", ++ "unplugin-utils": "^0.2.4" ++ }, ++ "engines": { ++ "node": ">=14.18.0" ++ }, ++ "peerDependencies": { ++ "esbuild": ">=0.18.0", ++ "rollup": "^1.20.0 || ^2.0.0 || ^3.0.0 || ^4.0.0" ++ } ++ }, + "node_modules/router": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/router/-/router-2.2.0.tgz", @@ -11783,6 +12659,16 @@ + "loose-envify": "^1.1.0" + } + }, ++ "node_modules/semver": { ++ "version": "6.3.1", ++ "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.1.tgz", ++ "integrity": "sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==", ++ "dev": true, ++ "license": "ISC", ++ "bin": { ++ "semver": "bin/semver.js" ++ } ++ }, + "node_modules/send": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/send/-/send-1.2.0.tgz", @@ -12023,6 +12909,29 @@ + "url": "https://github.com/sponsors/isaacs" + } + }, ++ "node_modules/simple-update-notifier": { ++ "version": "1.1.0", ++ "resolved": "https://registry.npmjs.org/simple-update-notifier/-/simple-update-notifier-1.1.0.tgz", ++ "integrity": "sha512-VpsrsJSUcJEseSbMHkrsrAVSdvVS5I96Qo1QAQ4FxQ9wXFcB+pjj7FB7/us9+GcgfW4ziHtYMc1J0PLczb55mg==", ++ "dev": true, ++ "license": "MIT", ++ "dependencies": { ++ "semver": "~7.0.0" ++ }, ++ "engines": { ++ "node": ">=8.10.0" ++ } ++ }, ++ "node_modules/simple-update-notifier/node_modules/semver": { ++ "version": "7.0.0", ++ "resolved": "https://registry.npmjs.org/semver/-/semver-7.0.0.tgz", ++ "integrity": "sha512-+GB6zVA9LWh6zovYQLALHwv5rb2PHGlJi3lfiqIHxR0uuwCgefcOJc59v9fv1w8GbStwxuuqqAjI9NMAOOgq1A==", ++ "dev": true, ++ "license": "ISC", ++ "bin": { ++ "semver": "bin/semver.js" ++ } ++ }, + "node_modules/sirv": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/sirv/-/sirv-2.0.4.tgz", @@ -12719,6 +13628,16 @@ + "node": ">=6" + } + }, ++ "node_modules/touch": { ++ "version": "3.1.1", ++ "resolved": "https://registry.npmjs.org/touch/-/touch-3.1.1.tgz", ++ "integrity": "sha512-r0eojU4bI8MnHr8c5bNo7lJDdI2qXlWWJk6a9EAFG7vbhTjElYhBVS3/miuE0uOuoLdb8Mc/rVfsmm6eo5o9GA==", ++ "dev": true, ++ "license": "ISC", ++ "bin": { ++ "nodetouch": "bin/nodetouch.js" ++ } ++ }, + "node_modules/tough-cookie": { + "version": "4.1.4", + "resolved": "https://registry.npmjs.org/tough-cookie/-/tough-cookie-4.1.4.tgz", @@ -12828,6 +13747,13 @@ + "integrity": "sha512-9a4/uxlTWJ4+a5i0ooc1rU7C7YOw3wT+UGqdeNNHWnOF9qcMBgLRS+4IYUqbczewFx4mLEig6gawh7X6mFlEkA==", + "license": "MIT" + }, ++ "node_modules/undefsafe": { ++ "version": "2.0.5", ++ "resolved": "https://registry.npmjs.org/undefsafe/-/undefsafe-2.0.5.tgz", ++ "integrity": "sha512-WxONCrssBM8TSPRqN5EmsjVrsv4A8X12J4ArBiiayv3DyyG3ZlIg6yysuuSYdZsVz3TKcTg2fd//Ujd4CHV1iA==", ++ "dev": true, ++ "license": "MIT" ++ }, + "node_modules/undici-types": { + "version": "7.14.0", + "resolved": "https://registry.npmjs.org/undici-types/-/undici-types-7.14.0.tgz", @@ -12852,6 +13778,43 @@ + "node": ">= 0.8" + } + }, ++ "node_modules/unplugin-utils": { ++ "version": "0.2.5", ++ "resolved": "https://registry.npmjs.org/unplugin-utils/-/unplugin-utils-0.2.5.tgz", ++ "integrity": "sha512-gwXJnPRewT4rT7sBi/IvxKTjsms7jX7QIDLOClApuZwR49SXbrB1z2NLUZ+vDHyqCj/n58OzRRqaW+B8OZi8vg==", ++ "dev": true, ++ "license": "MIT", ++ "dependencies": { ++ "pathe": "^2.0.3", ++ "picomatch": "^4.0.3" ++ }, ++ "engines": { ++ "node": ">=18.12.0" ++ }, ++ "funding": { ++ "url": "https://github.com/sponsors/sxzz" ++ } ++ }, ++ "node_modules/unplugin-utils/node_modules/pathe": { ++ "version": "2.0.3", ++ "resolved": "https://registry.npmjs.org/pathe/-/pathe-2.0.3.tgz", ++ "integrity": "sha512-WUjGcAqP1gQacoQe+OBJsFA7Ld4DyXuUIjZ5cc75cLHvJ7dtNsTugphxIADwspS+AraAUePCKrSVtPLFj/F88w==", ++ "dev": true, ++ "license": "MIT" ++ }, ++ "node_modules/unplugin-utils/node_modules/picomatch": { ++ "version": "4.0.3", ++ "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-4.0.3.tgz", ++ "integrity": "sha512-5gTmgEY/sqK6gFXLIsQNH19lWb4ebPDLA4SdLP7dsWkIXHWlG66oPuVvXSGFPppYZz8ZDZq0dYYrbHfBCVUb1Q==", ++ "dev": true, ++ "license": "MIT", ++ "engines": { ++ "node": ">=12" ++ }, ++ "funding": { ++ "url": "https://github.com/sponsors/jonschlinkert" ++ } ++ }, + "node_modules/update-browserslist-db": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/update-browserslist-db/-/update-browserslist-db-1.1.3.tgz", @@ -14437,6 +15400,13 @@ + "node": ">=10" + } + }, ++ "node_modules/yallist": { ++ "version": "3.1.1", ++ "resolved": "https://registry.npmjs.org/yallist/-/yallist-3.1.1.tgz", ++ "integrity": "sha512-a4UGQaWPH59mOXUYnAG2ewncQS4i4F43Tv3JoAM+s2VDAmS9NsK8GpDMLrCHPksFT7h3K6TOoUNn2pb7RoXx4g==", ++ "dev": true, ++ "license": "ISC" ++ }, + "node_modules/yargs": { + "version": "17.7.2", + "resolved": "https://registry.npmjs.org/yargs/-/yargs-17.7.2.tgz", diff --git a/opensaas-sh/app_diff/src/client/App.tsx.diff b/opensaas-sh/app_diff/src/client/App.tsx.diff index 711aa8480..1ee6df830 100644 --- a/opensaas-sh/app_diff/src/client/App.tsx.diff +++ b/opensaas-sh/app_diff/src/client/App.tsx.diff @@ -9,3 +9,20 @@ ); }, [location]); +@@ -42,7 +42,15 @@ + const id = location.hash.replace("#", ""); + const element = document.getElementById(id); + if (element) { +- element.scrollIntoView(); ++ const yOffset = -100; ++ const top = element.getBoundingClientRect().top + window.pageYOffset + yOffset; ++ window.scrollTo({ top, behavior: "smooth" }); ++ } ++ } else if (location.pathname === "/") { ++ // scroll to top of page ++ if (window.scrollY > 0) { ++ console.log("scrolling to top"); ++ window.scrollTo({ top: 0, behavior: "smooth" }); + } + } + }, [location]); diff --git a/opensaas-sh/app_diff/src/client/components/NavBar/constants.ts.diff b/opensaas-sh/app_diff/src/client/components/NavBar/constants.ts.diff index bcdd8eea6..3e4d4979c 100644 --- a/opensaas-sh/app_diff/src/client/components/NavBar/constants.ts.diff +++ b/opensaas-sh/app_diff/src/client/components/NavBar/constants.ts.diff @@ -1,10 +1,13 @@ --- template/app/src/client/components/NavBar/constants.ts +++ opensaas-sh/app/src/client/components/NavBar/constants.ts -@@ -9,12 +9,12 @@ +@@ -8,13 +8,14 @@ + ]; export const marketingNavigationItems: NavigationItem[] = [ - { name: "Features", to: "/#features" }, +- { name: "Features", to: "/#features" }, - { name: "Pricing", to: routes.PricingPageRoute.to }, ++ { name: "Features", to: "/#auth-feature" }, ++ { name: "Roadmap", to: "/#roadmap" }, ...staticNavigationItems, ] as const; diff --git a/opensaas-sh/app_diff/src/landing-page/LandingPage.tsx.diff b/opensaas-sh/app_diff/src/landing-page/LandingPage.tsx.diff index 3fd1f59d8..e53021d76 100644 --- a/opensaas-sh/app_diff/src/landing-page/LandingPage.tsx.diff +++ b/opensaas-sh/app_diff/src/landing-page/LandingPage.tsx.diff @@ -5,15 +5,16 @@ import ExamplesCarousel from "./components/ExamplesCarousel"; import FAQ from "./components/FAQ"; import FeaturesGrid from "./components/FeaturesGrid"; -@@ -11,7 +12,6 @@ +@@ -11,7 +12,7 @@ footerNavigation, testimonials, } from "./contentSections"; -import AIReady from "./ExampleHighlightedFeature"; ++import Roadmap from "./components/Roadmap"; export default function LandingPage() { return ( -@@ -19,6 +19,9 @@ +@@ -19,8 +20,12 @@
@@ -22,4 +23,7 @@ + ++ + +
diff --git a/opensaas-sh/app_diff/src/landing-page/components/Examples/Auth.tsx.diff b/opensaas-sh/app_diff/src/landing-page/components/Examples/Auth.tsx.diff index f30a0ddc1..32b3a44b5 100644 --- a/opensaas-sh/app_diff/src/landing-page/components/Examples/Auth.tsx.diff +++ b/opensaas-sh/app_diff/src/landing-page/components/Examples/Auth.tsx.diff @@ -1,6 +1,6 @@ --- template/app/src/landing-page/components/Examples/Auth.tsx +++ opensaas-sh/app/src/landing-page/components/Examples/Auth.tsx -@@ -0,0 +1,163 @@ +@@ -0,0 +1,164 @@ +import { useState } from "react"; +import { FaDiscord, FaGithub, FaGoogle, FaSlack } from "react-icons/fa"; +import { Button } from "../../../client/components/ui/button"; @@ -55,6 +55,7 @@ + + return ( + ++
+ + -+
++
+
+
+
diff --git a/opensaas-sh/app_diff/src/landing-page/components/HighlightedFeature.tsx.diff b/opensaas-sh/app_diff/src/landing-page/components/HighlightedFeature.tsx.diff index 06e500e73..2e670e130 100644 --- a/opensaas-sh/app_diff/src/landing-page/components/HighlightedFeature.tsx.diff +++ b/opensaas-sh/app_diff/src/landing-page/components/HighlightedFeature.tsx.diff @@ -1,6 +1,12 @@ --- template/app/src/landing-page/components/HighlightedFeature.tsx +++ opensaas-sh/app/src/landing-page/components/HighlightedFeature.tsx -@@ -6,6 +6,8 @@ +@@ -1,11 +1,14 @@ + import { cn } from "../../client/utils"; + + interface FeatureProps { ++ id?: string; + name: string; + description: string | React.ReactNode; direction?: "row" | "row-reverse"; highlightedComponent: React.ReactNode; tilt?: "left" | "right"; @@ -9,7 +15,13 @@ } /** -@@ -18,6 +20,8 @@ +@@ -13,11 +16,14 @@ + * Shows text description on one side, and whatever component you want to show on the other side to demonstrate the functionality. + */ + const HighlightedFeature = ({ ++ id, + name, + description, direction = "row", highlightedComponent, tilt, @@ -18,9 +30,11 @@ }: FeatureProps) => { const tiltToClass: Record["tilt"], string> = { left: "rotate-1", -@@ -27,12 +31,14 @@ +@@ -26,13 +32,16 @@ + return (
{description}

) : ( -@@ -43,6 +49,7 @@ +@@ -43,6 +52,7 @@ className={cn( "my-10 flex w-full flex-1 items-center justify-center transition-transform duration-300 ease-in-out", tilt && tiltToClass[tilt], diff --git a/opensaas-sh/app_diff/src/landing-page/components/Roadmap.tsx.diff b/opensaas-sh/app_diff/src/landing-page/components/Roadmap.tsx.diff new file mode 100644 index 000000000..000afd485 --- /dev/null +++ b/opensaas-sh/app_diff/src/landing-page/components/Roadmap.tsx.diff @@ -0,0 +1,150 @@ +--- template/app/src/landing-page/components/Roadmap.tsx ++++ opensaas-sh/app/src/landing-page/components/Roadmap.tsx +@@ -0,0 +1,147 @@ ++import type { EpicStats } from "../operations"; ++import { EpicStatus } from "../operations"; ++ ++import { useQuery, getGithubRoadmap } from "wasp/client/operations"; ++import { Loader2 } from "lucide-react"; ++ ++export default function Roadmap() { ++ const { data: epics, isLoading, error } = useQuery(getGithubRoadmap); ++ ++ if (isLoading) { ++ return ( ++
++ ++
++ ); ++ } ++ ++ if (error) { ++ return ( ++
++ Failed to load roadmap ++
++ ); ++ } ++ ++ if (!epics || epics.length === 0) return null; ++ ++ const getStatusColor = (status: EpicStatus) => { ++ switch (status) { ++ case EpicStatus.Ideas: ++ return "bg-blue-100 text-blue-700 dark:bg-blue-900/30 dark:text-blue-300 border-blue-200 dark:border-blue-800"; ++ case EpicStatus.Planned: ++ return "bg-green-100 text-green-700 dark:bg-green-900/30 dark:text-green-300 border-green-200 dark:border-green-800"; ++ case EpicStatus.InProgress: ++ return "bg-yellow-100 text-yellow-700 dark:bg-yellow-900/30 dark:text-yellow-300 border-yellow-200 dark:border-yellow-800"; ++ case EpicStatus.Done: ++ return "bg-purple-100 text-purple-700 dark:bg-purple-900/30 dark:text-purple-300 border-purple-200 dark:border-purple-800"; ++ default: ++ return "bg-gray-100 text-gray-700 dark:bg-gray-800 dark:text-gray-300 border-gray-200 dark:border-gray-700"; ++ } ++ }; ++ ++ const getProgressBarColor = (status: EpicStatus) => { ++ switch (status) { ++ case EpicStatus.Ideas: return "bg-blue-500"; ++ case EpicStatus.Planned: return "bg-green-500"; ++ case EpicStatus.InProgress: return "bg-yellow-500"; ++ case EpicStatus.Done: return "bg-purple-500"; ++ default: return "bg-gray-500"; ++ } ++ }; ++ ++ const getBorderColor = (status: EpicStatus) => { ++ switch (status) { ++ case EpicStatus.Ideas: return "border-blue-200 dark:border-blue-800"; ++ case EpicStatus.Planned: return "border-green-200 dark:border-green-800"; ++ case EpicStatus.InProgress: return "border-yellow-200 dark:border-yellow-800"; ++ case EpicStatus.Done: return "border-purple-200 dark:border-purple-800"; ++ default: return "border-gray-200 dark:border-gray-700"; ++ } ++ }; ++ ++ const getHoverBorderColor = (status: EpicStatus) => { ++ switch (status) { ++ case EpicStatus.Ideas: return "hover:border-blue-400 dark:hover:border-blue-600"; ++ case EpicStatus.Planned: return "hover:border-green-400 dark:hover:border-green-600"; ++ case EpicStatus.InProgress: return "hover:border-yellow-400 dark:hover:border-yellow-600"; ++ case EpicStatus.Done: return "hover:border-purple-400 dark:hover:border-purple-600"; ++ default: return "hover:border-gray-400 dark:hover:border-gray-600"; ++ } ++ }; ++ ++ return ( ++
++
++
++

++ The Roadmap ++

++

++ High-level topics we are planning and working on. ++

++
++ ++
++ {[EpicStatus.Ideas, EpicStatus.Planned, EpicStatus.InProgress, EpicStatus.Done].map((status) => { ++ const statusEpics = epics.filter((e: EpicStats) => e.status === status); ++ const borderColor = getBorderColor(status); ++ const statusColor = getStatusColor(status); ++ ++ return ( ++
++
++

++ {status} ++

++ ({statusEpics.length}) ++
++ ++
++ {statusEpics.map((epic: EpicStats) => { ++ const progress = epic.total > 0 ? Math.round((epic.done / epic.total) * 100) : 0; ++ const progressColor = getProgressBarColor(epic.status); ++ const hoverBorderColor = getHoverBorderColor(epic.status); ++ ++ return ( ++ ++

++ {epic.name} ++

++ ++
++
++ Progress ++ {progress}% ({epic.done}/{epic.total}) ++
++
++
++
++
++
++ ); ++ })} ++ ++ {statusEpics.length === 0 && ( ++
++ No epics ++
++ )} ++
++
++ ); ++ })} ++
++
++
++ ); ++} diff --git a/opensaas-sh/app_diff/src/landing-page/contentSections.tsx.diff b/opensaas-sh/app_diff/src/landing-page/contentSections.tsx.diff index 8be0d2796..5ab6f5502 100644 --- a/opensaas-sh/app_diff/src/landing-page/contentSections.tsx.diff +++ b/opensaas-sh/app_diff/src/landing-page/contentSections.tsx.diff @@ -11,7 +11,7 @@ import kivo from "../client/static/examples/kivo.webp"; import messync from "../client/static/examples/messync.webp"; import microinfluencerClub from "../client/static/examples/microinfluencers.webp"; -@@ -6,161 +11,253 @@ +@@ -6,161 +11,248 @@ import reviewradar from "../client/static/examples/reviewradar.webp"; import scribeist from "../client/static/examples/scribeist.webp"; import searchcraft from "../client/static/examples/searchcraft.webp"; @@ -21,11 +21,6 @@ +import { BlogUrl, DocsUrl, GithubUrl, WaspUrl } from "../shared/common"; +import { GridFeature } from "./components/FeaturesGrid"; -+export const landingPageNavigationItems: NavigationItem[] = [ -+ { name: "Features", to: "#features" }, -+ { name: "Documentation", to: DocsUrl }, -+ { name: "Blog", to: BlogUrl }, -+]; export const features: GridFeature[] = [ { - name: "Cool Feature 1", diff --git a/opensaas-sh/app_diff/src/landing-page/operations.ts.diff b/opensaas-sh/app_diff/src/landing-page/operations.ts.diff new file mode 100644 index 000000000..5da141700 --- /dev/null +++ b/opensaas-sh/app_diff/src/landing-page/operations.ts.diff @@ -0,0 +1,211 @@ +--- template/app/src/landing-page/operations.ts ++++ opensaas-sh/app/src/landing-page/operations.ts +@@ -0,0 +1,208 @@ ++import type { GetGithubRoadmap } from 'wasp/server/operations' ++import * as z from 'zod' ++ ++const ORG_NAME = "wasp-lang" ++const PROJECT_NUMBER = 6 ++ ++const GithubIssueSchema = z.object({ ++ title: z.string(), ++ url: z.string(), ++ number: z.number(), ++ issueType: z.object({ ++ name: z.string() ++ }).nullish(), ++ subIssues: z.object({ ++ totalCount: z.number(), ++ nodes: z.array(z.object({ ++ state: z.string(), ++ number: z.number() ++ })) ++ }).nullish() ++}) ++ ++const ProjectV2ItemFieldValueSchema = z.object({ ++ name: z.string().nullish(), ++ field: z.object({ ++ name: z.string() ++ }).nullish() ++}) ++ ++const ProjectV2ItemSchema = z.object({ ++ id: z.string(), ++ databaseId: z.number().nullish(), ++ fieldValues: z.object({ ++ nodes: z.array(ProjectV2ItemFieldValueSchema) ++ }), ++ content: GithubIssueSchema ++}) ++ ++const GithubGraphQLResponseSchema = z.object({ ++ data: z.object({ ++ organization: z.object({ ++ projectV2: z.object({ ++ items: z.object({ ++ nodes: z.array(ProjectV2ItemSchema) ++ }).nullish() ++ }).nullish() ++ }).nullish() ++ }).nullish(), ++ errors: z.array(z.any()).nullish() ++}) ++ ++export enum EpicStatus { ++ Ideas = "Ideas", ++ Planned = "Planned", ++ InProgress = "In progress", ++ Done = "Done" ++} ++ ++export type EpicStats = { ++ name: string ++ total: number ++ done: number ++ status: EpicStatus ++ url: string ++} ++ ++type RoadmapData = EpicStats[] ++ ++let cachedData: RoadmapData | null = null ++let lastFetchTime = 0 ++const CACHE_DURATION = 60 * 60 * 1000 ++ ++export const getGithubRoadmap: GetGithubRoadmap = async () => { ++ const currentTime = Date.now() ++ ++ if (cachedData && currentTime - lastFetchTime < CACHE_DURATION) { ++ return cachedData ++ } ++ ++ const token = process.env.GITHUB_ROADMAP_TOKEN ++ if (!token) { ++ console.warn("GITHUB_ROADMAP_TOKEN is not set") ++ return [] ++ } ++ ++ const query = ` ++ query($org: String!, $number: Int!) { ++ organization(login: $org) { ++ projectV2(number: $number) { ++ items(first: 100) { ++ nodes { ++ id ++ databaseId ++ fieldValues(first: 50) { ++ nodes { ++ ... on ProjectV2ItemFieldSingleSelectValue { ++ name ++ field { ... on ProjectV2FieldCommon { name } } ++ } ++ } ++ } ++ content { ++ ... on Issue { ++ title ++ url ++ number ++ issueType { name } ++ subIssues(first: 100) { ++ totalCount ++ nodes { ++ state ++ number ++ } ++ } ++ } ++ } ++ } ++ } ++ } ++ } ++ } ++ ` ++ ++ try { ++ const response = await fetch("https://api.github.com/graphql", { ++ method: "POST", ++ headers: { ++ "Content-Type": "application/json", ++ Authorization: `Bearer ${token}`, ++ }, ++ body: JSON.stringify({ ++ query, ++ variables: { org: ORG_NAME, number: PROJECT_NUMBER }, ++ }), ++ }) ++ ++ const json = await response.json() ++ ++ const parseResult = GithubGraphQLResponseSchema.safeParse(json) ++ if (!parseResult.success) { ++ console.error("GitHub API response validation failed:", parseResult.error) ++ return cachedData || [] ++ } ++ ++ const validatedResponse = parseResult.data ++ ++ if (validatedResponse.errors) { ++ console.error("GitHub API Errors:", validatedResponse.errors) ++ throw new Error("GitHub API returned errors") ++ } ++ ++ const nodes = validatedResponse.data?.organization?.projectV2?.items?.nodes || [] ++ const statusFieldName = "Status" ++ ++ const BASE_PROJECT_URL = "https://github.com/orgs/wasp-lang/projects/6/views/1?pane=issue&itemId=" ++ ++ const epics: EpicStats[] = nodes ++ .filter((node) => { ++ const issue = node.content ++ return issue && issue.issueType?.name === "Epic" ++ }) ++ .map((node) => { ++ const issue = node.content ++ ++ const statusField = node.fieldValues.nodes.find( ++ (f) => f.field?.name === statusFieldName ++ ) ++ const statusName = statusField?.name || "Ideas" ++ ++ let status: EpicStatus = EpicStatus.Ideas ++ if (Object.values(EpicStatus).includes(statusName as EpicStatus)) { ++ status = statusName as EpicStatus ++ } ++ ++ const subIssues = issue.subIssues?.nodes || [] ++ const total = issue.subIssues?.totalCount ?? subIssues.length ++ const done = subIssues.filter((sub) => sub.state === "CLOSED").length ++ ++ return { ++ name: issue.title, ++ total, ++ done, ++ status, ++ url: `${BASE_PROJECT_URL}${node.databaseId}` ++ } ++ }) ++ ++ const statusOrder = { ++ [EpicStatus.InProgress]: 0, ++ [EpicStatus.Planned]: 1, ++ [EpicStatus.Ideas]: 2, ++ [EpicStatus.Done]: 3 ++ } ++ ++ epics.sort((a, b) => { ++ const orderA = statusOrder[a.status] ?? 99 ++ const orderB = statusOrder[b.status] ?? 99 ++ return orderA - orderB ++ }) ++ ++ cachedData = epics ++ lastFetchTime = currentTime ++ return epics ++ } catch (error) { ++ console.error("Failed to fetch GitHub roadmap:", error) ++ return cachedData || [] ++ } ++} From 10e7ea473c92f261d7619ba968dfaacc14705cc5 Mon Sep 17 00:00:00 2001 From: vincanger <70215737+vincanger@users.noreply.github.com> Date: Fri, 21 Nov 2025 09:21:50 +0100 Subject: [PATCH 2/5] Update operations.ts.diff --- opensaas-sh/app_diff/src/landing-page/operations.ts.diff | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/opensaas-sh/app_diff/src/landing-page/operations.ts.diff b/opensaas-sh/app_diff/src/landing-page/operations.ts.diff index 5da141700..3fec58ad3 100644 --- a/opensaas-sh/app_diff/src/landing-page/operations.ts.diff +++ b/opensaas-sh/app_diff/src/landing-page/operations.ts.diff @@ -71,7 +71,7 @@ + +let cachedData: RoadmapData | null = null +let lastFetchTime = 0 -+const CACHE_DURATION = 60 * 60 * 1000 ++const CACHE_DURATION = 4 * 60 * 60 * 1000 + +export const getGithubRoadmap: GetGithubRoadmap = async () => { + const currentTime = Date.now() From fa852e83ee29b1734dbfe00ab5a19610dec75390 Mon Sep 17 00:00:00 2001 From: vincanger <70215737+vincanger@users.noreply.github.com> Date: Fri, 21 Nov 2025 15:09:45 +0100 Subject: [PATCH 3/5] Update .env.vault.diff --- opensaas-sh/app_diff/.env.vault.diff | 16 ++++++++-------- 1 file changed, 8 insertions(+), 8 deletions(-) diff --git a/opensaas-sh/app_diff/.env.vault.diff b/opensaas-sh/app_diff/.env.vault.diff index 714c36b85..ee47573dc 100644 --- a/opensaas-sh/app_diff/.env.vault.diff +++ b/opensaas-sh/app_diff/.env.vault.diff @@ -7,20 +7,20 @@ +#/--------------------------------------------------/ + +# development -+DOTENV_VAULT_DEVELOPMENT="STJRGW84NkbUqenj6Eyt98WiAcvzWsWhOKwyktUfAJ0dR8TlNnSdCDRsCRisCzKuDTTZtgCf6FyTgT48HsYuwFZqydg/aFeM4skfLpyUy0wz0K90hq2sNEB85HCAwZaTTf9ye5fEBq9P1PAEoYlHEFtPXO1exSkXyxQHzkv5/j2xLJVkg89cZ+MBaQQtzmgK/A9ya5eVSX2zIhum+ipZKIE04pjc4H8fu5YgxY91rOVTFHBQc1dlbuCr+vvmvgHxNS2gO+eM5UcmZk6FY4yY+GUZmf+xGw5ZPwFjiS3awC+jNhdebWnkrk/PopAqBC3i7eH3fdaPvJW2RWkMMrY4+gtN8Hs9lPNopWkl3uavAva9qmvrCE1KLu94IaQh34Cy6dRurPQDF/MmnugqYzcEQvvtIV1sgZig6Id4c9P67gs/Q9NvKXvbeNxzXYTwkF3SvnMRXk33yBKbXHxE1vIn9k9mbMnX3DVeVdT5TDR9BKs9xGMuvP7rQv5RA/xSnzMFg8LeJ+oZ2zNUWWN8tOyx6K4WwiIJN39AOLYElXAFa3UTSk12GtzaySM5rQdcWn0YLN3uncye26zRCA+BpR231fgrSpfJJ2VkNBG0pTh1ELySOFug6mItLOb7CQGXjZrrwTSfEBhhpMZn/c2Ec6p/nBN2UcHAmB55N6GDFuAkagv9l/4C5fIbS6iGHYAOwwYKczSBryi3+5y7sDYkdVhOTzuKTfkpY1FpkEgUY8FFnW2GjYodH2T+l23Q84a7A9VjxZAyZJkgwGnezO+M8fWcwtqt3iywEVhTd5Hi7Nxe+Q53oQeUrwnTKSkx5Ig5uR1RJIybW+gWvpSOEcUZN6AVf67/UPu9RHpwHDQ5YCGGqJwDzR/f5QxR0kqiW3B0ZDWpJX7zFk2QiLGLzDZ6xmdaGenbJ0jWMA116Xm+ot0GCEqim+RVk768zSAxIQFOCcllXWhmxwTO2/SzY6j7Hxf1Ps8e0uCVc7FPemh7nBYLRlSOI/Pjk9gLUkyKhV7IEiaL2BbPFLGOFkOk0AGNc+m/y1BH+CnJYYKCK1AXNquKM9+MV8Wmure2iBIm2oNlDOcJl48YpUQ0BcKzmFw06OJHVULPVn7da7XZ2/34SvyFcsYARE6NZLLMMg810S1cok0gQ3FpxKv3wxP1jRXntEC1ZxUqJQE/hZ5IxoOxhAJGQfqYbJIQSE5oE8Ve7E0X2lTYVEPiwziYOeovKidJX1vccZh4ggxgYsRzT/qAiS/FcvgsWz9kY6n0e1iKLEmsGR96SDpzNSWV/57iSuOd6nKtcU8HWhekTMnTQK4wrhXuYQHZhLeRnGQIjHzNyzJ8lV6HVcot6NZPPHjOfohQ9eIhQi7qUC7JPcLFkWixjrPTAEJVlQelbAOPHPOUyYEoejcPi/0LMTrQPYN/To/lhDHn/5N9vhlk8flj0zuJHpCFq8laDsn9wdvymuK/0MQ7DrPPU00nNzQjXDtT9xbb6I9ZX7XtgTVHVnWtEwxCQRYkmbR0T+0TzDLXlQObITanuFVa19ZSeATGc+PhxFAva5yxPih2L+j3BTN43ap/X3j54DDylyNHDQlpC21wOa+HFGftYUAWx8/w8i5gr7ZU66aVQWZspSLP7BIFzMaVVjAM5gVqaCLTpcnCE3oMMYddsqsXUbkJrmdlh4cP8ao2Y9YHzv3KRTyAU4wDxhkwWdDqnUSRVXkcDeZUuCQJsHFRvXVzgCNDSktMewTC4xMNniW6KNUwbqzWxGBCz6g/0WUJEaJYG+teu1jBMPDhNFFlw6BjIoNX7iButmm81XCG8D1uEgRvo+H4lxAL4rPyPNCQieT34XHk/QxcQsqij2wnTenGUwWQt++kzMLvL/69RtvaskA8I3aLXDLn3ATMU4JlMvD1MqRHrGb3tzoz+lXKWVgrJR+BSYUBXZc9EAUsj4G4+NsRyMPbBWE2ADgM4ksDflXCccbelu/4S50eS9dEXf7ms0CeYh+dFmqjhCXI8JrgL+bUdOwDbEJVPjM2yOVM1wATGAa8+0nLaJbIwI41JVXBx/uLZ8pt2pyvQB9cyLQR00hcjbLymHBfLP51B6nlaNhUq4yZsI/JM59XNmEYAY8GZJFuvIBvSimC5plUCc1bfGhK694k7Fv1bKtlIzXd4kCy5bKNiwWMTVbOy3Uv87FQTa61z5mnz/XGmRwU/22v4VOWy11BKWGYkYJGN1KrAVkUenCKQw6FjgVXBbfJ6m2k9tl5dfQ48ppToorUZkFiKsPuc8V6DhcUt2stxEETnUnU9K2p8QyyhfPykBK6YWbShDobeA0TPF+vo2ypkVOvhNo7F4cQnvvVKl9MJmmAxFOisB9yHXREk2GSlivNJeTqIz8Vv4K42/wNMAO2ZQqSPlE4wt2ueFQqLMkG+UDlD6gujSx8D/OzSTfCx+vLTzdqsbubPxjcPx+pQA==" -+DOTENV_VAULT_DEVELOPMENT_VERSION=12 ++DOTENV_VAULT_DEVELOPMENT="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" ++DOTENV_VAULT_DEVELOPMENT_VERSION=13 + +# ci -+DOTENV_VAULT_CI="pveNDc605iqf5ZOh9mvYpFOc925852DGrvz7y+vs82ub3bZvTiLhJMuJKZEDtyjn7yBUdfMRsAP6wAL8/73te+4y7K56lT48MuvFlpvwM9ERkCzJY1yZ6ib3eBzTax/jon2H5kfEHBM9TRIa5B8JrCHbYqhcrnxj0VyLEa4x1I4pMTdesRZ+907FTdExaRSFFujdkUaScytOV93DTr2lQZpUGBga5CbKr3KyeSS1+ONGSWc+BQiAkdhmnvPsyKHnWRKHSFVhInne2W00LFZLBZ56I4+G7D+x+ze3/WNb5GSq7eNlVwnTJgj5AXJBjtAV/uD7cmOnJ3h+lOkvz3Wry10BaICTAx5SVfOuD5Pr/FLgR2zJau+pgqhRdcp7gG4y2thWN5ZtlLGnJlL7xgnRaD+oIYBn6fg8CCZsnsX2XZHAzJcgntph2pUd0At4UawSijDVZuylcneNdF3CJ68/fcqqpR94LYU61w4WasrAWj1hFiRV1MTpLkdQWTMT6K5k5TDouuljI3nt+Upf9mDK7efjy7OTiiArNxKpUxUy31Kl0TgWTsttDFbcOGwbsxq1t/Tu9Ph0eEhwHc2dTUuSuhV+PHxE8GwUvGiIDBbAZZq7ZyeLc5btdP++8zdXBtYM7bIa9qubaCWakruk31w6Gm5ySjGY+R1HGURldXJmypsAEcu5kK3IX4Z8IubF79T8ZvutLdoXJPSaH9x8ij7EcamTVfZPmekj6FpI3sqy7rmaUup73MBld9a3r9AQTzXbEmR+2xbK488D1il8PUqu9J3QkUeF2rpB97Uy2mgl1zF8VXiGkdP1Hpqeck8FpS89GWFF4FA3oBE/Keqvqvvs/f+KzDn2AvHHwrT6fnVBdeuSp4hK+sSkig1rh+1P69zYjIDqpph0kT+Ri7uNMkbrXX7iT5he9J1LrXtiM/DLxXqi8M3FfeN7aaSxQ2nzac1mlN+vwsIqJbzOSm+ABGHNJNjPjBZpMbeBZsFwogaCbFd2oorp02h6yC6741qwH7gFEr1EJVcu+TJspHyKpq4TFIk+srRMhuCqwUAkdzY4skjEGVhxxYMiKAtRg5IKYICqbfNsestMipAcf22teriGnmqBe9Yuzq9IXZXRcl/etagr0/B3SQhNlVj2u9VMBfhj5ZY+QcQDfSjqOcW/DyphyBU4T1/rHn1x5RznCvtbOPZ+XXFApZaeoKzj/s8JxHzM8aegITx3jVRwXnr0/0FnHTnC34b124K6HM3oKxdPdrtACgW8gH+mgXCaStBqwBdk1aV62+YQxWdHXjy9FAvTF8BktcxwE0TXC5Qu0JsoS8uYbbQmaQCNWIJWF/KptW+g9gkKDBV2Iq5mXwMLHzCtzxGarj5jqznVEX4OdbYbgSOZ5mB5JEU2OwSn2QtzqUVquAN+DygbDVrh1+KA9bk4HMt38rMKHV/i9VBHkuApYT7OUIexCu4jxUDBnid/Hnm3OfMvXrUesoqFv2cYEHX8R/jvhLx36jEWeaTYL+e9XFpSLlWJTGc7wAg0Zj+XJlNtLhFlB6pw" -+DOTENV_VAULT_CI_VERSION=8 ++DOTENV_VAULT_CI="XGJ7HhbwC6C7beVXbifG+tkHOTHTPNHoECye25INPUQmK9vxQ9RObeQjfhLGd2Qkj1bsHDU3VGEjuReB7OxZ7YSFF1xaFoVPdm4x+Rwlr/vbVEy0t4JeUGYA54aNPQYaQBmCF0QVKSI0l7O+WWX7Th62nGyDYwwVOs4PIXwGf1Zr+mtmmJSOuJT8jPQdTfFTKVi/ntWrxl3CBsflW4xQIWsvnoHyDy161gg/HNmmnmdqDYK+roUBokBc1X2rBoSI+vmUUAg+M0rejg8HBs8ZKFDDBXPYOrcnQR306VYrVZjoS0HaA1pZNROXbUaUS2lxl74mP1vD3nV5oQ79coPc9FcwrIMBpv3V7gjdHSM/D/Scf3Wkq+nkk0YsysebRg3qBv/pOy5zb53+NF2AfHZ2drcW4X5QZng6haCqwaDuBDBetro9NECTuMTxuVR8Qfd+NlCXP9RVxhmVMETBYbABSzj2uXKPfCtc2QbtJULXtdO7BkW2ED7c40MGO2NDdEbv8NzqwPqPzpVjtw86YrzHH1y0pgfoEzGPXv6A9QQlt2Ns2EPHjPM87swrTuOGr/xHfpm/j6X8+kB4GwsJehes+BELT6UM9+maPExap/qh1c4WKCwrUYxLD82nixmzxARsqyqJYIoD57AzPeWeqwrxy2nNmKuN/xuau7u/mZqbXwpbE0RIs2zbREZazHDiD8GOL/kXAYhGOQABXrTpl6mFsNVU0OPWE6VkxA90YNxG0kTIBHYaOd2IbPDxPFYbtIGZNCYTn50+7JwPfl56fbVAM5mbvTGaQPo/74H92E3akWFBCA2Wa1yUn1jhfoYzGYrRj+CBCtJLpZI/JIfsVeKdVZ+3/osTb2UdN7humZlrpKzrFqcIKCsbYB2Y55R+LrbuQzbqKl7JUT/y0obboa6jBtO2VFzsF1cJDh3UCCQ2BdBXu5KYhk8BdM1SKWN/p+kteGSgdOuxs9dZW/z/p2Ycjd1cNZjDahN4Ye5HBtiNEXuej7o7SaF5BQC/fqQpSqvVKacxkNL+0X/UR+HUJE1t8d8jEwfT9WE0zxjnraDVxMbC6EHbPV44hUoYyclaKraSAgpaZuW0dkikWrTbyl8SMJPGsD5WZU5gps9i9SfY7y6R2Ruc7vxPRRYb25NTZap6L+hkWeXVM50tKDCIs6cWFHNF7oW9oF72WdZVziWm7kWX7Q0BjNT76od+CMD9tyHo48qSEmYed22cXCMV+dIsQtXwz8y0S8xuaBs1dHsHcEnF6sOGFsRlLaYbXbJiBOFqzqW2iKFdu/CMEJ8qmssxpKQfyy93mOSragacJ3D6iVbTvDaHZ+KbFtIdk+w368MaA/9xEvvdkDJX+u+wqA13SpXkOr2T0Czip1h8fiEw41Jc5cGmMLZyPo1d9dDnc9vyFtfDxGZxQ38BpEmDZcy21cM57TuhLmlZ0U15aiD122rZfdWGkKjtG2854MEJDoLVZRZHhxpSqdhEKRHCgFvhjHYU/FjjaBSGu0g5lOzbc3V/Un8U9Ix5KwMx+VAahGAF2pLaYRmNof3IXTzJC9xPwj+IsO7jTPtsBuJFjSjG" ++DOTENV_VAULT_CI_VERSION=9 + +# staging -+DOTENV_VAULT_STAGING="nAXVAHQaoF1R6J23PDrfp6kH0L+nXmZaI0OUfcCBU7QSfP+K3mbkdO92cbKVUN6ycc1wxRue6BFLEUgBLuCJQwUdKYevK81fs/ACrHYxuW6Px85FG3NJVLGvgF/3qiqu0RRfcpeB6lYJCAPFsYcoA9Cx8QDkYmvSlWAGmLJQ7cqzHUNlveOqtrXsLFV2OjlWjlYD1l7VQkaXnsY+Mij60DbRIadusoDuAB3z5m7N8/ogMOGENlUl9HRJJ4ppcJiHoBm7pxrLpK0oubx3KEDTSkPVlpNb1YYMeU2VKiGYCOMyXX8IguISrrgU4hHEvbLM8F3gnKHyx59qbwU/32yX7ofIIPsTLLTwD+mHWElPoLs9WWq249RYEmRT7w5iuCdjl9Qlr36EJKPYc7UG+P0DZROb7pXcbtYg8/gfaCXOQG5Ue2FMon4bEphkmY1CKaJKtPTXNuecDVTa8O4hEM65xrEClieVUgexEaM0g7fEUo8wOljZx96gG8Mf4RqHX3xy4M0d4/2UluE053kavUaTULhRPG/oTHIGiKFRnG0BfgQFcGRXkFgLG9zerVAoWEGAcBGHn5NECIUWqaD2Z7sdEZd9R0SZmtwUXoPV1jqHNeKEvt7fUN8xcPsV1MFAUi2cAyGLkrl541KbWpU0IpHK1pIkbfUVyDOL4htSD/SajhtlyJ79q7Xd5sKsb273ZQsmtk3ZREBjQUFA2NP+fPH7ifttVeWi3EFUi8+8cWwgNHM6Cn7LaFitah6+DcCQ6+l7SneFTEbzMlprzazBBL/Gu4kr6pNXGX0RZnR8uhs6aZZgV2h9V14s0uZx3EcAFqC3g+I5X08Fi+2ERpcfWUvFdjx5akmDQllSB+oqy6SxiJvqFnfWvVPQNhx1xh2x8OplZbzykEJ+Tfl0mlc5UHHoLQqje0jagBRSHWQbxC0jIGGyqdhnz3uG672krM/zTTc2wKWMk4EZFDG7Yc7oz3DcJXjFBgxEagd9jYxqLIN0RAH9pq+0aUP7daz0CbX+xhTd988dl+LblcnEN59XEsBOhWCd5bm51KJZcKQ1UpsVVPGHnTT7MPE2+6BheEr1dgu/LDUPDW8NT0QwBUwXwxH1ROuTOu2+LWNdFrV11sEpKGfW2bjqrkpbx/xovahbFyCSq12T0EBInAFF5bq2pB0Ik2vfEH8gNL0Z+FoqH0/aDrSuw6j8xqmd2rKL3XwL5bYVZDCc1isAWXESA9CHHTSx1NGoa1kpunJkGJY//2rn5srK9RlOOHxxUrtqVBMfEGsj7qIv/Ebsgr3dvFpdVXiRZ5s3KZZs6YlSXyukklehkjtYoMM2TaZ478ioFOtD8yx12PjI3Pfoapo2La2boM48RFcipmVNpWNsLjGXaYyhYVV3RBsZAMvkOnYRVFUiZ50+ETdfizX0H23+mmkBt8FjNqHhvg9BIRaYnKTar1FPAd840lo4w2e7n2mKufHwykI5ILrJV0ozhPy7Yr8kltPiQYjpy1ua2scUdnKCngdX0KjqNQz072e6uYlhRpOib6CEwZXqMbr/" -+DOTENV_VAULT_STAGING_VERSION=8 ++DOTENV_VAULT_STAGING="YrzhnLjbj2iFnQUJpisMUL3I0Z0xD/45ZCpyo6N73EcX4465FwJ5sVw9nGjq/+UIxPJKvEk4ibq907PIPAHkSY3+j+Dsx3aydlokbgmv2X1OjVK4QmoCmwYRHBChTgbIkDlwhbjxbiiRiu6S8lQmFrDe4DcstI4gtp6x5PbdNKbYIKrDU+iXgLh8vlul6emavsloUKAyAf/5yaobAyQSJFkEDOmHdHiFGnwkxJeuwn3BCyPZ16mg3vx7BmpVdNSbk1coQ2HTsYPfoZsKZKzc/Oon+qo/FSQ7+fyp+8+CJvpINUm9Xkn40kN1IBVJ3ZZowdJ4rYPW2Uz0oD0bLGv6jjZVAD0z8HVOpBbcaqfEwWx9b6NJ1j7xg2GiZ6321V93D14LJL6KT/Sl4391j8CUhEKTEXCNtKMchyJyo+N/hlE3BAk2Yv3llw2YW4w9FSxecbuKni2ZlH6AGGupEv3VNzrlFhyvoBKQlFbLSnrEMIlUJ0Bo0KhQF6lBlJUdBiR4KsO+8WBbj7qn25rlDp++XBshivWf08NpzMB1+fHQ05QS+gwYeLtnhD8VxvCm3nHpHPCw2zZrhWZQ7Z1n7hA2qxknp/Hhs4agY3I7ZmeGDGYwAID8RcVGGyqE7VU8eu7x1OWqrDbtCzWRgeoHG1yB2upUQ3taKyyvUdeh4bwDXp5M0ZOsh+0+X4ZphEV81s4D0ABVifp9eu+PUob/kJATutNWNCsgysO8nzryACKAXb4WOHItw5DuNdd2L4y9gWcOC5Ecf44NEhO4Zr/E9TXNSavQR0SiTTsCRodAIG0k1VDJnzdV/GI7dXGcnx/pI92bAD8Evubh3oxROCwuyIb0ch6foQA/wjygujHn6wZq+TyQVrhklzKMcxiBtifkDVL9ROjQ4nJ3eOzZ6P5pLb+s42DlS/SD94XnqCSLmnh2Nok5FhMWVI3PZN76xcqvC/+0ctwMiS04dcefvBb6Aegyyp9MoDnG2z5BwsGi2YY1mj3U3baDEeMRc4WF6y+Ac9BC7LvgMgA0W8lODRuChRBfEx9Z6qBhJAhHwBUdERg9Nm3maQU1rsBMmSQ7rt6DyEc4b0HWJdy9UMq6Q33wTdCihPBhMxZPEF6x6k8Y0jcfyzu5JWIH08QtiP0CYwA6dke3E7grS9GxHkRW/AZmCuLNSuKpwLLb6f1Y+pSIaeyI8k6jhuWoN8kLaaCgHBt+eo3jL/0A4fjaSdjYCCbJgDIBdW4Ku8PcxocKymvPd4IBhRjXQiKdmL6wjYQqaz7pCEyxkq0n8Z2h8CnnjuaUUU710keHI/MnfvlUGtSyjFHIwS4RGpU8F/Y9KTvGKpbjGpvWK6+Gie959VR1u/NdgM4mlgJOzI8xqSm8jfNL5eUegnGqor4CbWrn1vECEqbcBaGI5Lzw/0T6zrEErV6QDdihMjJE9ouBEihUtoesRKd3q9zza/4AlLb/a/kulVX33N4VNSxaidEYat6H09S0qUDxcWD92GxHuxxhMU9X0U+YrswMXzUwGEkDd2Hp4IPqsJ6tG1lORgHV2JLoTeQmPob5fzokIapakE+g78MiWlgn" ++DOTENV_VAULT_STAGING_VERSION=9 + +# production -+DOTENV_VAULT_PRODUCTION="zGpYx7O6vRv3vYt0aW1H6UF3TSi6DUFgqjeKzkNcJukFWQWvTgX5HYtLKQnBAGCDpuWY+KWfiFGNu/zVouo5LTlQb6apzBLzj0dr+PxxDpjXe8s+q7OSPH7Ist4UiVurC2nAMjgFsUpDA2LUkfPOuWPRvg1UGYjTaxEADTYCI/vk0Uegv4R11K1/HcCGXlliJk2QAVaT5ZYSo0VKvcRu5HYHSX4aAwJgnucm3xvNmPn9Cjkxx1jZL5jYfzLS1etDEPn6slDj88NzZ8BvXHeSJUftpR352azOJpL0GbSKrwoPNYU9F2JCthilLqPZPC6LJzg0/4p5vUKA83gqnDnUxEHR+ZlNK0MRTQPEwrZitruOaP1ggWIsEJA/DZFMLA5oQrq4kp+p2E99YbsPNmV0LfvsA6LtqKv393jsuzSdJ94zeLhQlRRECiTQRVEee3ug5tJ0f34N7acRSv4EdgriKp8poIsE4miVK2xXwrek9jRxeXLHzu7Oo8yBkYaX2DqtXyxf+8Qq2WgvdRm9QgfGdiwftYsjXO52jhHI7z7bJ3R/W5BR+Z0QbR83LR3ZWdI+AYY9F2CkYF62nW5TVxiWU0M4DZ5KUgVo+iNgm+AV0nefgFvud6Ln3VtNcb2bT0RFAw4MJK0LyYlNewZBJQhlfRiN+3xJKqLbDKMlhGmSHF8RRNYN9MfKwOfF62jNFlwPjgyGCjuQL96L97z50Q63TMbpEciR0uNcMavIADPs1qDhCSkYO4rQO1IgOUF34trra9KKRfoP2UdDJhiqvlTQ2Ygu2uc164Vho0E003jlBBZBI+UUJhPz4cYTtFJjpinRCp/Q0mUeiTLbo1V7T32IQ+ZkUqO7FRuwxR282OzKQVRZiUxuOAa7WxdQzrcXbCOcCvJWX8hTVrSim9z+NAFxNyTCwVBhek9EfwCfxJSCuFuI9axlb6xA1sZ/61G5+wuKeEpUvlTbQC/ZT1QJqpKMmujEePAfW++dzJJgW/nX9o0CIt3KTzwVzImAe+/oNhzKn0TbzsvMqeOaTgymo2re0Rdw3P/Fk5SUQTM7+2GIFC+iRC5a3LN7UOFP+UdQ21J+WGkkl+yvJyyjY3IRSoFWqSCU7BAjULmJmtkl1Y/60vIj+GET5hu7VGaTlIgaWiVZc4eGAu6UAeGzasTjYWNQh50p44VxQlYBijJC+JUhzPkFOLjaLx6rRZzTQVl9NUxIxdkaOn+BImJQadaC2Ad3YOMpsLVJF/p25fi2L2e2MtsDdcx2ZNlpV1GIrYGqMIiujPdpoMzibj4VmObVMB6dazpyqgAf/QXdGguyv/4JJBcNUNPbqHqMl0yY+DzGzxPCKx6WViR63HZJeC5hJE39wNEgeYGJcXrL5K2siwrFENns8Os93aoE/8xgiPdj3vLQmcL0Z30XEqPl6/V4mTgc2Oa1SAi1NGLXnVsYJ/h1Rr4a9T11zkKhRCIvT4Jd5WpvGjG3f9t7YUigb6BqlMc0BTJ6ufQP/xBBOHqzoUs3gVk4HTMDfpYwO9k9SJNkfWBn1iV102BJ" -+DOTENV_VAULT_PRODUCTION_VERSION=8 ++DOTENV_VAULT_PRODUCTION="nwpPZ519tEw+H7zTYMlCASEl+aTG5sDW2aUPGzKkE595ORAtfhxrx+jpiWRFruCKX1SIbIjb6uFWcQXVO0nBcgIT69gDygY7vE5SjXe/KLyWiySsJ3gcpiuk3m/qSiYasEjOR8tKOdQji6omwCn8oYpK9K/joO9XE7U+HyVzqSMkuwrW2Gawnr/qmIcQRQFj03+Lm++2V/oDEbpFLW8JCO2TZUc62iJsKNV2g7AemTGb7O3b/rb1QuoXVikUVh+PhBRzIXSIrsEHevEV94fV9uozZ5EvBrEIUao8XH6o/qiuOUcbp2i8Nzdo0jKA0kxh7hPFJQHmfk7on5wJKW2PHXWLb0k+/gbDG23vnkU5ndunZvjRnMZg0w30qmA9z0kMus3qCHcKp88dVaFDyIyUBv/PoFrRJPSX8alOL2HWqr9gqGc/TvcLwNwEkM5IZFBNpC8Xj/ka/RNxabS9YnSMYCGe080los5juy46rNw6qSVf6LTPUCoO5KMi3WeeM0eGCoM8wFZQEZS8J6FHMSXQbjg4X2k71wq6DNhnMleG7qQHXECxKRPnnrveJdowAulRlHhVISqRRnMLQZ59PXw5dKg8jucwsaARvgNQvRf/6A/I6+FenX83Rej+hmpXaWR/NCSC/WMxbnRhdAKplv6G9pdKAz4pI3n+hNP+WNPeAnlVSdxGeWNGh9ndYOGzCG0om7McBu2h0NjzrViHlMz6WbY1UfCruJ9zRjlpu5LXQv77C52NSVPrkk0lMX0FrwvCM3qTwu56VYQ7/A9+ZEfi2X7iKXGBjzavVmncPDLy8M9QhA9A8mqzAlBRxnqM2xr4B16f2uKQyp2KQt43kNmfhUkFPNcyp5hrSFMKkHA85q9uemoDYNgC+09/0hkH1dcg6NoKGf18PZl3dKstOIBSQhU4tU0IyL6ZY6PKveMotuJxA0i15I/ClRbpffhfEL0vbWuBTfdh9J0qmvNJoHtPiZlLpojBvCpIKLkf5bHj8Ucg/EReJ7Rc1830N2cEj5YROH8YV7C4Lox8yPicjXlUk9OsvyKXOSXrWpdsUFKtWc2OVvI53OgrWp8Ct1kqTAxRTT9Dzp/PPKVapirulDa18DLL6qVu7elapRU+9wXB5bmwbtam75l6KK77EVsP9WVVuBY6ciiTWoCKDf1Y5tYo4rb/yABQzybcfBVl9dSz5smGZh1Lp3/HeOekCASJZ95WjGt2cBd6PeIjambljFrp+n0oUiDOdOVi5Wp0j6P8NkO5s7W+QzrnQJSlaN0M5iYhXz3VKo8gnTyrw0+iJ7xQBVFgDhzkfsG4YurbiUdOEcpMBvnxACMhlUl5mq6srh+QJSjUPJEviLXB3sk2Ok0JI/UkDq+CwpRtLdpdhNV1Tq12XjjCeB8uNpJt5zUWENnH4BVDHsSmheFczJ45zibCDI2pA7H4IwAgbDEUgvITHj8aBwhvXkAso+nte6GUQrv1Hy9qitpAmGTP0VZXsd7ZWa+kJjT3kJHYbgd8O10Tx+qu9lZ5Fx94wgIATdX7ey5G7D8rVNAsd8IL9PPgYyPcwNTsdmj9ms83pjmWL3FX" ++DOTENV_VAULT_PRODUCTION_VERSION=9 + +#/----------------settings/metadata-----------------/ +DOTENV_VAULT="vlt_47e3eeb0730e831e688049600e59f8975260a1f00302ae08684ed87ba67872d0" From bb7790a1a8ed34e015d51613f0ad4bc7b565f331 Mon Sep 17 00:00:00 2001 From: vincanger <70215737+vincanger@users.noreply.github.com> Date: Fri, 21 Nov 2025 16:28:24 +0100 Subject: [PATCH 4/5] Create 2025-11-21-open-saas-public-roadmap.mdx --- .../2025-11-21-open-saas-public-roadmap.mdx | 153 ++++++++++++++++++ 1 file changed, 153 insertions(+) create mode 100644 opensaas-sh/blog/src/content/docs/blog/2025-11-21-open-saas-public-roadmap.mdx diff --git a/opensaas-sh/blog/src/content/docs/blog/2025-11-21-open-saas-public-roadmap.mdx b/opensaas-sh/blog/src/content/docs/blog/2025-11-21-open-saas-public-roadmap.mdx new file mode 100644 index 000000000..c220e6ad8 --- /dev/null +++ b/opensaas-sh/blog/src/content/docs/blog/2025-11-21-open-saas-public-roadmap.mdx @@ -0,0 +1,153 @@ +--- +title: "Open SaaS — Public Development Roadmap" +date: 2025-11-21 +tags: + - roadmap + - open-saas + - wasp + - open-source +authors: vince +--- +import Tweet from '../../../components/Tweet.astro'; + +We created Open SaaS to help developers launch full-featured SaaS products faster, without drowning in boilerplate or wrestling with fragmented tooling. As an open-source project built on top of Wasp, we also wanted this starter to be collaborative and community-driven, so we believe the roadmap should be open to the community as well. + +This document outlines where Open SaaS is heading next, the current epics that are guiding our work, and how you can get involved. + +--- + +## **Why a roadmap?** + +Open SaaS is becoming a beast of its own. At 13k GitHub stars, and with constant feature additions and improvements, we thought it was time to make future development more organized, transparent, and community-driven. + +With thousands of SaaS apps being deployed with Open SaaS, the needs of its users are also becoming more diverse. It would be impossible to address all of them, but we needed a way to track and prioritize the most important features and improvements. + +The roadmap is thus a great way to make sense of all the different possible directions we can go in, help focus our efforts, and make development and contributions more meaningful. + +## **How it works** + +Open SaaS currently has over 100 open GitHub issues, so it would be crazy to track them all in the roadmap. + +So to make things more overseeable, we decided to implement the roadmap as a GitHub project that is a collection of epics (GitHub issues with "issue type" of "Epic"). + +No regular issues are allowed in it, only epics, of which we don't want too many. Each of these epics then has a number of subtasks which are normal Github issues. + +Therefore, the roadmap serves as a high-level overview of how we plan to execute on all those GitHub issues, as well as ideas of things we're thinking of planning but may not be prioritizing just yet. + +--- + +## **Guiding themes** + +When creating epics within the roadmap, there are a few categories we're focuusing on at the mmoment. These guiding themes inform the epics we create, and help us make sure we're addressing the most important needs of our users. + +### **1. Real-world launch readiness** + +Open SaaS should not just be a polished demo. It should be something you can deploy and scale. We want to make sure Open SaaS is a production-ready platform that can be used to build real-world SaaS products. + +### **2. Modularity & flexibility** + +Auth methods, billing providers, file uploads, AI integrations, analytics, and more. We want to make sure Open SaaS is a flexible and modular platform that can be tailored to the needs of (almost) any SaaS product. + +### **3. AI-first developer experience** + +Whether you use Cursor, VSCode + Copilot, Claude, or others, Open SaaS should have top-notch code quality and be able to “explain itself” well to AI-driven coding tools, making it enjoyable to devlopm with in 2026 and beyond. + +We also want to provide demos and templates for AI-powered SaaS products, so you can get started building SaaS apps that leverage the newest technologies to create powerful and innovative products. + +### **4. Community-powered evolution** + +We want Open SaaS to be shaped by real feedback, real PRs, and real use cases. Roadmap ideas are only valuable when they reflect what people actually need. + +--- + +## **What's in the roadmap** + +We just got finished with a major UI redesign, which we dubbed "Open SaaS v2.0". + + + + + +### **1. Payment Provider Expansion & Billing Flexibility** + +Today, Open SaaS supports Stripe and Lemon Squeezy. That’s great, but SaaS products vary wildly in payment needs. + +**Upcoming focuses:** + +* Polar.sh integration (merged in #461) +* Paddle, and additional gateways (especially regional-friendly options) +* Supporting usage-based billing and credit-based models +* Webhook templates & type-safe billing flows +* A richer billing dashboard (refunds, proration, invoices, receipts) + +--- + +### **2. AI-First Workflows & Templates** + +Open SaaS already includes a simple OpenAI integration, but we’re expanding far beyond that. + +**Coming soon:** + +* Built-in support for function calling & server-side LLM tools +* Templates for AI-powered SaaS examples (agent dashboards, support bots, automation tools, internal copilots) +* Cursor / Claude prompt presets for smoother onboarding +* Scaffolds for hybrid UI + server AI agents +* Docs: “How to build an AI SaaS in a weekend” + +--- + +### **3. Wasp Alignment & Core Architecture Cleanup** + +To keep Open SaaS future-proof, we’ll maintain tight alignment with the Wasp framework. + +**Efforts underway:** + +* Updating to the latest Wasp versions & features +* Improving folder structure and readability +* Reducing magic; increasing explicitness +* Enhancing generated code for clarity in LLM-assisted workflows +* Improving tests & stability for production deployments + +--- + +## **Current Status Snapshot** + + +--- + +# **How to Participate** + +Open SaaS is community-driven — and we’d love your help. + +### ⭐ Star the repo + +This helps surface the project to more developers. + +### 🧩 File issues or feature requests + +Especially around real-world SaaS requirements you’re running into. + +### 🔧 Contribute code + +If you’re interested in payments, dashboarding, AI workflows, or dev-experience improvements — we’ll happily support and guide. + +### 🚀 Build with it + +The best feedback always comes from people deploying real products. + +### 💬 Join the conversation + +Chat with us on Discord and share what you’re building, what’s missing, or what’s confusing. + +--- + +# **Roadmap Updates** + +We’ll update this roadmap alongside major releases and aim for a quarterly revision cycle. + +You can follow progress in the GitHub Project board: + +👉 **[https://github.com/orgs/wasp-lang/projects/6](https://github.com/orgs/wasp-lang/projects/6)** + +If a major change lands, we’ll post a blog update on **opensaas.sh** and cross-link from the Wasp blog. + From 9e8bd487dd8a4c23ca0ef4d26ee561a62cb4fb6d Mon Sep 17 00:00:00 2001 From: vincanger <70215737+vincanger@users.noreply.github.com> Date: Tue, 25 Nov 2025 17:01:03 +0100 Subject: [PATCH 5/5] Add images and update Open SaaS roadmap blog post Added new roadmap-related images to the assets and banner directories. Updated the 2025-11-21 blog post to include these images, improve structure, and provide more details about the public roadmap, guiding themes, upcoming features, and ways to participate in the Open SaaS project. --- .../2025-11-21-open-saas-public-roadmap.webp | Bin 0 -> 38282 bytes .../assets/roadmap/open-saas-ai-ready.webp | Bin 0 -> 14828 bytes .../assets/roadmap/open-saas-epic-detail.webp | Bin 0 -> 69264 bytes .../src/assets/roadmap/open-saas-epic.webp | Bin 0 -> 10460 bytes .../src/assets/roadmap/open-saas-roadmap.webp | Bin 0 -> 97964 bytes .../src/assets/roadmap/open-saas-used-by.webp | Bin 0 -> 45640 bytes .../2025-11-21-open-saas-public-roadmap.mdx | 156 +++++++++++------- 7 files changed, 98 insertions(+), 58 deletions(-) create mode 100644 opensaas-sh/blog/public/banner-images/2025-11-21-open-saas-public-roadmap.webp create mode 100644 opensaas-sh/blog/src/assets/roadmap/open-saas-ai-ready.webp create mode 100644 opensaas-sh/blog/src/assets/roadmap/open-saas-epic-detail.webp create mode 100644 opensaas-sh/blog/src/assets/roadmap/open-saas-epic.webp create mode 100644 opensaas-sh/blog/src/assets/roadmap/open-saas-roadmap.webp create mode 100644 opensaas-sh/blog/src/assets/roadmap/open-saas-used-by.webp diff --git a/opensaas-sh/blog/public/banner-images/2025-11-21-open-saas-public-roadmap.webp b/opensaas-sh/blog/public/banner-images/2025-11-21-open-saas-public-roadmap.webp new file mode 100644 index 0000000000000000000000000000000000000000..66eaa202715abd4de4702c18cf4b2434ac1e0058 GIT binary patch literal 38282 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 literal 0 HcmV?d00001 diff --git a/opensaas-sh/blog/src/assets/roadmap/open-saas-epic-detail.webp b/opensaas-sh/blog/src/assets/roadmap/open-saas-epic-detail.webp new file mode 100644 index 0000000000000000000000000000000000000000..2674291dd44fd27e55dd8bf14a3a8a3f8e6422b9 GIT binary patch literal 69264 zcmbq)V{~QPwsmaVwo|cf+eXEl^h7*#Mn)%9jlv zxAFIe_q69YLj!BSg7=G;p=X14!ktb^|9$}Ty9z+y0ssIM35dKu08n2kpC(rgY6%LLG0^TQY^G^AN0eJvhK>Iu8n?{!g0Ptw=<|qDs;12*)0swpA4=ez{yD-Mv4|uE5pG*UZq}OFysi+}5Fy~Wi z1K+Y@|Nff9lhMpr4tBMx^0XWivhqXCj z(@seHvsRH^MMs__KM;LC{P&7$U!q5#7C83f%8}dPO_0@(^+jAc@;dYEq~~;{+WV4i zo!_!ko2(Er@ntDfk0p9G<=dmbium%?XI40!@uCnXay(2opJZrL9F?zgoWN?N8#i6K zt9DsXkeOfU1O~ou`qGhA2PX1}167i(=-u=mUVynZ-%~I?VFB?pG}WjzK1(XFv%{+( zjUFwvJ-Mho4;?%yRi9x+*}aW<2VmF*LNkU%0mIt_g^H*peS+9HEKIZV`L6T54H;>v zEA;~Gy)X~PAAK-Lc9a)fPL;ni4LKVdCRxQTB0-82!r--gHMehbby2W}g9>;^_FY^g zy-{8+t!2wLKm6E8BtejjL$+d&iSTH$Iu+=PzWo$pjtTLbpk%c+bbPa_hl$)W!* z_G=m@&MW+RV06jLyEaLQ70Yvcc_($^G9)LlS<5e6TEV70VtgHxK^5C{c$^(df^KKX zj?3t!4j5}5R2&1u0n4leWoDy0f3@R?=Ty1*j9}h2c@ll&Dg7n-b=1GTmfnp=CKJ(P zNDk}1%>v5i>r1Yl8LlJ0{*L8m32abc_#;trCl$b{nJBnYrC>}>ZSAl+2he4Fj}=yS zfC(Fq;1k~yhLh-`&nCswIsPzmosp%Te@%t)5M~>|i7Tn!h{`HAFP5 z+Tp2ENFny(p#jRH#*invvc0IRNI}tRkY`E}R6SMP{`g>%QTeh>t(M=nfMGPexnmyc z2F+)zx?|8z5=h6=E|fzr8Siv7dBu5((sG_A=~2 zcdnt$W={%WcG=B4=aLtdt`Ebw@3sVny|YR-kZnppEE;q-gTIf{0_!vw7iF;{+0EK7 z%AUww;*Yercmfn>lV!n|ZP-tx@lHCgV`9c~E?o-I8oF68+>Z`qvOQ4~%s$=FX9I-j zYcj6~?h5DTF4!j)94rg5)3@v)dkZSkDSYW5JcFx7{G$FsiCqS`DfQ&qe4kTKGEZSF zDF5sZ1uL>yWyB=qQ~MdoQpDZ8s5{O6wEqMx;I(@;dZRh#UyVd+U$!i*(5hCrtMx_{&I|GkNSqy2}M(fzy|!d<%u z^@3YScDn4H#)3*X`SdimNE|fhoKBUFDFsfulKbyJNFMWi>+$i{FtyS?D~7cV+Lrj6 z-$n}6&Z;Gc`e>bcdt41lT#MlASo@=4kx0F|?vbY-Kvo~^lEQD~^R86)-P@hBZ9IlJQlHLde80knIcimKfX-rpXxj$|+yDR=~~ zDwCu{jY<(McA; zP1!0Bg|{%JD54zkWfibdKmqx=Bhd?O`#Btu15zI5>7zff>f_MVrf5s7to1XcY|5_O zz>7=(u*gqo}MS*I(r*zvEtYItVBK&UL#mH1mh39{!^H|X*I5DA>iMr46*RLOJzpkAP(ply zet|p58)g1T-SiR8;k9+Cj8(I&avbfyF+P)c-ojVbRX$e|D^+?5!?((=P@vn_uRQQV zZ0(=k4_5~6vj2HjD)TRMW}$&Q*&Aveni8)#A}v*U81o}6(Sk{L+ch^>B&NCHMl%VK z19l2Squ}jB_DMh3dLthd(K}6&yNT8SO+m&l1LkXJgNwFTBLjs0Ci&`Ul zp&@s=@cOn4uVa1;=2%fNJK=J90STP@;=HmaVYrwEgag`fu?kk_#YM+_1CD#N^W0T( zikj^J(uxI-@twuY3{ld5D!%@aEQ=iRe(R>66IfLg&_-vmRNL9-8z zO~(DJ)cBA8@dxtEMad}t(5fv2zwhDSldyl7HoXyn-OXt`z02Oz=*{tDJFtiF?F6{s{167}+ooQ-W)^{!DY<*W$t?5GE7OH|XKe;r!>L1G_X{D9lYWApJkQt-n969jB_t2euNFrU(AiCiuf1|B0LMA5R7??!3Je6hW|;O!EK5VSmXh ze`iGT-5Lzv^4i4@lcBsqQ)7EHZP4_trgJt^U_i3Mk8#usdSl}=Dv=o006}WxIk&J5 z>Z(g{+q_7*!{_GRICcN(2@1g|<|sb;kMWRZ%GM)D=ZbLU%}Lu4f+~Pswrn7p37VJo z$2hc&g5wOrff_Ak}T-$2iJT?oKiOLRzRF^-cFeZVKC|9Bjs)#HM>R+bef ziAsS*OAl5e=HEzzg@>C34vhf8{7hy)(oON2b^U+*%BY3N^!UA{6(Rzr8`6R;S?1I% z587UoK?6Q}yrskI-z-fhwX}3+-R9I1hB5*!slXS4eYp5rswoSl7N5!Inb#9_deQ%h z1@vFI`cJ0_Y$E4FH25qjrebm81Yg)oK{(iYS+1DcW}3UkxB}vy80ZtOi~}B`|Z7^|C6h{kGf2;h*SFE*+7Ufs6*W@mO;uIF^TkNAp_~_{XM+uBqY{FZ z6s!C*e^P226^l>b56lI1j%%B7x3EmM5#N8erFpzK0!m_LC?$=h z@L6+U4%Bd0Ru9$kL_>JQ8ni6rXMT%g7-dln#4ilb6m@+UR~+z7{L^sZV~NK;NBVmZ zS?sEsfwj7(c}otK0R!TZM#Z2?n7aHxsk{=L@lvx39p*Y`9NP=k5;oo>=#vuKpEiGN#`HYM*pf_- zt|RioKX<$TfSuoA4D2X;xklK2982P>fg>ZO5ew5yz81fZ`s8~S(}((LXJPz#yA#PE zJA^D=COk*wNuh1;26jAOS~hQ3sXNp!tT+A|FY5CYA39O+0C%9}7C_a_rSnF!#|Jk! z?y{Ioc#_6P8532xuCvaRbY?44qHo?;9UGC*f$$#u)n9qokl*&%-gNgOb4=!_xC4$gp#OpK#NZugBK@k71dU8zbOc` zYf1Q)s(3wxGBuJOL4@gqa|6uZyvXi|YT75t=jz9V3}od+v+zR57!~VMOZ%{bJ#H6w ziy@knX_;q0Z3$3oW4Hyr&cY6#*2`RGzYq3Axww>We z%>!Bb3KbHUvVRg`{pp()k3N|F#AkBS0$)yixF_BI)Hq10AC2c~_xytZfn$0H-uVj1 z+SjvR5?ME4Yxs(EwM3+hw%HY<+F<19Nreuoi3a|^=;NJ&ylW?oJD>MwiTbj$!45EU ziR2g9CPxxwLeh0IT;RT{XOSjnT>f&9cFSdbhSCWZ^NZ1HcP+Q0Ekpnt^|K*A<)vsO zEuhH{7r?+^IFy}u+eu`BJ{>MZ;9`^|!m|s!hXTihu&8hqDw#fEPwYdcT)W9{;%BYi zpn(SGi5Kn}`VnP|wsJj|Zt=7dk08oz7!<5!2_}$)(W({9x@qLlQY@ObH-%fcv3r8K z&N2h%wRUFqNuZEPqr?#$6VFcy8Ymlyn@Zn1U$8oWeMp#}I#!b2tre{3?3;x&U9Ed@ zP%n|S1?RTwpggXOps>CpFo8t6Ny`({9X?XLs0%*G?7BYnzP_rJaaVH{N#Q+tu{Z-H zpB|*>>=)_Cxd)egE9XhAOr(1d1JnNg>-`^lHOxL`_NTiq3hNcul*pLavL&6hFt?s+N9#LKFFy&)i?VO)low&7YY2 z*0UY4-jc)mBQDaM9cMu*DKc_aiU8itS?4VZ7$<;EJaVyAg@3GDz&&72>D*s%D`XMR za_WZ9WU7>Wd3bf3=l(QWAGsBFnJPQ!@|yOcZ0 zwt2i{NDO1*#A>=r!KTQ_Rd>QN$S3->GK5;T4vS+wOlqW^kwC{r7N9Eh^ObpB1Bj>Sh09WcMl|cvRxYkZTdq_>dt9 zjWL+GC2Wau~_qeC_+`rGrvXm4gb2`EX-~u(8dgR(2BeO$*~{38 zsUgt6%eV0+eyz>Yfyq_5Fl2pxMwBVT{L)S!$v+sL1*>@#6o7qEth;JkV}(awbUuvE z@X3wT9ZhK@tXGnalpBahOmVf`QE9tUKW*5gNX0eEZHp@z#NFi!di2a-Y~2d&-JsuD zi-*p=@pgo@)Qxk%sVEi(=&739$R~nmad6)|OiD`y^FZy%OUo=&HW0;xUe_S&$v__9 zvrlYz48t)^<&ZuRgj4yDB1nsOKCgpo(HA?eluZ|UtUa_7#M)<~6e!Uzb0MB+rk2Rc zDMgHxeU$lb2a3!1k4%%Cg6_3H=gBA4zA;YmRvvcce$d^2miB)iM$Rl%D`2=)HbqzE z6{M`w3UY*#mS~e!3z^diHHWt`ypMha96OGeu?;7*Mi6w|8fvU9*b>7xn?1Oqp5vk) zdoa)p2kws^WY868kXE!QoUxl3M{rx}0;^-PCFr+=9TEF=62iRN)&uq^%XM z*f8**45-)(Nz1V`w@9IYwKEiLJa0XC-4dl2Ktap-Cim4>QqMaouueGR=kG1*G6~Ex zClo_!g1ILz3x z(zOocx|@8YO5aF*zB)~;hBHB$l%>o;1K-0Qr`arU`(cnzn@N2i92782UeeRM53WoL z&;5_Z?}oH_xmQvME&5T@kf4vVD8cFBe?s^V zc>9Qg|5=XWc)bSE>fTI!H!^kdbmtQK(C{8S$8;4Q5dxo_syot*ogVYDmcy3DZ%Tk7 zfAEiTePPr7T7+rX?lN<7;;+Oo7|#c?h4m7WY~0NM4dhUW_AOG89N zA>Nw%V<&>nYl%i7?$Z9SA{|)a64|>{c%j^qc`xC@&9pm|>9_U*lC<%BrHYh`3s92C zn#V|f9}-B+=!eFzI~Olcs=6jyi(vb&UaZ6Z(KoITg|xqrw<-HKiU7w`eZrTAZQnR1 zLL%{(ua1uPi(?F-)wyhl)P#vUzhr_MEB0T%_kIH4da;7zYhwvi3WEgH5q2M+w3yyo zYli6OjId~b{~ZmFAd??^eAN7uHR5BbtAwRrA}-zhX^MXR&9@}p*|Uh74cx7VM`WWeI!iyBs`%uTyCIh7Fa0{l}jiC|P^og4W0boOGD$wC)3DsiK&Y-8m{7K!%22U`{ra_9?bu5`;u$P&Jn zWjK^)4jl)nt36T(jvNK?f3(dPJv}P7`txHUrL)N$1p(!MVv4E?DJwZ;_ zk7je-=7E^b;Toi`vEg^m>Helh#--X8SSa5^iz+8j#RuMKdJS>{nY&_a_R@k!AbP<; z2}3)$Rb~&&vg?|SD#OloWP;PtdNYZJ-Ab&Jg%Ln9*0g}oQuzto{Z3oSG`j!bRjjfC zDs`$UnHpCiaEya?a`qd2ZMuyfWep}4SdAwskRqT(;Kz^jpY_uUfl%s&;f_)q8xCLq z;NGf^+nHZn*M^oCK)(>JmPff`vp>VCu!ArZdzYSPOJ)@;$JyKYQcw;zB~|uc>tRX5Y>aR4f8uCoutREW4fW7~|90)y7XG(>D^+RKw~eiWN)EZZU(BT= zFp>;2uuUR^%^ENdZ`-!`^{XE)_;BGHdpp(5YuvmCb#crCFwD3%?Y@no-F%Qd_owTV zbKu8_>jMJi0}|0(Fs*VhsjUjiq1=+OD~}d46Y-CH?`xLB=hj|(C)bDZ*l?`mk8;V> z!P^P-a2vyhhIu8kTUe4N@Yt>eFH6N6xe`TObqL&F$mU}%ab>fi4+ z%Mc6Bi4rIJ`LjG5=Iul_d^@wHCQAhb-wu?-zwBZ8@49kkAX2mj9P9M>=*TgwNL)#0 z+#aTD;EvhcYG%dreXbX7N+`n9T9n|`(Yi9F+PeYspn(I1jpSc?i&IJ<!QE48$>EGxx;0S zG0y%_bFHjf22cKvHiVBQF1WV-JVgAjCH{GHgNU;S-QSu85AoGUhpca}K8&dUTPLF; z5YRhdd#8g$^_Qe1ldI|bbuskuMYX6uqXtjb&Z%iE88=viaBaRZrM`J(q_qA>j6$51Vop>8 z?9M;I8{NdjQ|Jx4)CAtC9TSeNKg7%FxUe!bge&x_4ASMIIr%5;htX`p=NBOg%!s4} z#(EkW<*}3zPH!l?NJ0{Su z%*Y4;0s@62O32K3-xpHd-f*j-L(sTz+pD4;zaKvB+aZKvhrX+@Zz*sj9vEovCV|Fn zRNInv8L$b<{yEx&mHFZNqHTJP%ynj(zheJ0iT(@fT9yay9|w{S1=Ko;*+ z?k(5GCJPeN0Bx~;wIGVyN(%~2N|V~9juJ0^m2<&EsBhAe2#GOR8w!58&d^202%ylM zd=sp;EEav+hHa`wanA6T;y$lsln_C!MwMfZ@!w6m;KwpIbY9(LPCF4B0;$A~+L7(v2D5oVx032?5T!FnlZm#UZJ? zY-V5*#|AU(Sarg8>JvvSjsUFYbq;URUpL+N*$1k2#F`52rN@cl>*%xc%lhb!Au$W^ zr+WnA$cfkjw~B>CZed*c1)o|`5&IRT3pI^od#^MP9ifPDzpp%$yn8pMId3QLRyo6T zd0<@!@3Q#4QCYn%t(Mg-C>mzZ6T&pg8zQ%)o83g}VF1xUPY~|pWB`dlOp#)auE^fx z^!w~!DovBTkcl&f64fi-g-rlbvwFu zN`ckUP!o@C${TevV6N++;8bp>do>S!%IQ4wsh+?+owhs8lmaOf{*dLCh}AMPi|UUnT8Dv{OtBpF zyR&JtFdeb0R#}nxW21`UHA3V;e|zzZ zItI+TA;#lKVBcIe`i7=5xQCH0&!x0a+#V{1Ev3xs02sj7GsV5VGmR|M2-0O`zZhK) zi-+gB?V_>+H91}9vE{t9DnHM(4tzax2$WYbL@qa-ZJp~It|^b&3V#nIG`gP{@{ceHPdX@!-OCpb_grlr9!)0 z(^R)-#U?htHV1oX`UA;;#%^(JnHhnnv>%Cl6Q{1C!)7L-haQK)yGLHw-(3`G9Rt55 z21-&G=HVE7wc9RN$nH)IbFF|rh|d5@bDP&8hbgmhKmHy7V2xT= zE_y1bq(EH@Ua1Q3bXCS9qL(-BLNPXkE1%AXvX$ZyZlTi8m1s6e#1^ZEpLe>(FZRzT zM*XIa22MgZI0O1-kPA()GF@W^?1q}K&;)zK_E77mq#Fd zPIkn|t@WjCd_lqPQ>WS*)(_^+t@2(7Y~0uv7oP>Zy$8C9k}YS)kPwHnc;Ida#v{``neph?rc$BVT|R)T@&kASm_qXpL;z9qRW7<%vM z(bhV)6L;6BpHOH;aoTg>{6nD~Alu$B$mz@Fh8F#Mnb54E%qCRZ`Mc zwt7inbIYvrT_R@f+^bNRW1mr<8rU5!>j@BtErf#ilUEp7?4r45Bn{U@7;)`|Z;sRn zTMgzpU4G5-!+d-0c?9@>R~9T#){wB z7%3dGXVv)=YK`AHYu+0WI!jHD?VwK(Td1l2bAbQ2>><0gc2G9xyeZOVj* z5|*%l6B~5bs2;eEyT>*SE0k?!hZwl;W8BDgaSHo}c}m{l2~{CZDbNFU%u(#2R$cMz z+sI6Mw}15F8;M}sEeNGiy=3GZn%bg-5}%~25KC5dqBSb&n@ARq%mUtx$etxo3}2Upx9GcQveW3L9v9+} zG%fe0oz2^In7Ix8I(qBq>Ox~Vea)6>x#TCu4VY?YqqO4_Uep67%wJX+o@XlSQawCJ zg9N2qoSDrH*(j<=8dgc2tZr^~%cS{7H#qj+clQJ6778xN^=Jvk<5&%4soI1NCP8)d zv*8AlTxwPbP6gM{w_&V?e5n$+kbS>@wW)Cxs~iu?Oq(2JwL^r*!yQaF>GLtC42x!r zTgdK;k8vbc5E!#Zyr1VEL0(Q6IJc>$Q^UMw&GDg*CFr6hAq2J(F@>!une_)t9Z-=8 zd1*ma{d$2Dy*(Bb{hC7wpHDxwt|XD|j@&zd=O8+?WK5Hcjn7yPJ1k|rkr6FG$1v<9 z_T>u#iMkt{4Ap}}2xvA)($uFJhE2UjBpY6tO?95o1*XuA@EfdtD@r!5WhY(A;wEuP zJRHzGywbP#xq?b}3WqxakG#6r|X2q$g0u=wiKiWBbKb zmkplpl^$8bO{uh@6BUXAHRUHL7UOB}!gHVc?aJjl#$_h$>H5JXEk#?PC-&a=UVjnj z(!$i0xG#Z5qU&(y5NKk!D`Lhjlun$g*V1ED}&IR7Cv znwS5>GQg!k`fqh8!XLKvzk(dnPmUqtYKXBrq<*>ueJ5jgJ$s;jr>HzbNtq? z7A&^V&IK!~V``Q^xVYjO3@H!M6mHeefhwq@;s`-bV4{INuZVy3M=4Q-o|M*MeP4ct zuhRa!<+X(qe_)XZT6s=j9XGRYRQUZVx2wq1$k;KpiL_DA73ingdw4x{1295@fXFRb zpLK3634eRv*q}{c%nXraTc&4xb>Ff@*mK=3kl5!>4QkqP>9`s{8)E8Tg39i9UE_m- zwIA`T*5ZILJJS}hqcf-IlR#$YcD%MOQF*6T0k9gwr#RiFUw`IekIfqND>DK$b#W$x zLWp6!1ryWFc`B#{kf233GszHZ^CWh|r+;P-HAn9TPI>EI#jmttf0{~@^S|1CfBgC^ z*wM#j=sufM+;AKrGo$mylHGDvH$tb2))Env%erQCwhN-Du2TSqVu&3z5}}p?j~~W<-YkeY;2hSRw?-W7Nv_82h;h#fem&s%TK=JMpWq zCteoqZUZ6=;#o)vRD!v8Pv^G`LD<2udzN~0XT+VPQR4PPKSAsQH3IOESmFKT7{F$J zQvQlG@iuwQ{!F+l4+p-$;e@?5bWsB%NF`sN_KswUcKfFGxWVEo$j2{5Nw()zl4T2B z67|Yl?(BfkzdIp^rMG-~86w%A`_3>;rDED%$a&c+O<4fE@nzrJpm^{$wkFPm?P?IY zfLp4SAYt<7lPbooYG+mhr877JZ{$ZrV!2G~A};ivZT1!;GviJTntVDtpB7K^R0_)PMo!Tc(VvLddLHkz% zKTFIJuVC2_jX;7<7SV;P%_#xZ1yIZa2VKF_Kndb1C}Wg z)Qv?^0nB&7LqBmq64Gb_y^`q^Gdh-DU?O+=<|ZDn>| z=-oeenCQG`MWML}ZWvo4-O%~Q2}-LMsp3Cq+d3foQ%_NY#EEgi?? zc3f$}GPE{_&`tf4BNRJBI+TmCa1;^U?zMQT06veemSy5ZTDbt4R*KFPx^AptHQrKNU8k}K)ThGw?y4+= zT_n?Xm=C>|a&(kra|IF)Ocz!m|QnA$NsU{3EA4d6|q0!M7Y4aqG_1A*IfvR}CF z{Iq|2i{BEH4BddoGGDnTY`{Dxp~B^AOQG#*)5B9l(v9U!9rd9EGy0S*_Bzx)y|<{XvPnN&Ya^cVQvf+H_* z>>iE-*(kRd?mOIkY*?wNGGh~Uu(Cs@Tt#9cY~$QTV`b7w0VvQZiZ^VX!dLVq~NFPB+Uant?` zTf8;KIw#v9uqyZW3E1Tv@)bJPE%*FY6NT!VP$56XNeCLLBpQ$IqR8^WUr37yKoooj zb2_jj;Wd0_#un%3B%t9D!%m3w6wqBHG_Ncrd))xGrHntu-PeA>e_1M2X6+nY8#1*S zuGv@CgY2mFUu?8mfc3dbY=e}89LfozKdN_ou&@s3Ve? z-JwCmhge~KCoBli@B*51_cNoPNfY%FEz;x2bpOQQvF2`hmR@vFU7R zo;CWYsF#^KF9sp+_mzz5#mjmii>NQ5VBZ3!ys{@D6=oU(4d&_1`cKbD@jcX^0!dId zbPvv@`0{#e`GLB7^?G@S>eby z5=@{EZmrb>Fx?942G}6w0F?cEfPlc3X8kBdY9MtL>U%*EJ%Yjlr`rNE++Cu3e<9q6 zQ9KInNIKm|BLjp&&mg84AS;FRAys-uiaDld_;dW9W8{nlcu`$RG$ReM88i7`%Yn*sI z2NeP=iW+UPiC%%9PYx_#&QNd|nd1gJ5F>K+BoydSnKYaQ2uuqIW~rqf7bjnc^Cwc^ zOA>I>PngW_I6*9-wrz_|VhTI7bPWASTfH41;sHlyxym3V+iOKW<)0c60j3cN8&3rM z@gtoWqDGhW2g7ISr$drRr|Op}rQvrO84 zJP8ia3v5Y!lV`Nx#+JV{PRa>XV4tE#)dw-Zk{dMb(UP$I?3-eOECbd#eS*hvB&$(! zH~&s5?ypdKh={3nP5mYaS;ruZ1tO)PKfRJzI`dQ_S4xU&RH^#Qsc=#dx`fl!bzQPr zf21A`rw#?k*ZfDMA7eF=dZ&z&KP7q>zRg3yA2tAn(`%7YsDqATLJ#A*DNvN+t<50L@ z!6Un5Pfs2e>-G8f#BZ72eKm4l3a;S`B0ho!i#pqGuD->ctg#X1?5uX6G+a>JRp$!C zg^g+BGB`Pf1w|uJ)j0$iV9p12<+H_vD@jEoV@T0qRt8Q+xTWo8X(ak)yt+3xy*`#h z0mY&>Pc6^DJ%@nOoi*-O+`(;KeYJjLnA^j9HPB*74=DKXWpIyCH8Ac{Kw3Brn7(b` z0P*5#;*JNO?aeILkg9Hnd%*=$lgG8}8wVVDZ|!BCsob71{4CYTpLL&eP0VjFaq4S*c@rr8cRD+=s$4<*4R| zoGJPqHdGMOda|#a2OY=V$XVfqgvCfGzQx6k((q zip{+=jS$u%7l3{!5xd+KLD=6H>xi_&$XDB1=?iG zBfX{h+3vi9WVa|q*-p*-g4F9NqXR-o(I30~izugt9JVAU9A)#wTWbhq$;ep0#V)5X zGc+U?y~xBvLQ5;u$)k0*(liy$<(%MMDE0mhkZ^j{w|J;WzcV~@{e7WK8S93+r=m7V zog6;W&$NUjS1RZiO~*B<>CAM;U{v{pDw#q>L_7DwjYCC;!)tC}WeucD&qeT2o1)Qvet1gg$(>$ome1w*ZJr>TP%Gg7)p`bwgsWf zgMPov*aV4r8`D$b34uYbr^gggejAUPhzumj3Vhpx8`C= z(7nJdfgOHC;Uchi+#ug_q=$`ixsW9Z5koDl+slW%m-X-;A=6W*=np2BOD{|`k5Kd2 z%?7r>!v#2>ht`?k&mBE6~6@xSMFvqG@wQq;TwpE!w&f04wm*WxdO>m&-S^HP6)dKuUhY7KI^8;*a;#arKkTN@qbV+l@@@ z5=q1q#wHQOrW7$)j#Ju-a63w2xeuC=e~+L_YCRJM*@J2E)b$=0_sd`y94(FbK(T@Yi92$; zK1}A-7==#$w1Ued&{!`(KjP9z!v*<9NdIkiwMaw!bMABqMrhoLZ0&$i8xt}`P)N&4 z8)cl-c~Y5m?`u_UdRi2(TRlwtGMYjIk2z@t1W|ptDu;UEsBC&k_5b7U9fC!RwP?|8 z+qP|NkJqr;&_GDizLT)v7s0Motts)8km8JDKM~ zHEE%@`NSqVYCD9Q!vwSv&1!;itL4uWS`S46P7+%ZC=RqoRUS=&yrYa zk5a$d&C40gP!OLuoYfQ$(giNl-g6pea{{im43yu*hwxGy&D20#PK4wc2l{Aj<8>;$ zz&}ob6V!}GPCJO-@w#n*@U9D6lt-`koeG(s~rY;J9t83h~OwO5DOC^t$^te7epnjE`ZwU?W2 z<*r;IC6+xu%DDD0vFrE?^aHrgksxg!sFJN3Z&!M&y zSR-RU{7}|Y$b!*ln&T`X4u&~Nx_T`Oz}rGYngCsjeJ*AYZ4YaHuKFn!{Q_TTO6*vi z!#?Q!`?)~MH%=!y=&Ag|CsLf-rusiJKI|BNCauk5n^)^K3 znU8;ktZ40^iFt97hSW^kjj0zGaD71AuvC}Tm#fczCdVjEG#DpCg#G{+hPJ!17Q0-m zP_4fw9zJNJf{Un==gN-2~`06%HKP*md5oJLB8oUx_t5V=x7BgiA z-kmDK7@e^&+m=??PG1YkLhm~z*UNEVdEf&^e+|_AQB51ZyZrPUS1xm@_h4==q1$l1 zsgUBA1j*ca89T^!zlX>)bD;s62OfHA(?^LWIGG!aWF(}yJVzNGxNM4?*MUIEFC63| zHcy8L$@UabCp1j?zD1#m#T|>zY0!|s_uZYh=%`q9^G>kITGd#xXWf#|q_+gsM)wK| zYcH4mTV^-%Pc9MOcc26Hw$kTzST(7MyH;;hpxVdT;-)q+9O=^!!G$N(M~CN`wwm(M zj#gCUz=XcF8E|;NKy)^%tyO5N(L{skI#G9-x6iE{z(Mjg>(mmf&NTmWf<;qK^A2aR z`eP;7E3p7QOL1qi0E~0-=gJUxJ%=ys%~6GsGbU**{(kX}Vip=FkFtRJ6@U(O2u9la=3^`^3(kwccoHB|mP|J3Z>D zU4$y?(sVIVG-+`Li-KuGM?TJcTWRwlH=8hpytV(=9jb=OaDaKv@{Pk1+5pm&cw2h* z?*65ZUVG*KB<5FQrJde(3o|d7c@r;wIJM0#zH^e4Db`a6{skT4{e#CLkk7M?&ZxCK z=4M_u0dIv3u8Gzh(s6zZ3%YbM@WuCggkp7jKDu9w~x`$yn{}Cbv~>E zaSb7o)UTAK(&ma@O4urT35QDosi2K882u7tva~mA_Ac+ldx7&gg>nB*G*Ao$@C6}$ zAhDYBe48pIZB+88d`ixJ7l75e>B-kM`#(!Xwb{!2e7sD|{B{+Dz1&r=2?Ql^B$en9 z_jU?55LA{v`E6^rY#=h|TW4ebnt-GkkA6bb7srW8*B0)>x(3UKE`|IjDsomi zYFHKy6(eZVpx$6P7U8Q5qpbqH-sPiTf(2!U*>M^;n25#dSyL_5G3SH!x|E(VEfg?{ z#1oAM7kJ&MSP>+#h^7RsZ{57G@P|cQ?INP_EeNDz{Nb?=J7|Y@=S?(FKBj8oPrFk! z?2>4#75YUdcjbi8974A@G8kTBT~JS$pupF3#XB|5H)bdp7V)>{RK62`7ve?MIw#X9 za!G-$!rRW(L4k?a2Z+2}?FEi;{6|F|&9{e7R6RRELM z13yS*&o{0Z_?e1F64>!UL#U2^s#eGkA}&Tz9c@sXam(&37@O@BYzb9p+*XKv7?5i>Htg$8CxX=!gy}cMiu6!O z3#mT_iD=>K;-t5EEX(g5ae68+u z22{S%AX);J)#e^R0Yp{jGS!TKin@#O*HV({$@VTN=Nm{l419U_pLy^*6L*3IJsP@Jj57i}y1I1ES;NIsWOACpS! zMw@P)u;*p|D(_^FMjMkP02kcQwz3c^$yE<0qVdzZ-A8kryc!Uzfc!W?V~T-V*&7z% z5S(Jy+Jf~~UeWWi6LU(MfD${pl1)g;aMkTCymwCb?rNGDfE( zq!@(dM{C-qleo@D{hL6I(YD?P4yFcLaVNNPZvJbD1#5E_Ev)PZH(B~wkLo11zr>%a zDy3D7!PxR~dVsbxJT{+A8`c&t;@0}GZd;WL!mvBh%GWpS4(nu2*9 z`Y7>?JMdl{?7SFn4L(*f?;q^*TAC}^{t=LNd)3+;sct8m#WRS7>Lr_yIo5QuU@S;K z>j2|~>L1L$y}m~pW`jb-(WR;!=S?H7adXtYW>!X#BWs+6EVkgtRFfo8h%j?Bdfn@B zZWS!hsKM-<32|rkHEr1VaP;}JzeQW}*DOiPM)JFgIT{A)cN#xA3yyxiERtPxj{F)A zx=*u0JGE!6+a&5z>^0p@R3mAN$!*UkXJ>s0e;3L+62RCFuHTL%YA9F1GWyZN?^+P? zdHO#Hs#VK=I8O+2qOO`Z*(U*DvVM9c zZK7|o?;1)OdT!tB`KwEM^X6doSsn*(56Pj-Q~Di1TI`y@)dWPNl$iM`fwWUHhv0Cv zHm$GcZ=J5ob>&N5gtii55Ws!0E({}BkAbFZ=9Q&xQu69qkT+IeXw`?P5#{8*si4QZjw z8Q@`XHl!^Tt)0@_m9ByKx2pkQt|Y^3rpan6EcXr~U%_qjpX(_rdbvPv`B+yf(Adng z%*R5XXSFcPK)BX=x*~__!2h-wPY1CWX%~{~<|_enp{?!UG+7Gt?L*MUYi2p3!A7Y! zgb)7vRtp*NY8(fQDn*vyRY&ItN2r*X@YG2@9_ZtmCm4M4i7VP$ba3UF{1iWX$Z<_% zVv3SP$u_X1)TyvX!gqJ&+E^Pt-7A+xYK1jmCX+3InTGcNin$l7og!Zu-yef`zSfh# zazW|#Ja8Kct>qNX*) zDxa)E9Hf8Xg0lbkq2+{^htG?wtvEFcSP8X`L~jV2iFSnHZprw9>ycl$#6LKePoA2! z2P+)r{JR7i_9w)1f$C2aQ&lH2s-I*rU@z6JCEu^mLf;D;*s4ykrBT%rnCHv3?dQ`m z`*q$C={yC!`;vGIcn!Rq2RR1%R*25uPk`T4WiSq0{V%5KlPt3%2?F|Z_rFTP6x-(5 zCW5t~BnA=F%(l`=Mn?S!=@N188Mie44*tdgkxijjnqKUPMcB~@Y=g6<&kUJry4K2#KLS;faW_gXgyQNT&mL$ABXb4JaFT)>1@p4$ za}s@v-$@Wx#68FSo0^Wov5yx*m1((2`1z0VhiXwgaQ~bsXP5-8?^Y_ed^Cx}FGDGg zIH8J7*gORbA7yX~RW)YaThKRxLY-!n|KHHJ^lOxY-_n1I|NjaX2WWbRP62BgVHcWE zF`p=yQO3<<sBq8po zF;EcBR6hP1(5k$L9LlT7p2j-ukOm%vk>_D(OP&!X2@O^$s>=f|B26REx>mF(#ospd zPPZs5K*dgIhk^z#;l~5vBoh2sHhfB$vRPe#r0{hsyw49wFvF%FRCD3mQ4y9jzQS-$ zf6xkL?dnSzEbt#>M4f$|l{v|pT?dfeTn^Ala$0tgCF4%&$N>QTA#RTrDYsN>+Yp@& zTbAGUm4V|%$kzXV43^ffNt0C$7Sb!{D2+XaFxdjX!#l6D<%YEfGpfKzDr4u0cVs-0<9(g9LQlXO`l)nU#%0YkD^zd zCR+KJAiWX)D}1wjQ%&0)%vE|58-thn&MR2CX`lJraWRoL^RwQll-z-e34eNpVVFj( zs@^%dFC@A;i*WDJvJ838Z&zEXQA*a6KyYJ~6I@rXG2S?%+z#D88kqv?jwGtny!1Wj z(ye>Q_jd5IXDOb`NtP4r+&(YjZX1ft6NsC{{wlt+b>R(-@1%jYL)Ud{in#HRT81o0 z9{CdWe(!wm#O9kgUQ@Y8&id#J+MI9m&ydFPfPF7@k>_lC7;uza3KqwPFXOkUT?)`~ z#G!^;r{&m&qK;MPl#%nJtd!F3(h?2UZeq5WnW`%ySDXcVbj={-a$;IO$TQ(p)DCgJ z3GepW{c9bMx(R(Elf=Fz*+g85LCQD^=4Fx&TfI*7wb1U^VhC9J75#Z-_DD6VI2*ou zdBz5!?TdoAy{R3SU)h84ud5j4%kxllF|W4>Ch0qTQJ++p^;cATw$FcBWvTP^zkN?3 zT%?`km`lf!|B5!;2vmwjl3A%zEl}<1vv&)K>RK%7KlW|i&s@|s*KFy~%V>x^rzMYt zbEO<(X`Xz6D;Z5enm_C@bd5Z-diLjI*3V+B`PNvHWJ}fGxRjYBrx*&@2r!5Yv!f%U z5ZzPw2-peA-R2eOBjr{((6JB*vA&p-VX zmkP#s(P4zB&(lj29Ujir0*Ex16sjklr+f`b56 zZ+CfeGBuHNL&Ku(cKbwt>dZ99dal=^R>DDI z5^O+W!3oK-LyNg-WYD&8+R2oO+V2)NWmrUONK!dlqY5gibo2~L?PqB|h)-{vS4YWG zt@m~*INJ+z$>!RXM=FnDPOG&W9?J!U9w=N=CvL*+<^9e!fEN3cJY24IL2)kD*ECck zT2I2nhCl3B>I#HP8(DR{dO|4&q1@YyYzt%8BH;~cps%s=z5Kjf}oU786(}fr`7y@*V<~hU1ivN=GPP_eAqrD&J6oj z@BKo;t5;8ExNtv`3?(pMNlLvd3XNe`Yb8mhN;n9JH5Ish7CiZSv1w`(!_(sWi?E7z z)Dj)MZ_vz`SennxFLRoyeSd4$e9k{fQ^%ab#(V4;TnZY)Zn^o_m#I}~1hZRpzP(BosPYJ{2XZ6Ju(=TQ zE2d}q;dVuPlPn1({<}P4zAp-*_>0y)rcEpC(F4N-0M2y5Cob}_`G;C###%KD%;HZX zYX&aG`6Ddhdh87I%?RZtUQmIgOSkx+ZtWspnfN@4;0a7F@Th#!d1c8n;3c;}c(H5- z46e*FE5@Ys_BmS$#FD2W_hv*hi~&Z&4D{4w!V7@?Nh&YV=@k+e^*)o>g=se!Fu;2Y zxh@E=KavDPD@xEY8MrQh4=x?rJ^@M->cX)U6xa{@bwH(g)QVjCkmhxXEv1S5n9j)u zcZx^%OzNx16nx9gb?@_uwr?$9PfI4vvnvh{Wl z;w5|7V_`n8iRX@pxpsjrS7kCmU~1r8v!aJ-o#agCkGA(5$9)#?xnsSP-X1TsWpi{k zAkEUsuW8*>wdaz1u-^ybcz)WEv%__KMLod@-*_!L= zM)J5^@tXc=h*_|dn1LyZ928Vz3p~X>?Jx}1mYUzkFOLElp;9`>_54|c539B#_P`z= z2JBwjw-d${H6L@!-jtS%qsG!i5Ll36AFj)gV8mZs2M7n3AXb$XT=LDs8UrDG>|Uf; zj)5)}f1L7YX5{#iNNe61y1h~0^df<7|SA?x8l0(@_a^NSSBx>(KjRS z{O2MCqU)rH{)927WP1bk2iF!?+g67@h%yiALKILQk7n`g(aVx|Mue|bv-!(mc2`~;zHPZ`%nICawcv&q_+(0UhsW><^5e^u1 z_t7h(Srn=mbvx0?_ZgJJXE&nS_hf1`bjEU!)Nw-XS$glJ_3K&}^)O9WO}MVW428r< z`c;ejA$ap(nU@yiJCp(+I+eSn_k2@mk!n_J%uk&UT*v>+q1e`3g_%=k4K%h(&ZIFi z=lQnxHH|UUC9HBv_W{Y07YzjTdVF*>jGXzJzLCuEnl;@1SYU2fn(0L%pkAps*1?dzM%#AD<6Oacs8q4fE04#EaeL)Q9y?hL?>FMbUQdUs zHe_+964x-z7X@E!9JI5bG1w8)86CmhgjJH+X0kK2_~N=Es7v7_mMa_tjbMnjG~^**jF~NOdn>TUlRBO;UF((BlzSmwN9X$8jk@M+DrxN3+PqmVVe)F^@W* zz|3L;6hU=)4ypbfIXA7iW!M3$e`$xY7PQ?nlBYWf%U;$F!AryB09l-`X2>1{2evVc zGqza|;FGFh1Lg3WOMD90rH}?+7e_^qJ;IRGWMm;T$RI~t<&bs(WL*dPeohindLBu>RMB6#>o4YUg< zae<08kpgW}mGHtRb*uEt=C0=f?c2*FEdsGotI0oKS)iWm#}esfO=dR6)n2}2QC{y+ zEyJext61r-k9d8D7QYPd2H^C1a~t=Hn33dNJ;?t>nFSn0cgwB;m4;+XL6E54@{*>w zw@MA5fMAUFg}E1tEI?MU!^z^Me9PU0?FFjHqIGV%y#?262T4%gB ze2DQYs!n)gmS-~A6cvP3dwZTjLYWQ`gd!Jr5m;Qx?`>_X4#5c&qIUL91>wn?vNr8S z90`*q1$2v+k$WwZ;@fN+pdVs%5EjDIz&sI|Oh+yW@SBZS_Af)F7uyENZ6^OGe77z5 zv^DJIAG9rwXtB_J%}4&9K6J=Y_vpxoVP}w+BOpn$=_v>R3731nYT;&S(6m$dPsr$gzzOk54Hxk!_9`nwuIPVfi(6y#QKu1*k|hy$!zWFi5IL#8hX`C ziy#;?COy)z-vSRJ7i|L&|cy=kW2o!OKH%PvA0{>r{GK%F1eBMBMH1 z9rJh5NA}Xlb)mNKFFN^$S3orP?QE*G5WNojW&I$hs@XTSdEMMEcFy>R@CAs>SQHIj z%6QT-{22y*3#~_~a4LK*e^(t_kVf3rEn6dB_@tbT!mG(Xtp1ipLq(q|y$tTiyXQmd z#oZNircTwDQyAEvb)eN$T@}&`jL`z44)a2s);2n<3FiQ?C(^0=LrTfR9{uN_X6E*( zdU~$jatY)nmo^E3Ng`idlxln@>mJ*wO7uC&`t)=!Gu(Yptjh9sOGS?twbYu(_h|47 z-T&fZ%rSHr_z;KdjQ%91L#G!s#B3KzRD298Ow3r>)bhwZ=(FuqQEKw3F2 zHY9yVcUvyfB%01rP@LRh{Zl>nPxOzjG8SAHTWSico^&{!{}A}Rz4mPS zW~!j=+fGHKleZ61fkj?`|LvTv595~tPMLd`2(^$=E|Ssz4Tv%E89UZ`c77DFH=!Vg z$s|e7rz0O)hLIy<)+sYWJm!!pNt8|(!si^ z+%alVj;K$=47w6uZ=}`w*MKk?VyAW$OfdP=27iGbv^fPN&nVE4g(Sy!yfiUpIHisR zqE?p@*rAg+91Y0e3%@;3$YX#j(C$|w30%KvC9%XLi1}ii;XRQFEo>A0BwJ!7XmR~K z(HR2Jlvmzvx;lLW+fPiWf67G7@=Pi2Bm%N8&Qb!7Bd38&SCjPB@{`1Y z;Z)iWc+@kK!zUkjk^8c+BA!o|UT53fCazWBK14yU%d&^Hajsf5no>#;X!5anKjq&5 z<$>eSJ^AbXdXN2Q3hKq=HvelQhwcK+4SB+cx`+hdK!ua8+p26 zwQhAqXAYGIwSLbRvrj0ZPFRBfSRDWWye?+-*zS;}DTDaZ6vuyZa1-t9l~LPD%;?8% z87{9pWi*Ywa$N%{GcOv>xZmRq>wz`qONlhFkZocwP4ZjlQ*Dx&i~P)Fj!dc{!k+9A zu40l;bEY7;)|?e)f8*P^52K|oBtw4w=oU|Otm{UPGE(qSMk@?VijrH+ZBb8MK~f4d z@7M)x#*+k;)sljY!mVwvVi%p`JOuQGs4eqZf-og9z<~!AV{DC#Bn&{77o9&8jL^oj z>MIozokL_f8>#4N7l|JdnVllJFw1xIw=>{h(q3IOe~#(mzr#F+Z8N9uJdIz67*oXf zR}T4LZoH)LRXkX&XD?8rw1Q`G>&KKDwvy6Bo(__AHL5eat{sQ8VSk+#4Qn^% zINxL@Q_@R$!+-O}K1t~shp^vA`8R2iS%~iVixOsBYgC=NC?EQ$`!nOrJEdf-qjF*A zn4SAV>B3XnGT{>WjKp4SqJ=(H@joxK&K{Y-*0&|zzWPUmNnL#4269_l18~c9zukIe zQ5S8iLwcK|K#IMmvt^XlKpUkhpDHP{)V5n#Vq&@{sm)YmG17~$&{|ev82<98e z#>T2C3b)tu7_2XH%^4sMx(^pWzT%6}whlEYMe$49fwi3e+RYG8!niHMOi@9=QJLjC2vmY{eOu1I7~$-a}I>p4$#2^rsvZ zY|qj2It_s)srY%mz{}cckavnI+FG-my^Bdnl(1L#dC;1meyb`DcvMsJ0W5-nsQK~_ zClhj#Bd^4v)YUtVBnOrb{6nzB-U{cNS4Fd?g=aa;Rr;z1!^JT|#k=mlgn>L+f1Mxi z*e^+Xg4vvnImmK+VW#B4zGAk=1OGr6M!~y92EiV>ywsec)2ioi$L5|yf5Nc?ypw|o z<&;w)qJ2Udheg!aLnflpN4o{H34)L;rz!o)eu}kKFJ}>N-=(}KGJqVPUJ5eRmYKl8 z+d>cKMj1S|wXOekewtue}7PH^w)FjuX>TpaY2v&8LhuG z52Z>gtM&jJ{Do1CK%JsZiJ?i$X+}YNSEn&^Y}t68OITlpbHzCPuwnq@;ALq1I`%F1 zgC?jgr60N{ba$hITL~4TUX~MT#jBWqg0zl5GmEa@W3?~)B z1Y8oyJY4ZyK#gsngbMrmlHG-8K1-;x`1i5H;A@X~RhK#6+KG*cVo4zRa|iHZuA#da zgsDcvO`fZQ(F;g=c#n%k{=}q1#>VzY3i0#DIgCmXS+5~wKJNHCWP-DB+}RNsN#_Eu z+EXL1_}(d`t)0IUfUo-OZ1&jHf!RENdmSaKYQAAGtL2E%zk)zMh)`v|h^1R_;DupxVi)VNuIlZXV z`~GuALM=m$=66yzp$I@5;7=@@9_svjXxj83yswm!C_u<=;8ylUm3EF6m8n~)?>IBY z-N$1bd-jb-qjA#4uUFhq0%POaDq6PLv&FA ze^R0k#&VF;(ToC}XYq`jrAG2)xtezRl)q6efFO!n;RvCz?DM1_f7M@S=Y}{S0_olh z+h_4NJONF)ofYf7CE`o8XEuof z2_*dE6c9BiTDDOb7OG~cdDBFQt~ri^J#%R}vEns4TDo21L`14%a*DxNl8L&>cV6RE zo!5ZK^rMR4;}$FBk?dMZqH1d;|FUIDZ1`WxOOHYdix5(}MmM%_mhUN?z>+0ia$)0z z=`xo_@S;sbza7~1jENP&rut5Hva?~5eW>hQLTV?!X34ig48qi9nL!ei9wbQOr=2J2#^jnVgqWF z24snYv9iDg3bY6r6v4A3phv$RpbVL9a)`EZ{J*3Raw zaE6~p*%?aVzl{fr@+I_TPtKvIZ=1|CniH<2A4T9#MRzw~%*6clI1|GYOM9=|r)av6 z(R{GY>`Dxi_8!hteyv1E-PrCqdL24@deu3*tZU8P^gkBu8nytX_jr01#%5QvQ!Y00^=2|2GA|+u8dc@bdEiF95s&5Tm^lOLZ4aJ3wh@a+-hj?0cd6j$-bE zd49F^VaAwBi7lMV8xtmuBD;;NqmIhP)yb5EhpDwqasFiLd;Ija0sbl3)b+)s+bQI; z`aMG%rt+5g6OoD#a=(~0296dhE0bLS(+EHv*(*mMHjU>v+H;7zPWJYQe7#XX2afH> zRCRDq2GZD)NKIW4*_MXm1jOL|zka@g4sutmj&L;nx)Qr^GLXR#SoF?m02R6Z zP!NsM#nAXrwTU#ab{EG7y97~K+1Bh7n(aynTuC!}sxu_RZjM9x=toaF`7a-$|9R}t7Y-KesO3z{OsQS^HQ zRwPT*jrJ&_x5AX#*dAq7&$i3F#$84;k6%xEzU#2SjUj5|H;Ko?gXG@kDJ5v;C2D5t5$!yYssj+17|93pVTkx!idqQoHn@RO+k%RUm>Qj{q*cj4Q zFW>oaRlK)clmQoy;KLG*3b3d70wal}rGuSBd%>GK^nR_7OjmaOFfL!!IQG`tD0U+O z-#Rtr%%7?gJpH;0q=0L+9ErN{?}vT1bG>ZvSMo&+IaXGgJH9BC)VR!f zo1{*%OB>$oZK(&T1>-1Oy*TQz@;*g|{UD?6Gm#qR1(A~2)X*#8b38hRzJ~Yrh~k%{ zk5$C}Op3^c{5W&FgeOvik09|6zLJE@|63(AO46zt83lzub*Ydq=8(uAXn1~+eEzK4 zue;6NL54#f^jlAi*FmAty&QQ(=)CoL-==Jysif}6B5^PJ_*;#7=MLIC_x#iAow`e1 zVhcMO55Y(WZuHbMKQ(utL|TSCw>Z;M`!E>)Ys~=8|9>E0bD7;3v4j^HBBDp>pi_i~ ztfRg8ywjZUTjm#6CGTw~OLKSajnMu1_JuZS`3+MUUs#A9veo&&wIvtprRgu_I8SY^ zaWzoHC5o4e$J~b)?Y7_C{ep-cy5!DEkUPnFcq#y{chQrrwIcv|qPWxD+`t4EwN`C< z5hG0;KN#sw2^MYW+CB8WL;7k0w4m!=`1wKhU4F(O0J7^A;THEl08OemalUp!zp6pJ|#Giy_hKiwB zs?T1VafU&+CPKp0aBzwYhCoTgBbD9u<1+)tNyEtDMQ3p$!HtezHU@#Dz`q81Id1l} zE~9-afLdK_oT+xSv38xkL+f3~!0M|^pt{};?m=VgE=2JBPq87Hg(t|aAVJNo+2R3_ zUf&S{0AKNJoN8Ev0PGCY5rc_~9{q343Qb%9IeT z0PaL7E*=m0=^+M&w>AdnnZ0_j4#OxxV>sB+z#^steT<=VVkafaq>GZpWb0CUTGEDc)4X-jD=w}X}hmPji*$C!cB{LKgv+C_}*n* z`-cngV+k<#LH$z47+E+tj853W9KNo7_uF18!e3-)&i-jju-wX{I$c3H-O)m{T#3-U zCic}Yyp?mERo@I#%`2+IAWG2}QLmx`q{~h>P@?@((*hC-U6vL-rNsMeddtfd&c}t& zpM}l7-%Ue{ZNa*lAa3>giwyh)|6I4UqIX{fk7kT}4iF<)eL{iW0J%OWQ^`wLWHtyar0+pmIQXK3exONYus$j+9c=)X z);}{M1G{{Z2(Co7eX9~KyPuktVP+^*qu|CVR!rT0#83-^JhUK&v;0-4 zwdJlW!E%VAU&t=x>PM{~MR0D4kDE>iuAMcHDb|8V-0jHw$Q)jnQyp`Bb;O_B1V;k6 z54tx9+yK9Oes=u#l*UUodjGIfQ5HybxlA!;kbKAIAwrw}H=Jcwl_k~bQcj;s6r`QU1vaD(B9F?PK1dFg)7Z z+l9}EE?`u&_=K6(Ct-5AeJl3c>Dv<5lQo^&zxs9G--IKQbx1G$A(Pz&e(VS;^Zd_iL)~@Jbz@}OgQ}`zd_qZ~kYpRa zEQr204CTrv$z>M6F;1P2JHbJ-=ZIGpS~&tcyFhdGDt_O2DiWtGTm8mP=Sn4*gWmIK zfZ=Jk=fs#>9l{_Pikm=*_&wD9MbOq|Um^iNUn~mh-^SN`F4=iY@MU}u?mWCo?0wHZ zlCJ||tw&4%EO=BqYAe?xtjtv+xZnRW+<7xJ``#>N_uA$zFX_)F;M*+UDg` z`2bzUte5obyW&SVr@Lk`41@?=TZx8!#Z+=k8O4Jk#5@CqJOo*oQ72vLTv0r=RGf6! zocH|;t05#ir&RJ3**KH%n!7Ab5k!j~Zw-ed<{|}J z(A$8O`JhaZm@uKg=l32KHD?Y;^^*j2 z`_{n2_pWOyt3%wFg|B}$rcvy5s@tHoN=?p8mw9$x?u4 zVc;~lf4?6BmcR+;wh5%UuF+U7HHySztujz~v~A${BY9t1LFrEF4n5Kp_FkGN*w9rH zlC1=ck)Zl2vvzHV5vIUqs0zcY^}(6H04{b=?V z#6csKF<0NDzTc`^za>DUf|ToUKRc5ZT6hiA#y|$W}XA9Y5m6i0(`W?KOa#T`4J=F4lj86VmR)?Zxe@ zd@%vg_QBdhl4VC~)6jFow5p8mABuK@RhxZ)aa=03{-WYb#7nmanS8;nLCK5cLek=! zd7`XMgu2WZ;)$>pjKps)Nw{s4ep-m{S?q-(QzZpzX%f6N>bUck+xzun9?i8+Gp3= zbx5Q?a|j%GJSD8T<$y7xhD1C7I95Np)7`6j=M7=-nIW}ga1@#|F1ZPZRI7O)dElV) zvuKf^AI})Mn8|I{<)67hh2`Z|y&QBkGdldVxrf5pax_n+K>H*I-dI11ZR`yNsSOes zUwo?sl~MBW2K;ze-h=I+?dCztwPsY~EJ?|TZC%f`#1+K(84El#3 zw4WH+evIv>@CHR=idR}%8g*wghEJ%v9Wf!EH^QTW*sunr2GR~FG>?h(vi+q-xF=Uj zk23`i7w~H(Ayk=dX**j{i5yZ4@Ebbnf{P-wZ+kXTZ05T34y=(3+&Yz57EzvLK0W>I zu1mpDrSI(^{Ga|AJ((@g6z__*n+I4#f}TPevR@?E`X3fbQimj9=E*q9;rTucNf$pR zJF2Gg$#_L9s3AOCwPOdlVPRXxKWJaCmbgBTKh(KPl(i%-Po*F53TTWFs70Pa+vp4c z064nvF$F|bccK{7%lin}zzfLD0A&pM(U_oFwKa`KuEP%1XCgC#bp@sG0{GU`d#&|( zbokWd?FMRZ$FU_14Z{5yEHJ)AsV&P7FZFMHsdz#dh!nF<;HyW5#BZHWs_cC{6$Ogi zZ1e)RwEK|fw=D5Q%F~3qSHGx+OAGxu%l;+MR1jHU_#6(+EJ-oL=@h&s+>HLy8w@rX zBFOb*vU(GfOV{5L7&niY63mh=pl$%S)v5J`So0GV{bF}$KXh(R|ypMkR&}xcf6Yk{cEygv_F{21(u4u80uR*#6LLpIL1r;_ZRW( zPiL*~X~*P%w0ZE|MU{ZnTj8LVXmYei^tCA-`VPE(Gkt z%0PpPXj~!pL^8T$f@nhoqC6mpa+j4 z+=@TbzTa}V>mtDJKC3SW1ErzW4^~t6&%|qzCR)3Ms}=DtKzRtGHSQp33x6FWq4lH4 zXXz3A@0idsqa()rl2RzMI z7c3tkfSMf}flKD?^x3wHh2u*VhX|qkoJ9X756LNRlb5PpOm0SyjomOlWzPomjHA&w z-T?9t-})a3q1E{gD{k{R%dKk(F<8zRtcpvjkE{xk#XFA5w%&bB7>pU1xi>1)Suy0@Cewsac>1=@KKBxLyJ7NWzwVQ4&9J zgQ?2oG}GKnJL8R~9vfD!yg#6gdXt-geazh@6Ih+VrTzd{)xr+srSnb|e@ z-Av1n>taU_2lgs#poP1WH74%b?D|nlsxZRAUB!)Hh#wE__UG(2C^VIdXA<(&DNd+i z|HySUEC9J!9$kxZX6{^s%-F-vSgqxIa`Z=SP^J&k8c(BrgLKwjgen{h<=G2aMf!je z%m-=sXI-uZ8Sb;*Ez$*KqL;!8T#r~x>_}@&xkZE!OnxNP9CXm|)C>vg;U7?%Xgu{W z&vfFz17$ZiAQLfuz8{%+P>}3)Fa^&->Un5TnlcYTFTf4OKM=p#!T;6E=E#$7Psk^v zLg3Q=RSrcL)F;_x2(J*3u|;o9mwg>pB$4s=Sz2}a^Hc*iI817Ugt2@nEMCL)GIP0wh&lZ*IA=-Uaf>3Y!8PCyjy`xN#k!Ae=Hyk6{(VCsrP zE8OqtV?@0S$dBHbVKnlIyggwapWdT}g}yU&`os|*hCtIPGxME>tjjJDhF3{7{E{=efmBd76@BUpe+|k*HIX>{BqFv12@k;1+qh{F=)>6i}^(% zXw__FyGUv#Uiq^i##QmbL(LAD?Jc`|l?$C7Dc-n+^(Xs21OUB&hJ#U>lA?)Of??=x zYe;zl{3aEot~l=p@HD^00fn0;T)-~tb`HGR1)UgiW{OL$x#N9DbMAgjQsYx0P(Je= z;k4&>)iUZ0{s>$f3~d|X^uRA=gjHMZi;wj?CJS1DNRmpzl13DRHGIa_T$Rrkq*mzS?#}Vtv7%WZrYZiXL;Ca6+&9sL znFD9wrwTLu@FG_5s7p}9(_V1tr#|%U)`EbpdCqkT2y-#BhQRqe;b@^%z#LQWBe&@x zWu32=^M&|%L@4aM7D|<*ZxNKo5@PnV@*L3an~H=Kb@Q{1Tm4Pj+Dr8^hORM$Dk+yZX&N z&d8=fmNn%mbO!hcQ8Mq|JO8s4!RUY6u1Ak(L6Nw~Wf8mWK$_|X2lHG#QIcC!0*>lq z=C#2J9$Fnheq!HfG+z`NK~phQvkw*LX+8W?+|72NO8_JB?IXtdh3PmmF_p{XvKVVK zxhZIheT;-Rz=Yoq7WEI<>mhWgzjlw*M&tUm*c1nZsHAHaa8eRY%m@Wn#3u4Ar)Z0m zazB_fWe|nEI^fbwHpTpOM`EnAt&ti)_7vWymMI4nhv>HS;hH){o(kw;%Ubto?9 za{C_8Lmf-IbF%Dd0`)IR+lR%#VwBQ1$d4D~ry=66LF7w65u_pGnn^38(HED&*uHO* zWIhG_-)=jQ;Vdj!Sf0U26`b0&i47p78=~eYr(rwRUvdU#OmK{-^QynY@8t_)GleF2 z#lx1Kyj$$Ypr<`9oP3_p?;lDPch<_DtSB9IV!|R*TRVkkY7{}o-|#*D+>MB-==&oi1>Zq&sM$p zW|5o6qjz8I7e*DwbQ>v?ys#J#F=K`b^_sO|Ey|3@k}N$e<*l7?<0PrrlbTH=m{~^Z zSClGJ0W(bES#HK@B#=lTkpF*Fsv)!p7A$nd;8D;j#561hWwnZ;;$}5Vh@^6edBM`9 z=SfbsozqhskSoMv!RrFo1P>b-z^Z=2PmrF#YZ8gEl9^Icp)Y22c$FTZDeoE=)LYBP zxz1EvqwK<2QLEy}v8f5VP*Cmz+vAMyM*s)7>zI_E+op)rRAN<)?RwHb6JQ;k^578i zHcqCfKWjr_0PcH-*$#Dxo1*}hL9A$AJIB9G+l{6}0$v~;*_y(MFke?-%_N zv~mr`G4T<-ARea})o5m*ulVV$0ssI4n;xG~G87i)dRk~B9i}TNstpD+f3}Dt zKj_Fh*LR=6HPmv|50WXmSt{Es94K>5i#E+0T5@-RfkCrv4}MZXVqCkz2iR~!+z5u{ zW*>sa@x=6z%#*2BV*+|`MS_STyp!6|oO?{58DXsmUJ8d=kxW6Gj-I`JgU3*HL)b@JP2F`}MqR+34;E2?C@=QVMZs0srv_(_w>-+kpC&FEbJFwe4 z${E?1u2;l7N|K;@{E&R*yP`)eh(}@?L}Jut;uMJHAiyzf=4m}JNr7ev(cmNi2v8ac zK}}<3w&k=F|C;hOOtor@2atSrLZ7}ZwMNipB;f)}VDA7h=(rm`pZQ#R@FjwPm*K4@ z^3y6S=IalPuFaTi*M@%ooc;|LB8#B6`2Pe`gOv;JV!1TJ@B^4oS{*9I188NWR`08z z1Ay5lgmbXJ3#PvQW{sm5mF768%dXx{lmGw#0Qf@r857B6wFo?FlViJbYH(Fwur~ze z&li^~Rv}$;l3@BB^ggF%_dVx_50~A*cd`#c)gw_d4Sr?TB;jTi>*MKsI0}I)>lUR+ z#C-7~`UY-HU{R7#1tuwCJukv=oJKLsLo7H%114YYI(uc$3R%MiEb3!^*MlJ9`y7U_ zIj^4};UFJ&Kp8fJZT%klL64Z;qaeJ(iFVN$kKnDVyL3bB@bn>c4N>aEr0MTy4+6X_b9PLEZT6DPC(nzV zfL;d5?ErK}u{BaPCd83OcUQAmH2#vdTK8L>9n(h8YbG{BaRvPsUw``Eq^Wh{`BC{w zvWd*=4mSUg;CM=xwc>T)CRrutbe^OOzPzCf_zl#?yr`o6r|%zWX{B-uAzP0mO^5OP#YfE%BMLqXQE^>fXR~Ez!22*K(KjZY)00y1Tiy>!T{n^IfG!1?E z)9Ug0#s4PMI__3f&b4E&!2sSPrXA85k(p1pr2QL#M91u5mFu5SAhs2FB5{XvkbG_uYCH?oG9)589)BAko&JI|66h*vp<( z_oymZ+?qc_qbJq!;mgq~x4>AH@8jN~=V{ThFK^@-ngZKs|9C{WY#XZmVkr|dG^&6n z?hHAA)TB4c*zu^s^GNK?TaPv9v-u(59eLpmcU+)q1ws4pYz^rVPYgtIIjlkOPl6hv zS?+fE%!lqAM-&u^n*Io(a6Bz?=YsYuoWs(@eN0{+UCbJR;Q*(+5EwA6Qz@^j=56sG z_)Ai+S*|FzAox$wkO`|FR`^H_=`I|kOqi7u!REQN8&|yS499Yhzv!f^UIE3WQwR1*rN7MS|#& z%qtSfRvJhBtNYu;k}CzqQ&JS)qj~Hss#={8t>oXeK1bIAmp=1ZWvrthWc>BavZd^+ zc8m^fcKM*NJHc+0)Q2$d?(|$y z-y*=yqgcZvfxw>QLts0e=GT9%4Dcyk)!o^Z1i&$$J<|H_tMb~5&_>;#gy-gB$}0&AKxvHA zA(*e{#iioc-F9r<{wwKr)=6x2nZ0}vir9}@ZZu_3_RAxTs#KQSZ z$6`;a+R1@@(NfZy*IgF!sTHLGB4Ge-3M$&yj#W+TJ2`&o=5CS7n6J8#2hjaiEDq!B z8B`Hh!csw;@3D8@%!E8n#9zw~etrrc7i|$aJPuYL)2`T$e zw-6p(<@`(#h<(V83cCZ<7^l(Xca@o7Q##Q~M{uc=ykOfB5FO2`9R@ejaV zxGryae&X{74y`ks3(trK1=9Yp&NEmZ-Pe((g#8ttgxdsEY~FSywqFpCi2LVv z%s_d+Z-8AB=JG*LiH#&s z-$8SA1{Fm)q3^F;VWDA93kD=*+=2zfP!_WLA#*|p^X}QwiXqX-eVBm`LIL~SHvX}c zkx$jI{| zqhMi*3chqNxsl)kd!6IJKY*|jkWd_zgOYIVk7uD2cic^{s$nIW zvo0hUD;!=RwH^;_?WJBYeXhZk6z%*$ve$RU%&29`x_7Hyyf|yha&RTJvS4HQVp+!i zL?=|L{03VMJaRuA)N5Xk%r_4ZdX2}ax0C3I=P_BO6COxI1XGs8VO6`C8z&O}t?O#o zN(?@EMHA@uU9U*B3R#y%;3WCTKM*VYFTk2yh zMZoL&-hn7Uf$8(zamA zn>Gvg%|rss+n{E0l_xG!&J4i(Uyx9)cg$$ebqwIAt1z*kBFPN_0{gPu z;Nk@FISdQc69PKfKM{r&`)DGaZ(fNK0u?eNamCuV-t>a&q$d`ChdkX{KHu?O4E3n@ z?S)QDM}~uUXO_gP2o_XYgbkOINs-u7P;EUayD;iJ4Zwqg*6uYi3+#p}Sb5iYzEWy; zcbip&@J;Z7Eh4@9armOP^uN}eWgg9W1+)Tl(82J?Fbm z#r4aHDWX;H@isO`Jl(AeA?^zj@NPfepdJq-Fx#g&dya{uz%Xy?Pq|Fy^QBB;&m}_K zeKgP$ER}#~S6s?4`_;A2LpH-tU16%&)Ud8juJ5{=*_yd0wrKqtO_}h$#(LWCRK$au zHJS4R%7^F_mQ*zL)2@)Y=mn^ZYY0I!Fw+6W-bIYGM)LBES(|E@k4yh= z*jLs@=2vxCBT zT23c2Q4J z+r+_SJ3j&_cP~h+0^#Z(j(KYu%TYYvtX%2e5VdmcNK8I-RleI+M6|g?zm{~%m3q`! zgulI_y`j~B3oxp;%MZ1SyF0IcOgL+!rXA0r3;>#303_VM*RSMYF&vF_lhdQomq>B` z|Le+djCQ~gJiT4iR+f{16MrDNfn6N|Wjxab5WFk|1poSn+0p&u0#nZkj%oG|OUfM)3lHYkfdE(^R>JDKrcX}$ zR~kfTkg+ZaK!!Jb&XcG2c(&mlLi57CYt;AgItMW71NJ&O!Us{)$oB)p|Ij~+$ox7Z z$jmIU!7iw%EN{l(v0L;emLxfIKW7vLf6RkTp37js7p%i@G+f9>syVv#eHM6D zB-<>lWLp1Lc#%(czi$KXJ;{ZlPQLmu+ow5uj)|J@w82`7VO^UtzX9>Pg@r>%=gHi^ z1GcjJ!FWnj^+~S$9a-ot$QFP$sL8)zYI79SXm!M? z;h0itSQYXpv959|l^Fj+n-Rlfe!$e5)IuQ$(6Im}z~Pq}?&j1|97}a5SKHm7nbR|E zjvn2CqSlrO*je6c-?~Z&-h=y!zB$@(pS=yL*PbP-au@K=%XB|suw96TTHEBK#OOEt z0h*aJkwYrx%mLyhqGIn;orhVDj7Fq63(6d!V|l0$&IUe)|0WhhEnBqiXCvgywb<0) zFy>ktX_jN99#U-sx(C$)MWPwEdyum>Dyd4aau@$@Scl}(P&w)Ic{RACmcO9~=NJb@ zJFjFB<%g6yU8!zMN?f4tos)Qw^N{!B5#tir`WpisOu{B5f>pQ61c^T4?Ozw}Xla}! zbaU3x;!n|#wF>xT&1p_*c#gEvZJK8db4DF?3hG*B+ltMImgU~uM3`Y3X2E%TG>Tm0 z0;iv15rX`*S#|N|#V;e_rB>>(JE7R9u~UJ&XT5H%TlhcD670`$O^MP5Xq2T2$9c+x znKbF^v+|gI9GqWE^!4{-*4KxI*@Qu z6O_M{?{0I`TeG@c_VGu6#y6Cn=Irn%!DL;KlE1x^$h|S-LpsYJ&NgXEjh!pZ6f?J@ zdu*KV4sfBIVXOvav`_VY@Ca?M0o}?$Zv_eQ!Hc3&M&Vww$NQWduzWAfVgn8yM=Y`q z6fR9P+R1cxW@SmLU(3!LYUjy51>_lb*PIc^Pv!qS@mRphla}7~^8ITLC3n>E>|md$ zB1NiU+GM4sbI$o{``_RxmYyePeiDw6@`pD#luC7MQ`WNR1OVHul+pS40K0D0uK+IG zGRbrDCvywi>{=1J24S{e(Hc1m|KU=*QU1*_9;!A2{v~V_`D^+ResO?wW4iW19$KJP z3F6?kekGm(!ciMf)A7C4stjIR>NOjj1Ssf|0yAXi_{~N<%@kee78*aBqcZ>Rr!qx_I*| zMu}{Us?I$RQWCo?Jb|!XA0iF4WUG(n-Dg3L(%V!gNnK~@L3WZFHw)o%JI7{fj-`Hd`+gd)Ns9ql}aFmkfw044^Rs8~CkF>B-yYe|fhF7V! z4^3sPLN2dBoZzQC9g9kLW}jrv9v;1)0>lCp(P(#j(qw1KlkS-g9yYL8vWPW-V% z`=?_f#ysy-#{k(gSr#@S5@&;tx-Pk1Rw}EDVH}+-&)*>>g}~9|YL*1$X;Dmy&N9Uh zgGAXGl6<35z&xCda`^*+sEfIz$1*2GP+h|`1wh)-vrQR#2MI~g;8L731(@ti?yZ!P zMS%TBr;jJbZ#x){upoG2vrGG4Q^R7!Zm7Byy!QO@gxinJew6u8;#%I7Q3FlR!2af**04rlTjvv@xpT; zkLiaK4BG~No%JO4yN4?WiM8y?Y{b8JyTEeree>GMO+A)tdF>giqn(82rCq(cGN?qO zY5C8nO5&~=)I3E(%LBM(`pTx(xd{~E66(jcKJ!X_Zg=seM1+@k zavPJuvx!6I&{DK*Uj{x>_D>`5~QNuZKb>Ca)fWfjforf0MzNc=(GpB+hdC5kw3+uX3r$|Q7w{N?vk*- z?p%$2UpYC$;?2f(V1*Y0^(ksy?){F$WWUY3Aeqb1>g5@|^teu~H)R-7`sRfKpuh%8 zbiR%AKIU{l2A(5ymX69~pkmB8BXpHSbfThR-H_uUln74yc!e7jDy)FA zV|FMD+(}6fLQ`-7wG9zi=p6h<<0x*7UeyW<1nNb8@2 zUt`=d^B-kU7Lg?%yl_nKpg_H-+vd{yzcg`ySK4&wmF}ePArgBL2lX3Z4A{!8JA*iD z(F;fk^W@#gUv`{K7y(11djUZCC6`1eWNo7!xWgvYrhV<9$uywWa z9v7wF-KT73J9V>$%rgkt7lQTg-k)jto_*(Xs;U1P5 zkxN)5aPrnV8={yF8tvuoB@U5zB<6-9$k6FBe(UFHuYt}n`*6JRLY?KgYZ7#h2*jeI z%a%x0S|FefLdEKF7k>zL5`V*Ypm&&*NweHOtewJ?QL}!;N5?D!9B>4sqwP=*9 z9;bAfm#v@@TDhoFtCV`bETSuh2E~1};MRDW2ksw9bg4oO{Knr76uF86zErx5C9K65 z@D;2pg%AlIs?*RU&<+r0=CSTs~>$427xpv!-Rpc&(3HvMPq&?^1HBjZhd zfkAn1wEgsmRR;}^+#ldXN9T zXQ#1E80S=)O_ym5@FKLsV3?e|>6xuIF6w7OL}!t7D^nRZm)TGeyeZdL69>5I!{CC- zwcO95fX>b(qLlWX0MQ38@bsa9pnuW+D4poILG;OAj^0sttPt@hL-GBM(lM`9m`z>W zv&6Yq;PHhBwN{gzlP_Y@z4ByCz59^ST`job^HS;(zQcWd&D%Av%1V+$y)Z25OWs=x z{8o}vY-6;)o8{p};X3S{V7fHcGWy((nLSH2FWPz|QM*#bPpMT=;;QZm8rfWl8BWB_ zOCXJ~x_XI0&wX#yg9<_?Y~1u8*k^}CX6dFH#KQ<=ihA69@jYp`svS4yoaT#(Ltiy1 z!RX=@k^Fu(Tk(9_lS`=Dh@YC3jg#s2hu5ytwTJ1ZMIKVsihpI%{HnNe|8hqDiG+|E zZtZt|Ny}k{A5Ns!C-Wjbkokv8l4suQtgv_tC5G%o$23t}lLbbQx;joB+5X~r`mM&Y zi<)`blBfE|nn<831QUHpW8|U;X6{agLcye`LO8s$Lxl7$6*PQBqB{qWDNAZRCg62OTG!pLwYw^ zcMJUk*D}kpNf#~NO&yw%W$tOXmmPwow~)M@CM8JaK-&*T0G_04jdE#`42E!EZdcbY zM3Rcq(xQQm+L}fr-+m2L2VOyxVC<<^Is>jzIDw>BV=d0+QJr6VAc2~vX_HKLWfXw(XVDR zZmz(QKkou&P(Mq_ywsS|EY&0#mXnNVC){Rc|pX%0jkW7UVyjl+;>eBHi zb&FE=QH~Zmuvn8u`e}D4C~cTlEy@u~k@icR*>su5s`EYaLvSLLNg9|xfzMX^uhd43 zrZRH2zQjfNQ}?ZgRjt~WN#{Oqr1Ysq^c(WmbN`7W;EEi)8{=+ftcj_^U9(+i7f2Vt>Fc7u}^ z97Y@Y2QXT<1$qNc=%>p*MQt><_@!V~zcR$DqHUhrAXlF1G+pg&u=DvHu(z3Ct;=t1 zUvQuElt8g|@dzK3VfQuej?AbVNcD zWb-0$1+04rzTPdtV7>tWDMwpwxe-0OLm^ZrHN|4l%m*Q;*HabMCJTaThMOhJ+3B4* zuwN0&q#w;8u9dHo^-eQ&*6zMf6a4i^L~Mmrlez;oo_I!4_`csw9;8!M+Bb$JI zewk1XOV9|0A$0$QDcn#y=!N_acvrwn2Z#}Dt12z90X3EldcP^9a+op|kAU`X~03y;0qfJ71;>(j?UBU>Mw5X^$%a6y3F)Qy18!zWcU8s4WzB zq1X1_I}Cuh+hATTizUmk?x4yhK=5a!S@c=Il3Iy12opynFat{St-*S~kui>e9jCHJ zjm!`ix)CRMTQQHwO~=7!wfO5S7e)FHMytbchY_y4-6F_-2ICB4baXYBu4i_}L+0UW(vTtL} zl0MTQi&&NbVrO8@wZpVw3;(42+YtnZnq7&ImqhtU$$ARGar_Mf1Ju&G9n0V2=|2S& zx0au+^GddO8^$hKdwRf93j9Z?&R99O>)ED^VFjbmeaBv9;xD=ej3#{z@-I7y3uXE> zg`6S4)d^5fei#ZvtFUDnIscf~mNcD!L3Z)HRm?;6{BdhvmQ^opN*Va|AZru*35)f} z4V%cMvPWXn*cwn#gh`LpcU%xCSv+w}!)-}*z<*t^ZKXk1$%RzZcLR=}GYY!VGynj_ zN>$BjOo~zQ+j?APB+k5wfSv6;j`Y(D!bS{<9C?n=DM4DgC3u_+j+PNN_Bx;{RTWE@A$(NY9~yX1L>K0Um5E-9XF`E=`dHSh9g1gq~&{$x)y}Qyn{RI7SVX%P7K9$AEF^vk(A|XX z`-mnbf?=@TpQ3aVlKgKWyV$5g$PxJm?~7Mi|MEtUuPq#7=X?~Os9|g6dFLoQDXD@Q zuur!hNB_joT610o?>M0GF@&e7)*Hr4>NKKGc=ZO1WtWxY z!O^;w`yf>t+EOs%3}+>7$kB6NtLd~Aj!hz@PWZY$JPU|sEf+_WNK3j=-ygw8+@8@0 z^l#}yW_&UHhdL`VW29o*0}mJpc*|JthxCdzm0D0)XBKbx z`TdDbE+gsH1;`Jx8G**&Z_V*prc%M4J}53+;^KF&HjZ3Kao1*>p@7|Z7 zJ}_)mYe?Fc=?LoB0#fYp!=i@#wF0LQH9TO?rNWB$=iCH&#ie5Qc*Y-J4TSo_%W2qe zutz9G< zB?@9LA16}$3PVT)fo5r#FoVGuoadu=n0(O6=;S)jP};sd$O@_5`SeJKbf^Q8uD&pA zbWfvjom7PFg_uETApAY+(!rn5r8nUB2#s(q5o@!;1!TryuBIZp&+ojTKmk~_f_3}0 zLOP4-)U*ZCG|;SGGEKVOcOV$6=uLj2C$x=h%_cu@`EC05QzCEjMg~J{@;dkaUhds*dBHC$C)M^Zv^B3_T71m3)F7fsH6x^{V|_st zFUT))rwF*^&$xl1A)Ov&A0v+0+lW`<8jt_zqY0EXGkRlbobgwEG$I@QdQ`rpR{^^7WBy88xNByP8^r3zX~$|KkIl zAr^2qwwp#Fn6=IA|H{Ust_zn#ew4@++$RG8$K;Wnffi#2dE#<{ba{d2Y+hUwC@-p6 zixkk{%ql;r6Hg7QQ)*5tJ$jZ$noz0weB1mRj6*OA>;QB--ymDA!g5sJmy;^SLQOI< z)lL@&Pkw7VvcdJXz>6;RVzJX&RsI*0y;X!t&_V2?29bk zs>DG5Y~ujXg-s<;NAT5oTd<@bM%_k6C>?0Gw)a3`qkGkM>TAX&hu~MANivEQ@w4~M zL8_Ip4y@OpzZvHmLa1n474S}Xi$Bf);2Cxzeb~lzs!P_uTsQnsQx6|YO7$E2s|FY( z8VIvc;F7y))fYqPQ!fP`E%X;{w=n7}F-Zd@P`NGf;&XU=BPIUvRd;O~Tb>|3eauPP zjJ&}x2~0nQ1~DU|8-;#Z{cQ~#wgPHszIA~i;EYal(Ywq(XrtvAaZ&l>?`I%Ol_9fY zS2xkCP3Cv*W6_91_p585CT*d^Ev2NT11a1K9Qdc6q2D7{?rP5%V(vsmQ{7?z@_WHI z@Sp3qnmukfA+&AW*sCqFSkw=K)30@*!pYgjg@`PTb^h>QJV27#qOH;w zfaevHp%VjKIx!oQ^X;b6(=BpHzwe>&6)?T&A)DtZHH5`M5!Dd;a#uNefpD zPPRDuMuyrKC8pX+o;~K;JNG@q^PAq1w9tQp6)B6(l})3Zn?NU zAXP9E@Xa?rYC%L}9W7P%<|ezEdT zOFaA66&$2DfVVJlE5d!Y`8*S0QQwDOFi<>-HQLF_#SO ze9&GPrBT9inp3F$QGPh(&Q^8zD>m4yml>NL!fPM1lwAj?3WQRPRc>3oTZL?w9RiI9 zU=rhBKGLx9<4?<`hVFXA8}s9|yJ}-oxq*3CxTv$GY_eK6j|jz9o{y#NY6^)|D#J3K z6=q_5R6`*S=5A^8&Sl+EC$ZN44BQxIcCxJot_^M13aD;(BC|IWl`2fX zO`=hlMRo^$bCK!Lu!XI0a>8SwxK8;~rNB7iUf zF9(=+hc9>-=wud!ss~x4k6860(dOQSv;@o82IGVmAb5b?GQ;;8p`6w~<3a3a?tx|X zm)5ZX({rsmpM$+3W%Uj>h(>@j9X<@n_oBp%4Ic{1BVZivmYgPZDQ0M$(5Br#3IuM| zV-jViCTZ7j$$QGv$gM2lTzkF|{*3=OM#V*3aRb}yP`8~%t?s1}Ubk=$Jokb5$=B2} zlj^BtU(`!?nt`8&QQG@Q!qiE`ZkrQmDP0S9_}IZo>@QcE&i)QDI4 zg7W1uzk_}{uWG8I&@mk{mqH;A>6O15Sk7RTu58P_##=qjSVAiUB2$wr6Dd$Pg0E;M z%@>BSwzFPXD11BpidZlGnS%+bSEu;Pxfj%%yrV(#b7tq1kx6l5V`5DCR=yp&NxnrXF|X* z{rf5+n1JCPmAzaRAG6nH-#%6jzwFkw6`=I;tG?w~*Sgp|RTzjuvH$Ul|*|KBJ8tnvHQbT{=E2MZ=qt zVRLN|1YGe21nd?S0`wJ#27S<0pGeT8Y?QqDc2(Up*OBsBlAhFXKQPO?)ZBSkzj1=Y zk~ovu6ci!1d@&f&EP@}cFt&+L>0i4J_gc$lDlb}4x4`IR%hWWc-?7_^^N)FnFjrx* z<@luc>OX!snIAWLk1M%Y$Rj(am%(XU)yxudkv{VaklK2$lWAQw_=4bRc!(LSi?Ohz zD~(w}rJE&Jd^DnSO$^J84%l_0T=s>UL*-Kv!_Wy{EFrF(K2XU@9Y}as`W0Yy$d5Ar z!_4traK#JKAmm5n)NVjJSyp3NIJz~0G5vZq5Ndf=t)`kKCtof<*0Zu@PUb&YOF$mx z=VP;`jN-oc*Nz!8RiLEo7DA!G0&$8F+{CDN-~^j)a9KMoP3oLF^&VrX06t4)-jgAI z$9s$EnpB%Mh!r*`UBis5lX@rtZ%qBM6#*CDx-N@Xet#qn^uh`<1o4>mD2T72F-R#s z1Ts`wnr_LT-MK5GeKgG3d)OjrFqa+2Xv*kg5bi|Jz`Ra-{}_eA8^i8q!?rp4xc)R5 zV#Niv>^^@stn%ZvK`c5hRk0r}+LnHY%4B8jW7E)RK6Y>;Px+`Xo2ohRWJ;WiwetL@ zJ!Bu2bS@f726MT0oW%Uob(TIUM*ll%F%0(N`qEp!1Z|iXN#KXXJQH z#XsW>|H4%Fq9pQ=p5C{}f$HG^M&M*43As$&n5sz!SW4(|Ss?U7CDsfmwM{}dT6%2)pJRTZ|eQae~NPQBaAR%xXLURbXudf%SvB5)LYvqC*kpH zsERF!j_${|0u?D%we`bTPYv%T`X1&uAN1yZRM<&=@p*@MBOHOF-uxOU2!tHO{%3EB zyOf;-Ml7wax2r@BT=yt3eU>H1ZByK|FpVv*manO5k#V-vD9pycOdNa_B>E9o98L-5 zSA7$WJ8}zw1MK~d+9+B5X8cH{sozK+LoiQqI7Ux(*2zPpw~gG_KHzn5 zCl+u!unNeX#>6MgZi+&3p`r7w{UgUyXrLxQg@Z6DqEJc@Ewg`_jJbw^iiC%(7M8)S z^|x6oIAJ9t=?_TRVZoaUK`{7E*O_yV?OZqCj1^kmvd41(IQrnb^HkC*n_BSI%GC7uCJZ2;AS(;%?6yIWfe?sdw5oFQ(p<_wiK1 zlo+6w{(e#GwS&4uBja6=4@H%#L2(`87lqQ;VZLtHK{?+pid(U%Bo`C}zNg(Mrn`sai zO9tQKM3!32;1SXmURgd}*;Xf#?>-fZ#ix-9HmJa#@& zQp<(%49}edvG$|E62}Fv)}QD=?U5VrEMj6H^`}EMmN)&_0_6}*=)@S8h9m@zIZ}yIWIG)SoTx^;DOkR$ z^F5pj+jPplGbbED#yQ7n3MXwgUp*zV;n(#Q-$3)VGg{uyC{f?qo1ZCSOGD5F=cqJo z?rP5@$mis?EbbxrD>|WEPBwC7I)CWWF#8pvK3L(p6tl?MIPK21<9Y zNxU_W0Gdp~fHB`L0`fXktsPA*)VF&_Q(HK~Jn7JEmsQ|h*C_xiVwkX@&oGt4ikzdh zE9+%5tF^ai;|i=^01qlh^P>Xhc#kM8UjI7hgcu!qMFqWs-@^=RwmFP~`A{dugm2N# zCVoZKW|$2I9cb~2y|6^rOq%*H#|{pwsaka4?8T*;|DIj1WQ3DwJ^DC&`uXBS3ZbH< zYY-RqjEI81IH+aLI>c*0HV~OaJB--#y^Hu|02YoI*h7^R+GS?iYiq;5!&dfJogh~o zWU8c2%HB2Dt$s^D1kn~ef}kzF0Q~W>ee=2gR}}fuvgn{u4?xs26ON$0!FMSiTt^{) z);?tRC@S_RPaUqxR-rsB}}#8fkb{YY=)U2-p*AM7k!QjFs65oh$L$fTK4 zI4`j=fck7fAK)1<^=!TdcQbn3W?MYUOsCdGX#iwEo4?_TqQqKlo{0+7y|{eoxk;2s@G_zTl)0T)#f`q z+TA)WWK=3FK#8&E&_TlS=54?lJ`wF!4s7yaCg#-t3TPKGgy_`5Ojlokg4IQ|ARtGv zlG<%?%6;PuVmG&MbjRMDdPn93%fPf|xh34|j3d4bf>1)l_ZH16X+Yqctd1Pc&;SQJ z4e)g}dn7?^*R(RO$oz)d9ylfsf=A__Tom)JbKQz+j~wh2jyWhG164m&TVqQ>SiGCaGbyoWd?hin|fX4M^Q=15_1t& zW(shNzw4=Z2l#9C?7hlQ@C9(-@KfCAqpET$mnrdz$twBFY+qWpbX%ACh*-?Y8H z0)Ws;3TqoRw=JNb{MV7HWvf(JJcHx16#emSsy2f$CkPT-2Yv6vba?gffHcsQ#yUp? zNeQJ9;~bm6Isdvqzzi-jKfoT90KXj}3Mwn7`a;mbJJY)-b#QsoO|Jli=^{mFSHbzI zm}X!8!iB$37V+_LC2T~c002U)MS6}ZQwtyQ*F}=ZbBFF?;3%N-f-+QpO!v}7s|O*W@NtTNur>BaaYFy-^DMLxV)!&+ z_m8}N0{TqHBpo0&vPfg?0{zbwPJ?9;XHpSV+z z?>5j9L2Hv>C3NH*2grNM6#)%lZE$Cjq+Day(==S~)3Nf~yKdW-?ah5VA1%ACa%>pq z$A1ZA+q8K$40V^z7C-<10+xl$B4ikWwRY{DD85KFi|(xlv%pldf)PbI}_lrk{ zFa9OEXS{k{^h@SUrvA@=y9@IaaBaA~POPF?_enX)ty^L3Pmms&xd-xuegp}lgXqr% zC+PnQ^ki1j`ol(rx*J&`&2Nd>BBEpx3tAo0yMmjBY(O?XfG{WibYU@uzWd|OnA)Y} z-D)q$d%$0Aps327b5c1A@hL?jxztF*}>By3(cEV3i@ z59+fDeHDxB6S=Rl#=0AzPy}S zVI47x!^4UJ+M+^oVdcExxjM-iU+^w(c$+4L@# z-C@ER4Y=L?#k+t#g4A^OQy^Yg`n(|${&Ptxu9U4Ju$_T)ANz=Kzx4= z3?N2Vg-zxp#zIp7?lDZdPEQH2q5jfQmrnz&9eF&-CFop}he@naq3{O7@J=j+Eix>Q zIPin%IQfR3A+wwDJ%N2k^SzqBU^d04*mS%T(17NVN;0bnzs4eyJ$;zfW)L7MpHv!7 zy?H7TbN+^v{9@6*OfAK)vtAUH*D8PTF~sM+{qK`aL!KjhhOl%Z}XoAo&@ z{E1T~`^x@fp0FLgr(oFyZm&RxZG=2{NtX8~af;yhz3;`KiS!&bw#!ix1kQgI(WO&a ziWLC0Z`kac)W&rQ38m&wBuG>Yh=zHAeL@RKD%)Q->|ptUyrM#3>w8OuPibN^CWL<_ z9Aa1lNZJKDG$m3daxi<2LENFjsN!EJT4C1TwW{Qmks#HSi_vg_M$!oja#YVoRC**^opE?#yAI%l!%@~*Oz67xI^{-{3osPt_@jM&Uo!C*aw`x?!EtG25kAc#J$9jp|)3?#_vDaKwkF zp1n~eGw@gk4_f-7{QK!o>^gs=50N{|IN3v2;sqQaoSl3fo@FUZ`+Vn|Ae=fa9#QaT z=GeefC~AWvgy2G%$dHQj7e<44JkYH1E<8CFq) z!*zgbw?ZLOFb-Q)4mqcEd}qlcR-YMsDr^L&mPNt_xx>#a9)A+$3=-52%3gtOMddg9 z$=u$4ZNU=zieC>$`sE;H^C4L@PeAF*(tEVXyq4Wel6gv8Ek?si*V9claAo)e|Abkk z-~T}!gr?imrzz)-#oX6&pb9cK=q+OSV%7a*64W~6-IY6aIN34|HVG5*x>@v$cvsFl zaw?Jna9iM@jhSBnK3K0F2FPJBk~-_>zfLIr!V7yi!cXo)@CFpI7Q|AZGS7vTy)#Cw zyd8nOI6>ZK|LXN>WV3~*Sl0jMFB=}jm0L2pI>Sc$k68Lz00*@f#Ho;mFQ9!XGSOd}*S7i#L4;Gu9f^h8xk zzn*i{bNnj}=F!;o!p(iJ$)(R_2Acs-3hBD6oX|V>qh?1BfGh0+S-azVD4}hs*4O$H zS4XeY&kCtQY0r13`ir^}Xu=^H=~~GSXDk@lc6R!bPGsg%3<1V^Z)xxt?`U>&d&dB2 zj8VLTlQX9m?7Jet?RtkM91ls0{gI=ah1>T#SI!$3Eh1Cl3aX+`I5hSfow8yw%hKA$ zvrgr(PyFt{LgHPk`wy;IREp4rHf5O}<%DhzMdT2&t3R)8=LlSR8*USa|F6e>iu{@GKQbR73iD^itpD@6vkr?zWoPH0$j z#VNbd$>Vb9YAe_c_@Xk^Mp!IN5hxSssHs{bY~s8^QOEy_5XaaUNBj@!mayhfn$`qe zHUNri%ZJh8`1^`8$MXu9Um^(EpivJ(Yq(HfOe-{$2_G-HfzF*&rl40gI}xXKLNDei z57ih&(u9`(tt_nRfP^}V7s<|dCt~{WtG+$4Wg^xRZg72&Z@47(e7V;R6e*WWM!vU9 zA)@z;i^R@=>hoP!1J$|(^QL*~TB|z?5w_tLE9^ee)&_e#R9xU@(2&t*vQF<(ARrd7 zmVg^|xVCN8p?P2Ji=o51lw-@TAOWlA#=!EFy0|}edX#3k>lREi2WkkEe{=To)JT*L z2^I6%;?c|vAPEZG6*X_#?jH?pDmf0tTvdZ!x=^xR!`aXkX}IlY>AxV|&^pV|VZzHW z^8@Z4$!y{wBk@58Q~R!S%@r9!L>C^(XM_!J z9J5`-Z*Jas*pil(8A-J{>+302Y(>{2`T^n5%nTIsUM0&wQ3fb(4}#D|NHAZla8}#| z0cZ%3{Os|$m)l5ZFc{no!v1f26T{=o%U84<%L8xC7nBdOjI}4KB1{p`XBTaKM^?=U z7foe$J)QBzrU1{?x94OP`QwOf26{wUdvwVpy7ern6h%CuZ)u#6@U(HYeL1AMxK489 zJz=W<07+z2@Dzz$lT*G-WJ@xP?+jClJwWCsU3go;H$r}FT_ci)flNV=vOgFS)ZjLY z2;eyTe+60+NH>l0|6(_TtPWR#tsN1;AYx}++m2FNxM(HQ>gA*KX!;H51~itF5aMa) zq2or6zN3Y*%tTm^7L0LpVgOSK5hzGwo6BXWFjgmwiPIzRkm0_$<$Umo zQ379&kI*+p5O4}2Tf)emz~fJCc`+%z1lE^{`ms0Y`lQxNPoHbsFR&FJ@4MjBV{r}c z4nb_^K?K5C4ZvvkkFcIFmcxf)J`wQ^;K8K*<$&Z-OKN5B?A5rguc04)FYTm^FQpTK z#8@^z?zY-LxuWWTw#;Z?Q&Dn1)^@$9#S3&kIu6*s?Jf8>;SGw{H|MCXHS2G}`&^2D z0s5heX<9Q5I)gnFDY@$|SB^X&`cC~Ypg#IhKn;ki_SZt=Vx>A->6IWt)g{MAPm`dOC*`{2Pd;)2$kof)^yu~0n{McPLM1E$c>#I{{6U2^pFUU@d5Y;uD7b#30YVWPD#fYsd75eHn0!WDpfPKK3fha2b|X!R%wzpa798BL3g%a;KFT znBa=I82NlHq1HwkP~1m2znqz!KWo^0Y@_oD-p`(;Ix5fV)d=qzVXX|3Fi3#)__g1r z7B_66ti6Hh6jV1z#?2qlG3EItPRP}#@-w@|rO?Q{wn^HC&zBPxz{H}QEY9hBJ;CP6 zsW$>-f14Qr$rOf>s>;C^U((o0jA_L50g}U|#4Jd+esIS$w5?UfvPH3&ACn!SWvsNp zxPUf8$EIzO4eJad^b(cwiT}dP#Uh-LutCDwh2eVf`H-<#r%W=6p+xlVhol*2qDf%8 zjB5Y@mc;?kYMDt<^ppey11dmtv7On6-sQ{!QWeme1zf~PFuk!nvs7QRmaE=o-B)Fxp%;=qS47U;U-gX9f zmBWz^i+bYZ<-sz`;*5(50rFlENb*y-Z|xpGKg3XHs9vpHONM$XB0Lh545t3a*`2Vj z7?+Ax1=?Z86MKWx1>%Ul=hVhjyVjTN(qoJC$6mbo4*f+)&iPntG8hC12tu%luR!}Qbq8KiSLL>y84vhS z=yODUg!T?V1x9D*LO8G64P;6zJL-03!Box$))VO*;liTi`hn#tV7ltd-S4Kc^$RMV zc5`2xE(sty#9}(tdYX?%X6CRe`pB`eOO==Hfk;pz^lm;iuWOo$H)WewOVClX(;{Gk z+J{J|1gySsXU)xA4=`UvH^$b$q0KvJ-&V24v;qINeAD#Ho5WW(zn2@gkIH>Opy6Ad zVaD@_W$87DmgXb3LvkKlYNFiaM5CM)Kw*NB+HW_OnN_FBj8P-KY$D3wGc7}0%!gO(oj$@>(Ha)r)LCCrJKv+) zWxA*BpQ|^?!*&6WEKH(dD6Uh}lkYB5MFc2W))W` znlL;Tm}nCUZ%bd257r4CSIXn$3MZU2G%y~WvI3~k?P^7r_XIhdJQc*|oTNwrq8I@xv8tm+g#3W7)pQ9-O z!02{Bf^R@;4xr8+HuwN@vTIDtGMNx+=`c#2AyUGBSy0~quFPssbRnpAn(VZwn?w$T zDRpH|%IOdJH{2sG)>- z*8G1gROFk!$NImdGOP)1OjdwlEB&OqIeW7F-6hENkM92B6QG$C2lA6-alc08cL#&e ziy zkA8TAZQ8nx(;)<(*`qxwKVLs4IcGlC*-nJcd%qxYX9p`l2M1%(ZsT;ctPy-Ivj)02 zUECJ5>BPVNKNJ2}%5xNZ#~me(4_DIrC0g(v+xk@i{Ef_LueTn5sA6Ec_&klwJ8 z(hD~$HfPxfoYy9g*Lt{%A>z~C+L4AKPa{v3%zT`vt4t|#rd<9tsCfU>iq-Z6+51U4 z{#%|%nfw!Z1^lF8C2a7B-dH~x8qko)Bi%f*Rum8Y0YlYymUPSj=c66j{^ok-AoBxL zq-{W_WvqmWgZ6wyaTM2Q|9;DF?>L22XyHAC4rX{H>okoCPOm$35=w~)r|_!ts&ML7 zC)g*lCdv^lU!nB?JZGAKa^&bnfXNJN?OyWscb6AT=Fx~sX}GM>90O{Y_)@Nk7=*%a z@&9a}$347UtJb^hk31LWhTqjeW<`MAiG5{&$`f$+W_xNVsRLmf5G+|00#&9HASY~6 zuH0q>B|S2v?8}AEf3IqLj7JI(SAaplwjg)8!%e>BNtnlaoRZ6U&jiEzhXeBzsyW)zig6oEb{l^=tqE6Zwv)Vc#@Ay2Ob! z)wtN#49SV0QAg5VEAMFj#%u0t$ zuY!?*tf;T8;~5(o65+g_NN9S#5Wp?0q>Y$>%0`+4K4CXXOu z)f%eT-wn~m)I^^pXniNO!qGo!yryH*!z`+`TF zbo*UX*tFiXJ;X2^#_fou>1j>YLn;iXtl*dF=e;B!m|%Bz+3t9~*Du%ZkLju?Q1?NG z#8o!|E|xeEF$hb_!ZOf5?A^f9hAnV(fS*f;#0hG?4h{IX>Ebb}eC3@;3Mx7mRk?7g z_#qETb#UP4q34ihwm-G_Zivtw9~QjbUe2Uk_ZRN~GjeiX^a@B}1hB|rySJL~4n^zB zatF1JzHro81E}|OPwd2XUOH5*rQAQkXS(HJLkK2zegW?OMT$FKEht#UNRL@RF8!jn zO;f)m;T&?H$J8H#RYBD_JntSQh~T2y>83I`9NF)`h^1uUhMNU3CU)ZO?BRbHq4Vl* z6CtTWlq0|op=ld0)Q<<4m6P8CMpGQ?o$bv%p=SAt)S+8-jyEvcAEUs1&wuM6cGX88c zWzzt1@yG^>W9PE8gL{vE!j;deDm>x*OdWlG85O*&^=s)_skskuE(e7!J%p-xbPtk2 zbFX&vbxdx4lGdi*jw}O1*mRhX=ej?gr+yk^oStwiCQ0#i__wu`3r>Cf_p-L$z;9{E*~OT~nl=cdj!J%K|(J+p0@5K}^4oL?2#!!MY? zT@so3e(&U{^H{cGK7arQ_c{gk5V@0Rb1CA6dA^o8HknSu%=2){yf6zb&g(koa*8p* z?u8WC7aI)NKa*IXbSIt9N9AucunJK|#VXiMfh|TeHR9Q`JuI2`XWaE*^TA`s+S}RD?|c19*H}!{zGaJEv!2U*JD;pw-r-U8gWDhRX3GP}2UvAzmDrbH$)J08SBj<@_(!fE0XDRU zC3q@O3B!54E7yyOIWYm?4FnlRKT|H&wU6Y6SSh*n$*_$(gt;a1S|8>^+ap1?1J<h71t17wR7lcX98Np?I$s*gbm~;5e!ZJ7S(?A6cDtr=Uq+zTb=`39GCLF9|88 zkP;EuPCwQo%F?FIORCs9qgKOPqMYWDZJf#}&vECcG5hz|euGjsMy|=(ZF>CTO4Gi@ zmkaB@|2eHT6H`{;nhI zkU8Bf{&}C}qS-8)I-T0QjUZb|fA^9Io^-UhiD$_n5_-?#_yPoLBw>Wn(Mynn3qyxQ zvge=QLhxPMmCWiZGR}vzRS`*Y40$Us6v_V zTnrpwI|{`1Jd17xaYe(-!3ZZT`<&07*;EC)quK!L=@xd=Ae!e_@*j&;5hGl~4cZ~~ zTKbG0lN55xEEgX`fzwtCZ8R?;IY>?D?MJhv?B!*9*>@Xba4}}QccDLJw)C!Jw7+`F z`P?9;jB1;KPr)&WsCjQwp~!$Oa^vnz$Q4F%(w!%v1@-XPceQ83W|@TVokBvI|KYM_m2 zO<78p>h1fPy!EE)PDy@kVLs!mJ1g}6MjxnQySVe2k%t|7ob#$59Tx)!7#0PVr9s-_ zz(uHF6GOs`+DC5w<7Qk@#Co47E6T)Ih2ZFAH`aVC|1D5$Y`L&;*<+oJ9?*PWcUj34 z{bR4wcXG!`X{ZW^CE8gm|0|vWf`=f#A8YIIejiv&CtUOIJ-F5qN;QRPB_aDN9LH;d zsRK?UC|-0bbT4^-BMJU(7+Ec6)N7peM7vFtEFF_ojYR*p$P!~mb2xE7eA9hio=m zuO@1%y7YN%8LGa}`nT48rxgo8718VW3O>ZO}19R_&{3eR1-e(l)b4+Kv%mwHGlOinjhdg*%>XdAs8d)5 zip|^oGkS3z%wQMpFI!f^K*>6&ZSl6(MilzS$MI^Kx{2U^D}hPo!1b&*2CBplyiDD( zrd-TI*Kh(Kl;ZC#8zE~YW$pERD5%8215anTm3El9JAACJ!m##!Gnq4ar+)jLzK0z}= zx9xLo@TC?s((H_h^fhHFa*1mosrOPMIz)aUud%rBh7YI$W|$roDIs43_>V5JviOkE zDC24I@k?Ua3L|R$sWp<*=i3vWQK`JnESp|70a#7 z$d!E>X1oYqxH1qVg~)2xjpOO1vwMuFuaK7c+h)O*Ok_C0c1Dg(G6(ie!(pt84-02sNak11aXhZy?~}wl&U@F- zUUH92`gFy`3=sOSR^clN7xOM_xAJb#iZQbDXCpa59dm)wXhNpz1=b-S{75-n9Q%|(dUg`Ov~m= z@Wp1rLuzjZrPhpVudE_EaN#W2Nm!5lYHy#b(94j4@s$ir@E~;6afVo^U=vL8V(#za zmcKuesjZ~Ov`JKMVAheov!V(TLqUL7GfkHnr`=qC!6hj-4TZ|=y@`)6WgLz8HGnR0 zA9Ah=D$mZAtK({YwHYQw%dIc*`208G0wq_#%OPx%nk}k&qTuf1bdG`rGE7blP7zo| zr~x2ngn|Qw<~cDRB*^rwTKe|VdZ-~VeaKBQ`SCp_v<*1Ia8OSZa4r;;QTMUAQh*+; z>S+Sa*r}*@NocWDk%*uqyvY->v@$EU2Mt`}9ZGT(%MNy=s{V%)B z9AZykG@Ku}LxmHES@ufv1)EWv$?)B(YEKAGMJn>L5Qb__YYbrN2ABk{1!y_V?Gi0r zeEMtvAVK|DPj9QrM$|`^s!^SHFvuGdrnN3pdts&_DbhFD5lxrOZ%26D=bF8~jU!$f zG8|bv_pKBnBo+~G&sXPEGg!}+eO|UD?%dQ!3_fNdX!ECtT?TjD^@=2fscc{#N8q{M zC0zh^Yo^_%j4#!Roo}U=TWN{qH zU-+R5r$OvF72-_WIZ?>BdKh->I;SMW%0Ze0kAc13v?2XSwA}&|#_f`Zxf$BfYr8KL8b<bS+grqUfQq=aro;9oeZqjlPsPwR=$2V#hF&AO z@!6mkHCYqQEVc5-xpcL6S4O#ns|lh$Lg4_j>PUM$^$jB9i3PBMpBf zD{vuz*a_KFKh4)k zdx2(~n4PFLhy@V04Dq&Hu3{ZZ5ZWJoztJ&$kOY7P((Nq6TF}tpL5bC?Zy^{g@bDLi ze04&%WjNoTPTdCr=u|XpRW&cVF#gv#_eyO#LOWB<%sXAngJ`EzRaeoOfyEnl(VSU8 zy!HNvaF$a0d7!~e8~tsB`lT-x0{t7Tf*23ulmsuQ?)~v(sOXR=TDJb_P5O)09c|O` zD71x8dmG)?$Wr*?6FL-y+J(l|9I+^3!f6EjP7vr;m`N%)WCoDUfcbQ@IF-i&=chkg zKrP_sa6f{DruVmwfp&sx`80nEJN-Y}-}EZSC}A)P?`jm{GudWRM8kcf9w~wRy#=C? zN0O);nggwi_ePw}R{raVZ|pYWrY7A85g+pI6Pic9Kl|{MjFso65kGK+Wwla~VKgoe z2K8eLk~H^Ra7ay}7~c{ww$=Stogwc9KTOb`hPT>Siq{S_A4f`1Ed)kU9w>I4!s+ z=RLt?{!g$^XV`Y<*KG#I0?n&W(0c zg}CTD2;=Px)(bPlM+*SWB$Z-g3GxbBQTwW#X>Mr3@6a5*3#*7t;x-<1iM+cFwgIG} zK%~x~6);7tWz_bKTnM8VBwgo*W5SbbkfpaFE^L)0JRhtLY4COMzWhPOUPhGZ+_qan z;>22gUp17O%43q}t-nwl@o+aE>-Fy%bnv`Jx21{bl`!xLxYD|4TL#=ah$m|_lGsXn z)f;5D0@iDf_Vmu7~RfW$CEyQ~tEyKYo!8Ox^q|5u*B5zjt}|nBN9)8kAs(woT$J_x?at?av3h_>IUxBi>UQ{5^Qx+63+!Va zVqZ5u$-gI4kpOc|2;6N{;zYoY7p+wtj^u=C9$p220i;bYbqR&R57M5JWr(TuJ)J6}j(iOe+6*SoDFyu38L)GYG28B}jg z{mFVnZE)>)Zt^z#ZO5Sp~hod%0 z+`wBo);$kSta`7;oX6+BaYIrq{fTC!nPh$auSWEVPgS7XOpi2B%2@S~a4h<1lAX#- z1f4|bt7DY`yiFb)-$elR9)zVp_zjA0vG=|lCig#~c$Pj1ER2h$~x$R@;JU zQtpQFenPmxt{vIv>-^?<88sWKrk63=1C_*SJMXX@Y~EgZl@ak$9XMa?YeIB^^eHWU z%J&5F+?KIrdQ)sAY+{^CR`1_r6FxSVEy9>$@wg!Y1yDUqj3J~B&VYaOIo%(wwHs_cZ`ruwhM#XquUMOLW-2=h_Ve6WPE0+ahG z;^#V1(}we0+-%wd?Wn$LdP46ls`Kuce&um?#&)eSni|u~Mvy0S%iB!O9aKZ5J$}T= zecYY^JKc3gLnP3~N%7~?rSj2~+hJF>*%M@Phb~XimaBUh?QkXRWS7)CRoD+M@tlmM_%=$f1z%!bV9>4mG%#%e`VHeInuurp?2hBPKi0w{ z6@s4jXuSetUT0_EEzxas(-@q}v`Wp$Ha_mdC`RZ2uOpsvlZi+H%wzd+`QBdMN?}mw z>`$Tv-v-8YG`nP4A#s&A?8$1ie*dyZD*KgIhe^U-@;wL&*6>Wj})Or1}XpsNeE;#ORX=Q6Y{QMcDSTe|+ ze+@L3T559?o<%2wh&8l(~{r(kRYCNai%(5gZ`zKz?wz0j}aQd zlw{pOH+4uS`e;k@aX>?eMxh9c-K5GR)= zC`p!d>xR3(LxoZfUy9@}A&uqH+(+!2^Ap-ooCi)UO}&7I-1M8In793>;8^RVRjQXw zoxENeh|O}L4aWBuMv@7ZV1|3at~N?68UzG%!%+g+@s_MXVq8c{A)ru4#(W!)_E7Cu z2X&QSrrx#vcjKSot)^hSA}-5>1o2Gi+<_e3v~A{;#JB9%w}n#yOUp-n@moZsaGa`# zH?H#r;-1Cd>f=Qd7LuND*GtSjjqXWC$ho?tJ_(Q;I!psd)2N!8ssrFrd#_!-10+SV zqxp2>?vj!&Fsz2*6ES_TPEqxJ-8m8Wfur7m_=wq{c32o-4sM_Mje-na5$GadHHyM0 zz%m$ORE}k3|B-OE`5#C1<{R>&)T58Y%k!NY z-KS8Ucb)xFgo%mMtB`eGo(~7YqYz<-tVCQ9rpWOrXxefd!dr-wCn#_zZkabRM-^a` zII+o+u^Qe#Y$i+d$ogVRyl!PFSe*uSnIqXmk9~mQP$EB;Wa)aAizJW5*#a_I5v)8x z7TCj)Y3Cb2rGdd@k!3@NOpmnmF{?BueA_HOAC2CE%|Iz&s7S7xAru~?R`G)sjN94= zB)%}@l51Bj3HvlaVR)GDX4A}Cuil!nc(W)=L%lUVT_Rfk`Sd9()fkTb71^p6alVw( z0O2`wEG=#gIF6n>#}lOtK}a%)!3c)oN`aZ)ty9Q7<}x@*m&yOtE5sL@nM}?2x0!KG zwpBPZqgT4;PMV%YFqO}cRRZt4)SinpxY?^LkSBm8WI(>s#4=`(FqN}$zBSyKQIlW- zhRglfn|MC?fK{__TdlL}ctJ8XQdUu+9QV_-8*D&I*V>jzL2=pVvnyBCwqm}Lla6B~ z@4=k$Z^0n_>4(zv*)@A>fL=I;?eWcRRl=knIQZ4driob~ zJbEWL*!5PKQG441>DX?G?XY#u;?e)ccVqRl!wGz$^RH(2fTb4jXTH%!Jf}{Y^Nu4m zbU6Qc=#BGiDnQDmqu zkD2zys}q7`V7c(6kYVfrKw`i7zv<0+zbPiIy(d+6F*PgmVMV{d@^etLHa* zQ*|w92P!^Jv|RyLBbvvGg?Kw4OHeZ=tt`tzHy`cm>3(N8v@*ZaUzSi*s*q4C>93Eo zh>ojF@|{s(6trvW6qiX)Xy~4|3$^OE1;lYP0AuEJZJ>#7?^aM*uD=ND7;uzpX_Scw zhX1>9A^f}*>5kM7VPEL@!hcg5ZEzBts9mqdf)z{ie3RbbH%aBJy9K!xD@c6~{2@3E z2e_Lt$tt6;kB3HnuIM7hO_YA|t~?Z3>)PaTw&c5+tWU+`Z3ENJPSVT>&FrjXgVv)H zc&YJAma+uR%IOJLOK=s-zYeOxGuvtaKBY}cOOzRQ5SVJK!g$aimggVgY`HMxalj(u zx3TS)TYNWv{64e+a-{cX4q?Ur*njLup9iN>tOqwq-ooJ|X<2Yh-{T4!w?Fg7)(UbQs>I`#OwgwVC#`XsEpY}ZV zIu22$dc91~)e1M0gI|!`D6*Ilv$oK?}$WuRpA3M-sKx4g#N%g-Y>Dw&lPI=i8CPIX}K^Mxy z!gbUCr&^O7zQCqu5l^UVNA{U_vBC2Joqs?v?`n!dzh=%PlGxLS^}T`NNLhx1u7O-Xgx z=9)_F8nK8>rRP~O2WlPu2N5ctn%#h~VeyP>3P5wUtXR@2_mzJbk&f~?UKq4s37QPh z{nnx2UQl@#dQ)id&@Ri6+nP>WQ)l3G7kX`efzh1t_U5K~*F9C1=RA)QYy0w%-yGRX zvshpm;%!nXv@8lJi6Vpcl0mS*o;|yuiv%^vVaqsO#gPJlJxLWfDg3ArZ0-_RRBGe! z0isuv?B@D^r|B+*o`@%bAYWtj9_fQ@AkwLoBJBJXQ^8zwQy$2On`TUsvIN`| znIKHysw_49b_D}RKj_wL@Nl1 zK$1ulr8+<&TK#%O5Q)69*%t9#l+mOm7<)CuhUA$UYQn1B{HLF3T>5jLVMpwoqaO$F z=+ufVsLj5M1WVcfZ>*%yGDf4bW8T={ zUv}A|?ifb+D{ENdY-d^*!c=r)h9T8W+>#&@E8Bt;5u->6IB9Ii$du~vUr)W}+BGEz zlHuY|Ydz)Jo#h(e`_#mHG9DaiW2m~_`XaJbG$0A}jk%{0ma0r1B}nlH8-;bZGGLZ+ z@k~0&7>qlZ$XFooTZ_iLpumrs)LZjg z{g4m-{Ws^1YR4#_F^8`a$rmunv`Wp#;mB|!nr0RY{0^8r*Rx_JHu-F3Tjzm2T8GIb zAJp=vx@%C*_4>*H&uszv49KfAQoujm^q+}0WZ1o2QHmgoNl7f4F2O;>tOG+!_20fg zP^=-9(5wtU86+0(>PGGK^Gl^(DJ((lfYf2JyXd$LSSA#Z?cP;>1rhKzZv%6PE9BEZ z@L0$jqJ5~{$O<3};a*R(o9GX#=ySvr$FqXvx;1}z5%L~zZtSoj@#K8W!9DU&D*<2* zzg$_OQLGYwKa3lqUohYz1eU964F`+hL%zVZEo6luPm@-wndRUeX0^SqG&9=882Ffd z4~}`V4fV^85gom=zZ`RXnyGUC+bFs>A&Tm%2@-<#b^Vcrhq+u}y?7RV?lr`wv`lus0$# zd`k5{MnNqq-C%*FkZ7Fn(==U@M$o59%OXb zZXhbITSr^~cAKc3US9u1lqs$B4++D4nlPYO*1kCn$^u}-OYXdpXm^52KTpJLREf7< zn{ww1ij}cX#A6e-3wIt*D_OB^!cL5qoLS9>#r5j{9E{n-tZ_EcIq6pu#`CUz%C|7z zD}NE?!A%UsV#5zDkIt{|h9+a-s+20<*F9cM?!Nt<+7V`#u>IhPJd~HYPnr)GJh66p zD9Z_<+rYV8ol3<>BQ|aSvs0gXQL#VTqw2FM8#&1M1 zm=)!YM6!RWfaY=MY4x8+*@0RK0{8Dd{QjvjwFV>!k}BSuf~Auefvb-7hrxW4p~s$? zO&*gnzlv*rPTMH=Tbo2=1s=Y3^x7QK-J|NJvgOY5q15jM2L{IYY!yzF;OkUtFhbML z4``+E6*PE|CtZI1ugotT>?f2PDkDCANRDOK-b%i)-j1+$+z5;VyJ=iUXe25+?AAz4Jxj0@Dke>4GS|?7GH+`%RSdem0s;vbtvOs{4MGArw`gOK$8zRpVz*T#6D147gand%iqv#zSjN!5N|G}h9 zkf54oGwif=6v+YcNi0)yA0a)q*i%~ZNHl-|7<=sH#amfJh9dWZGQA}uxKy}pHJC!r znEnT>=fWL~BX@EUxG!m^b8UetdGMd}&2Z}Q#F)h$U$@RD{EA!Ovw+!$k@IVD1S9LF zIQ)QOaKWQ>-b+VxN7F=au2M+=2Kv)=-~a#s00000B%}y4zF}GjQUzruNJm7DK@AO? zPaUK7Z(kAn@uqa@9D@Wm*fL2X3#BotxOjijSoyp1EIw#zt)sx(M*3F)lKYSbqGqCu z|J9_x->oIFtFn0zQYEf6o&W#<0000^rHP*_>qL9xPOm&DB-g2Z4(bt8^Zd5_2(U>r zIxvvGMKZ1GSBb0S0a>0en%Jw=E5(Kdg<>|R*Fu@R8fJdat?}&2dFuNZe9e-e%@*PI zo5&R8Q(=Z@IcvUzwKMZN1Y+7n(0KXr4sNn zDKQ-DZ!2b!>ute0-rN0tKy5JYo_~}uPH+qdE|-QL`>|9IbeaR6+?~wPe*UZ7gD1}XD#JV2OOVO^Z)<=0001Z z>*$sUP}=^d8-+Y_=7UWDnkM3ajq3%w6gcQ_ir1;iZ(NAOUy|C4$1xf}}i+k9{SFB{MI{+%STY2s|GX zigknU0QRzCKprY_>_mf%?`4G?`>^%08v}m(Y-YPs$wdr7S8!g=$NMN&Vz7hG94~{p z?IRrm$%=O*K;~%2E|5>k1ITof4*Vo}Mp}?B;!MSs=g5ZI|_Xj~4PyA;@Gv&DOic{zo8B~G>VHdeI+Y%(#XjN@A z`eSYVEA^9~$^w8JlB&3sxWXqKy(#UZ(;MAJhl%td_9r?L89Lf7>N|cDZp_Gi$c=h0 z^@(s~h#jKwYsdIM?`E=P2^Yjo8uG7B-PK;tkQ3k&@0Lw@n23{3mVxd^$ZfIG52nH|_nYcWExx#) zPa!tuEEyYZ@F~K*f%S*qiy7o;yHGK*zbCGPe*=aWi+Tp}>-KJjZXvxKm+$%fBm@SN zT|8JS_dR!?K=?GY?w-_aLLOseoYc``gghi>VwQt zVkE|g=YCx}l{ysM8vq5q1`7rpFRh5c(jbA8bMQU%BCn?N<2OZt6sSM}dH@*Ub9mqY z00000B(2F~Ows>)2`UU!Z0=~SJh;AXAK9S|)>JpaHf62lmtUIF6AkNCpqehJy zE$L_RfB*mh01bbq)=TV=vC5lE^i7X6sc-emDk~i_P__!Z&mCcbpwWF_&nd#ee1Qgv z4D literal 0 HcmV?d00001 diff --git a/opensaas-sh/blog/src/assets/roadmap/open-saas-epic.webp b/opensaas-sh/blog/src/assets/roadmap/open-saas-epic.webp new file mode 100644 index 0000000000000000000000000000000000000000..5beaf43b06330bef6ec8c83e1e1974fd3540febf GIT binary patch literal 10460 zcmaKvQ+OpzmxWJk+wR!5+3DEm*yz~FiP0U~wr$(C&5q48-;bHgxvE-qQMKz`d)4!l zima5>A`JkbDJiC;p~OQv`p^7k4Uh#!Hwo?mCKM-@`Ms#1fGi*5yGSiMoR$5D$y$lg zu}_f;#Js{*v{$7+0?iHq$oS*W4gb6F5lVJXl+VU9@DkM66Awfb-g|L7LwN(PeJXrO zKVIAlZ-N}V>ArTpTHcwjNS=R5fAIiQ&JkX@?@?}mo5H_(+TTh*VV@iA-4mexNAM?; zGvEbq;_C@m^bidap6#hNxb5l%rhv3S5f|H3{y4@e{A3+jpL9akt$=3J+#i9Ou)-xBhG8xC>corx(UjO?jp~~2Z&nCY%r9DsG}pcB3O!Eo zG)n?P8W^@&o-7!~hL7qz_au5sO8w$rvA}DiQoY*TE)lpS<$izXf0x*9x~8H*#s$ny zVBjZXxRqk~mhcvWE+Eu?hep|YOu647qwJIx_Xc-aa4B(i*k)eNql9dhYwLidQb)pq z_MVvC+!A*@1;5lUKbGQPUR-iWWF9V>Oi^S?!*Ymkta&f@eIkz1kp>NL$eug;zPYW# zuqJW-;|WJuk@Ku*P25_9bb)MV)dZ-3j6J+cG>Xwml8A5pkYYLWF_|To@o7PQ%E(tX>{_yguhG4wVeXu1m6Y>7 zBZg|?9b5)EGtHsoYe_R;Mq~r8>8`nBKHnr$&_=yg;VL@gL~zM;j>S>bXOFyqvZSun zV_PLiOXv`I9!*vU1J-3}G?_nKC2GK&HO#n4Cvg=L9C;VdO&45dpQo-HTEK$-)eBtz zvMpR^c0AA2SARilXr<=PwpQL1iS5ikRM_&lhzM`!t*$6$*!SHX`%XQ9Nj}o@Lc~}a zYT|LFs*m}*$m-sI(Ks`_I&Zr)e@R7(wC4__X9hw4ryp_&Cq!1q&ra^2kqECTj@>>q zJQ;%)T&J}MG*sm`&LOBenO717^7KTk)f;&YqKR0JSZqN3fQD}lcY-8VU2itvKOG=d zzlJ|C$_h+V)ZsDVz|$G)0w6VT zljqW~r`6FPaL03=(BK?uA1eTRaTg+=dvUb!#2FFX&tgRrzkJ!d^p7oz#Y-; zkrqMx*F9SyrsU5qCg$cU?HiP+Ne&2{|C99*c(73kLURwMe^C4%um3&-P`$*~7WCU) za=&Jl3ZxKvqxJ8V4-dVw$>H^wppV-hufaf7E^(;+b?sr7q@KoesXr?#>HjJLppA zCy2iLm{Cov&HCV3W5i;|ua;t4acAQJwsXBP#RurS2FD$~sRnS9CV+?JVlo2qETIrY zXmr5DmhL2@NdbVbmZLDjwW8A-2*b1U{^s`iKsCrxI3@I4DiJyVBrrPg|CLlObCl0D zT*duJKB4~32#k+YllsxPdeBH&eiUWeT8kx8iYH7#E6n7 zAog9Ycpo_R=sQo3f$v6qQ1kcuBXDLQCpK?i5RLMzsN|2mEzIKL?rZcJpp_BQWoHWA z^MKU{PR~=-igE7<0$0>Zp})0}E3o;Fn~KjyQfD}uv<%466YUR-w{a$%OfpSLJyWkc za95b{_?lmQR-M#udp**LRK|NZ#3LwFv+v7O_aD?cJ{aA1k>^3r%+vCIIn9JkT0(!Y zJy~s~+{czOl8J86umq~byIe0oI4G*E@Jj_65N318n_#|U?od$dJcxv!8>P&ABI_k> za?2s-SvAunrcOK5{3o94rwRVKW8ZM%uYkY?v3N-L7 z2Z!|D%@7mnQWklb=l8siyB~A?Fh^FHzku+yT%qHM{{IT6=DF&0*PR(pKeUK+U` zrtGfZ+I40=S4y@=z&=CJ`(U47Y6cs5`28^5tz%#x4WL8#F%RC03nA!@!^irbDphS>UtebUbwHdt{0w(NKWlkVVxg3W*KG&7dY=hvNB$g;UiB@0V_gY5rcxoH8p<)wj& zrq0aT6nrn6>WmOPYI!8{$q0&o|JP*kf~t|WQ>U8uI6=CsY2U1G0bKh2?#yt=dh zCRMN#n8dP@3Us>Du*OP`|C_xN-Zlz5IzaRD43~P{M<19cz#COw6fk4JS!MX!jc5+& z)DkXeOddwtXLa4W2#{mFwN$Vuhr}KY`lK7~poc>KRs@CK_#r~Af@96NxJZJ}&Wgj& zh&{)c)Ab^@Yx7E>^Lc3g#XG5QYwBs^q+q%Gu{ydY+|zf;BnxkCJ6MLuQaa#zYDZ65 zD1+X>j8DCQ9@A>RKS!9R2KCFKieG1q=+Cr5^|mN{BjOIuSf!VXxx+%`Q9EY&!s0tK z7=1{ZBOGeQdde?$eMB1wEoQe`r{~Q2f5LCv*K|3%7%7^dA=}pyj-T~x(6|v!;Qz|v zvo&R7dpLxks6DLb%tVM9ysK~i!#0Q~H^0AM#TG*HlqN@}WR|9nD5z8j0z28J83)bR z8{;}iq$q9`eoh@ni%mZ5M}wcBBRZm~^+!quhHc0U%b;UgS9Z?9c~R8yPVW(e!gSGV2CDfunx}f{FtJpe+x}-OnVVN5cHTeILH-&X&s03@WLdSdh-& zP{|(V0TiK!i@h>!2tA9GQoL9jaXnC736QX8VxcS^iSY^kmI(8DP5 z_pY$;_6&#Ts=>cgu`*LNVKc%=)5~DisXsU`Tz?SjLSlnPwzuD9$q2YIJ!V(j5SvJT zCX?J|aJceIpX>=hBvxa{<$3&MD7dLW!63%%dwr;XdCV6(xNHJ2KIP}Vv9k5b)ytU@ zl)(C+4PY@iYB-DNT&T*L;>B|#(L}Uefr~|dldGmLu#slvkzYUQw=Bzek50~yCY6a) zSvvzZ-jvkDjpde})1C_VU3_v;tip6Jx`@25WRdZQFoyvNz zWbq2?{TV`_DX?2DV?o{QeFT=G6*76$aY6h6_$#xfiH>N99HY!KB= z$$lbw4(&-it8dimcLX7q6k!}Qo(|S8_BD8HtasL9%?lEuBhhuSRl%)1$fZr^EFA zGSe+)N%>Yz+z<7LYoi={MOXpo-N6xu!JMJyx6u0wJ=|p4KW$Y-WiHX(V*vn^O%ke# zx~Rvv3^;z~1XPZ`V&#dv`Kxx{aTlX~P5DW&LM|$9NsWA8HTmw${E(#CR?=rm@~w zQMVy(qL%yFBoNL}ko!tr)}PUXPN&V0s|!Lmvu&(VzkE<-_w+Y4kb_yIkxmj6;V3A# z-guPi?}&goo~Fr^6E4XY4(Dmh^0l3A6~yy4slJjs_8znKw~R#gM;HuWu8DTLq^bif z?^YI3FM|YBn=;K>5AeS6!RYj%4;ET}ErS=JI@AjHbbM`xC3q1Cb+4G-eqp9&{W`o2 zZ0rGdpTU?M=s}_t-uw??XH4 zA7*lay2K~Z<@m$uXu+lG^EiJ*;#)B`_KfI+>se|jLgeC?eh;y!;vF-vdJ--gTfjsr zGgWn@vgZCA$Lj7pppk!ka93V-bvX66F1`uA))#Z=7ClnMEXa{rg5MB__nEqfAtlCb zgx^N=Q$;!{B0Lm6n7g}U%GL*0+w0i+NZnL)SJn5xwKyn^z7A2PK|y5Ao6mkBcoyG} z_!$YC4y?^482=Ci8~6=mnKzgMS{oAi!1Une*L){durKxk4g2pFm-uTLW>+G?J$$ zfgTs}qja1RJE-`*o!TjSvfte&NYUTSqXhA1tW!-qg7W0t{Np=c=XZI3d+HrrwsI}3 z)|1xT;!sDvPTdl`b0fj+&!14Oinp_-Ry8%z9nrxs1;J*%MEoDY1rHFgi0xs$^grNu z5N>JCtTKJvELMgcR_L0jaO0mGSsT}+O-hqTG@LotrHi^txxmg87xwyuo6xxbT;N=7 zGODbJpH+Ym*M3FB%vh&XZExeu7@hjP#V(DU1woN+!;;KNNdB?I+62Xo_B7B(z~atp z^hGE2-b{AFjFXW~J`OnG3lkFMalTk$I;T9HIBN-Qy0s1M@l7l?&)Qq55HRZd{|Yo5 zf|2$5v_W&j6Qr<*9t4}G-I0=hhHOWImmYi@r+<;)G1;KEm)BGhRLjzgtu9&JF}}jP zd8#xMsVBD%s`WJGE%e(he9V#>D9w)w=w_|1lnSsXb2(~B^=OZE$q4}4%81CPUBeED z<0J9zNSLM!6Ym~?FPQ8it|ITu>D}|PCLld+4PR0wL!*L|lNS)8uNRQS*k(e#bpT7| zpegi(zWCj)fG!)*Q?cneNXi#Ri^;5=1JQO!p{tH#KSwy1-SBux>{&#Qj((fB7=GO{ zfAq9zpG`FdiEp-8^=PkeVWfsYpX+u3@caYBi4*BdBfqzFp`aZa)#^vwxc~H!y6wsk z6jaJxM$Yz4xz-W7v_jR48BBkQ4LmXqDJ89i~Jzy(d;Eb!swg^2H}{h9=&gi6I_hG>}t-z&y`F&HrtaSUG*DzZ0x`e#g%+Y z(ej17Nx~pa^-SpFk53dm4uhzoCC*cx+PTi@1!aO6ig$JpQL9*8%dTrFAUz?8I^FL*HgUPm5biu1;$CtaQ?CMfVGuyCcB(ZuF+J~~;hoC~A%o50=6bmr;(1%Nc*YNlL z_m?4Z;SGi!Zor283JGNuAlYY_$i@VxQhth_u7&G!-IOdrNBJm1W7N=(VlU6&u)NI^ z4-`F1VI$m?H1QH1U(@bV=-@IYj+``Y%j$uM5z(A$WlHqf5Wy!w8C(=m&7Ql5meG`` zHCJPKgS)7#Saq#31|A*4i#~0Sm}S8sttv{}1a*HI(-LyORbKK4WR{Kg#k;umcw?#QPkke}`WQh1E&FlnN<7^@HNY4GZw9Xh^y{mfK* z)Zc$!Gy4&mdi^YfWQ;lTG7BH~>uOYlc7BcgPaZE~3630d<`m5o^I!qd z1(b76m%FG2GWd2IGcP=gF>*l#`1r5JqQ(@&=CyS;Y6BFtuRc-$SPh|17JXK*Y+A~r z#nV8m4?5EaGi+#}bc)jU3s-N-LVN}4(w~*2ksb7Dv+h~@6*Ba2nn^E@uS158`RN*L zv|ET;tsVQ!%ySiQe7tvQkizE~jRi``mhJZ91F(KKO;dUNZ-G)?cX|5$@9p_hIvnV< zWZsT1dwY18y{Sb&$3QtI1SX6_pUTx>_>j1M&g6P0 z1{>$l+td&YS!yynk`<}psC0cb1IJYp?^5t+#2IEoIn24)_cGS_^cd~pUFaQ?vCquK znwDFaADJsXe@$UI3anwYKIF%7BMCj%@9WfB?p&aiYUcBukXS;O%Wt*1Z=CB?1bptW zjng-=VQ`h^dd7PnRK|;moHBm5YN&@Uocy86u0r8+&cwTlLHp#6BIOPKA_=XJVq20a z2(*l{V`lAifR4r!l9LDDZaGj-9EsXsx!IO%W5KpQq-9DGIaI_`c~eZxevmDN4x5L2 z3u$wz2#x>Ttvn!fA>C+1y~{&<#Q;~zN#ErDn$yqM)ahCd!YV^FP7CBpt;OTrqya-K z=YcX-Q0QIqj_4_%PM&HI*#;WhJWJEz*~oj6k02gC!W*#R7W40%8{C%YO<}+?l-?%* z`_AwHrz5Dpel3FlV_i(K#NpO&D0;!Vu1)cn52YPx55()(R1`{i?0(%ERdq4xtdM#uMCj^?ZjO?ugKBRZJx=P z>Q6sF!<(&RdLqMJ%0tpf1UvTpHW~Go9=oDTI+&rd%u#cq4diOaN_W%)__!KrD@C~Z zilvS%*X83&l5h>#&zSz1{rue%GjkOz_c&9Xticzc;!j8c2g>!5W67Gk;K<=2qCX_f zi!w#OkJN1!G=`Rm1$)j70o<=^e-6}#TYHj;vFW$^GI`^G`dOb%l5(y4(*`CKwdb5Q zGEsK4z#5mUpyO}LoX;dWXn{u0TfJ}!ky**9c>XDbD+gnldBX9&shk@8=FMpk$#R)e*_w(C((HRu${HV)H z(Yia6^03lnG2tqQ8m}-{JciWp#zFS&BMu2X_8fa)k$B>4x3R&1#>VJ0tCBV^jao4% zJ;(leg%se5V(#&Aya~H;cI^&YsNs{1YXC^94SM-{30)I9MD zoYkXGl)J85XYgoQ16%yrnIF{iEBAD;Kaf{^vqdnGn;hu)VV!7awQL$RmGVcqu}r>F z*A%_~ZWfI#qz?#V^aBpbU+6ibXfb#N4%mYq5H?NzhKzCIZ$7xcw88ns7bbUK9>!(; zfxyjb3ywnR@N!Cn#48)zjfaJNZ(aWiC*b1>1W?!79;D3b@J{FtI>ujl`}OcG2q zKnlrLuQzC$JN4=&x@GTKdkwLZ9KEn>Nl)w+S%1AmY|wY}PlTcEk$NgYqfbMD)B-wW z@l(S^u-9*@N;!{=Up0ryJ_8cSRz^%2FUYn_FQvn>XTPnE$md_wH06-|6T3EW={p6s z9f^~sc)GpJ(T%RDtob@SKTUL1PfL0|BPe5Nr~_?zLr=pv%(#k%E}$ICV|S=8nSV?J z4~}O7J*H^c-e^3sA-U7PL)MWA?JmuoA*l2@ zi>vvSB$ZLh-A?cmRvxZv(Ka;W9H&4fx@$Fn{A0TPN{2}U+5Z?QB?`{!pJMtnbz>cv zH{x)fOVDsYbP15l@=vrFq~(}llCpjJL7>qK%yA6B)IJoiN=q4r2Kp=%ULZF+kI*Xq zO*EIQxS7Z85IVzBG2mi`*~duc`;qA7nIz4VIf}nMUev5WnXRgVK=2 zP{MGXNI7zt8*oY}?xJv(>u+qm@7U{^{7`Kc;|QrvCH>eQYw1RN2nn#k0&{=4n@I7N z#=Fi9af#VjXl)KOuJl@c;K{Knc0^*HYZ5>vgmVtFrRl@&H)A;5P+4E0tCHcC_0xw| z?C~WzoMZQ2UNFR!;#dYTy3l`m!Wu>{Og*nvDJz|F?Gu2_+Vnhg?O?e(RfFixm16g3 z16$}^RdJ%YYM`~Z3ztA7ZBPm%gqblxqONp15O+8~RO(PN8SO|I)*!Jf}^YSi~K^?R!)b!%TF|D&J&qQZ%>c3Wr) z+Y}VmeczARNH95z{xklW}%*;?URJMt|*VTo<2Nq549;ksW^G<#@e+Pah+6PCj%|?KwEU ze1}%!_z%+t?6g4p(v;xhw~nl3Hx7-K+NkaQ>iO^>6K@ zbc%jm$5c+EE)#r+o27cgAcwc+tmu;+n3k^nxdD&9;G}Ndnalx!Jxryi22*l5*Ld_9&R6oWnF<{eMAnH z0=?c1SZQ6qc#Nri=XSIOUw|N@VdPcdzG9G028VAgV=6uOsGpTJ_Iosn;nn$}feuSo zqypTQ6`0AP(MX-KX~ZP4KOD;YFYk5Vn+>~xsH!>Yf?O~_y*W3=8i5L>$_P>%K$|`i zm-6KsSa>y}*2`r>ldoBr%d4kxtPd^Ggua^%-Hvc|D<8@1I+rjufJ2QEM>7?H8#s>E zR6xOW#_Qds13lVBOpf|9Nrb4iBxJ|TpBGOsrg{T4u_=YAti!b+lRoTF0!i@DeaK_F= zqC28fzC^y0CakV9;p_T=IN`k^mofR1K2 zNByPHgi`QAsyF!JC6^lxM9yyXLC`J)H8(VK%7j*&{dOo$yL zqe(``E#coEZKwE9#Ld%KW$8!8uT%ZzClnT}UjcpBXLCt`I~n$mpNkSYMIHugHJl`0VBAO4Tc~6P z!_UYQY0ugs-@lNVzPsqM2v^sMI!zx%nN8}Q=*%?6MXBH1eSb@nBJ`;&3hKRh#|@!U zKP!eGHyH#s1K!1gG4dvf09f4p3;_TVYtA zyb=Gxi2ca%PrDOAu9H+wz_)X@KGvO=O*MdCFX*3Qq#YQlSuiu;^Y~*lT~L$auA0cn zY;%BlAkaNMByv$hDETc3;3Y(bm)AF;n4&%>d{He;dZdZ?nyy*T(^6PaAFtG~Wubu} zi&CNBg`;o5!r0v!xSm6-azT?Nljt2b*DG$YQ0}lgR}s*CQTXT{Y_1=>*5J}wA29<9 z?E$v})2*Yc5|J76_?`x|XqstU%D>jwecFAgGpkjZsk-n(#lnEfe)A5-&z% zvQagkp)l_xNJ=zF7;f<+D7kghf=}Vi#T3 zi=2kNSgMH`%~5|(Sl^V#wrZlB7&B=&;^x9B?(GeCg@*i&tu(YUt)$aP4v_$}-+HCX z0B>D!Odlprj#E2kB!-Vcl%Vs>rCX*<)akQLix=SuuA|VMhhTdt(n`?S671q0pv*($ zy2WFy>Xfp}gsVxwbdcheVucK=H!Xo~dY2_BJ^Q~eR^&(Cv2#JmsqrEo1bL3;Z`cT!IYFY^=NNeLM>&iO2VIVMGPKKKhl$Y!u3St6O%pz?!s zT6R$c57x@u^lt>MnUxX8v5HNEdI6emtF9a4e?{WF;osA77aA=|y=2t1(2X-27$cR= zx~l?C&&}x#A~1vfKr%u zdkcUF8pEcw+I}dvCAfszARlXyX>(W5c(}nO0WIZ81Fy@ z_u++GM7RO^N$o5lSAh*?nRM8;=w5JoECOR`a!wE|&gmKMD&9F!n&C#q-d^u5)>O2L zoJrtD7eUfD5z>+)py&?tp&>N(6<6=#lw{r*nAu2x&65dh3~9S(x#ka~>1BgZq~Xbe zC){8Yo7eanTtqD#LCTcQfQjXE(;;T07eDRafCx_zYP=A4_Wvj28YaKP3#Z4im9g{^ z>IKTuH88b@TI0gM*6YP-D_^A@Ak$0va}oN#SWk&OQg~R}JkXWJ=T(TK6LUs0sdQz= zz%2D7b92y1;@>#M`mmL1|1F|5at#k?1-Y9dU~ehGdAuVna3%ADT7+{J4fN67j32&9 lNlXOba!{Rk|Nz*`*A|$969&?-+i&i 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 literal 0 HcmV?d00001 diff --git a/opensaas-sh/blog/src/assets/roadmap/open-saas-used-by.webp b/opensaas-sh/blog/src/assets/roadmap/open-saas-used-by.webp new file mode 100644 index 0000000000000000000000000000000000000000..bd51df914ab3a1f3a39dd7f9fe3b650296bc59b3 GIT binary patch literal 45640 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 zDaHT*000000000000000000000000000000000000000000000000000000000000 H00000W;1fC literal 0 HcmV?d00001 diff --git a/opensaas-sh/blog/src/content/docs/blog/2025-11-21-open-saas-public-roadmap.mdx b/opensaas-sh/blog/src/content/docs/blog/2025-11-21-open-saas-public-roadmap.mdx index c220e6ad8..4916486c3 100644 --- a/opensaas-sh/blog/src/content/docs/blog/2025-11-21-open-saas-public-roadmap.mdx +++ b/opensaas-sh/blog/src/content/docs/blog/2025-11-21-open-saas-public-roadmap.mdx @@ -8,146 +8,186 @@ tags: - open-source authors: vince --- +import { Image } from 'astro:assets'; +import openSaasUsedBy from '../../../assets/roadmap/open-saas-used-by.webp'; +import openSaasRoadmap from '../../../assets/roadmap/open-saas-roadmap.webp'; +import epicExample from '../../../assets/roadmap/open-saas-epic.webp'; +import epicDetailExample from '../../../assets/roadmap/open-saas-epic-detail.webp'; +import aiReady from '../../../assets/roadmap/open-saas-ai-ready.webp'; import Tweet from '../../../components/Tweet.astro'; +import { Aside } from '@astrojs/starlight/components'; -We created Open SaaS to help developers launch full-featured SaaS products faster, without drowning in boilerplate or wrestling with fragmented tooling. As an open-source project built on top of Wasp, we also wanted this starter to be collaborative and community-driven, so we believe the roadmap should be open to the community as well. +We created Open SaaS to help developers launch full-featured SaaS products faster. As an open-source project powered by [Wasp](https://wasp.sh), we thought it was important to have two things: +1. A solid roadmap so that development is focused. +2. A roadmap that's public, so that the community can see what's coming next and get involved. -This document outlines where Open SaaS is heading next, the current epics that are guiding our work, and how you can get involved. +So we created just that. Behold, the [Open SaaS public roadmap](https://github.com/orgs/wasp-lang/projects/6)! +
+
+Open SaaS public roadmap + --- -## **Why a roadmap?** +## Why a roadmap? -Open SaaS is becoming a beast of its own. At 13k GitHub stars, and with constant feature additions and improvements, we thought it was time to make future development more organized, transparent, and community-driven. +Open SaaS is becoming a beast of its own. At 13k GitHub stars and growing, and with constant feature additions and improvements, we thought it was time to make future development more organized, transparent, and community-driven. + +
+ +Open SaaS is used by thousands of developers + +
With thousands of SaaS apps being deployed with Open SaaS, the needs of its users are also becoming more diverse. It would be impossible to address all of them, but we needed a way to track and prioritize the most important features and improvements. +Up until now, it was just me basically deciding which issues to work on and when. This was pretty inefficent to begin with, and then with more contributors joining the project, it became even more so. + The roadmap is thus a great way to make sense of all the different possible directions we can go in, help focus our efforts, and make development and contributions more meaningful. -## **How it works** +## How it works + +Open SaaS currently has about [100 open GitHub issues](https://github.com/wasp-lang/open-saas/issues), so it would be crazy to organize and track them all in the roadmap. -Open SaaS currently has over 100 open GitHub issues, so it would be crazy to track them all in the roadmap. +
+ +An example of an Epic in the Open SaaS roadmap + +
-So to make things more overseeable, we decided to implement the roadmap as a GitHub project that is a collection of epics (GitHub issues with "issue type" of "Epic"). +So to make things overseeable, the roadmap is a GitHub project with a collection of "Epics". An Epic is just a GitHub issue with a bunch of sub-issues. Each Epic has a status and a progress bar to show you how many of its sub-issues are completed. -No regular issues are allowed in it, only epics, of which we don't want too many. Each of these epics then has a number of subtasks which are normal Github issues. +
+ +An example of an Epic in the Open SaaS roadmap + +
-Therefore, the roadmap serves as a high-level overview of how we plan to execute on all those GitHub issues, as well as ideas of things we're thinking of planning but may not be prioritizing just yet. +No regular issues are allowed in it, only epics, of which we don't want too many. This way, its easy to understand the current themes and priorities of the project, as well as what's currently underway. --- -## **Guiding themes** +## Guiding themes + +When creating epics within the roadmap, there are a few categories we're focusing on at the moment. These guiding themes inform the epics we create, and help us make sure we're addressing the most important needs of our users. + +### 1. Real-world launch readiness -When creating epics within the roadmap, there are a few categories we're focuusing on at the mmoment. These guiding themes inform the epics we create, and help us make sure we're addressing the most important needs of our users. +Open SaaS should not just be a polished demo, or a flimsy template. It should be something you can deploy and scale. We want to make sure Open SaaS is a production-ready starter that can be used to build real-world SaaS products. +This means having a solid architecture, a clean codebase, and a set of features that are robust and ready to be used in production. -### **1. Real-world launch readiness** + -Open SaaS should not just be a polished demo. It should be something you can deploy and scale. We want to make sure Open SaaS is a production-ready platform that can be used to build real-world SaaS products. +### 2. Modularity & flexibility -### **2. Modularity & flexibility** +Different [auth methods](https://docs.opensaas.sh/guides/authentication/), [billing providers](https://docs.opensaas.sh/guides/payment-integrations/), file uploads, AI integrations, analytics, and more. We want to make sure Open SaaS is a flexible and modular platform that can be tailored to the needs of (almost) any SaaS product. +This means having the most essential features you need to launch your SaaS quickly, and being able to easily remove the things you don't. -Auth methods, billing providers, file uploads, AI integrations, analytics, and more. We want to make sure Open SaaS is a flexible and modular platform that can be tailored to the needs of (almost) any SaaS product. +### 3. AI-first developer experience -### **3. AI-first developer experience** +
+ +Open SaaS is AI-ready + +
-Whether you use Cursor, VSCode + Copilot, Claude, or others, Open SaaS should have top-notch code quality and be able to “explain itself” well to AI-driven coding tools, making it enjoyable to devlopm with in 2026 and beyond. +Whether you use Cursor, VSCode + Copilot, Claude, or others, Open SaaS should have top-notch code quality and be able to “explain itself” well to AI-driven coding tools, making it enjoyable to develop with in 2026 and beyond. We also want to provide demos and templates for AI-powered SaaS products, so you can get started building SaaS apps that leverage the newest technologies to create powerful and innovative products. -### **4. Community-powered evolution** + + +### 4. Community-powered evolution We want Open SaaS to be shaped by real feedback, real PRs, and real use cases. Roadmap ideas are only valuable when they reflect what people actually need. +So your [feedback and contributions](https://github.com/wasp-lang/open-saas/issues) are important to us! --- -## **What's in the roadmap** - -We just got finished with a major UI redesign, which we dubbed "Open SaaS v2.0". +## What's in the roadmap +We just got finished with a major UI redesign, which we dubbed "Open SaaS v2.0". Take a look at the announcement below. +With the new UI, based on [Shadcn UI](https://ui.shadcn.com/), finished and tucked away, we've turned back towards adding highly-requested features, and improving the codebase with smaller fixes. +### 1. Payment Provider Expansion -### **1. Payment Provider Expansion & Billing Flexibility** +Today, Open SaaS supports Stripe, Polar, and Lemon Squeezy as payment providers. It's super [easy to get started](https://docs.opensaas.sh/guides/payment-integrations/) with one -- just plug and play. -Today, Open SaaS supports Stripe and Lemon Squeezy. That’s great, but SaaS products vary wildly in payment needs. +**Upcoming features:** -**Upcoming focuses:** - -* Polar.sh integration (merged in #461) +* Polar.sh integration (merged in [#461](https://github.com/wasp-lang/open-saas/pull/461)) * Paddle, and additional gateways (especially regional-friendly options) -* Supporting usage-based billing and credit-based models -* Webhook templates & type-safe billing flows -* A richer billing dashboard (refunds, proration, invoices, receipts) +* Supporting up- or down-grading between different billing plans and models (proration) --- -### **2. AI-First Workflows & Templates** +### 2. AI-First Workflows & Templates -Open SaaS already includes a simple OpenAI integration, but we’re expanding far beyond that. +Open SaaS already includes a simple OpenAI integration example, but we’re looking to expand and improve it. **Coming soon:** -* Built-in support for function calling & server-side LLM tools -* Templates for AI-powered SaaS examples (agent dashboards, support bots, automation tools, internal copilots) -* Cursor / Claude prompt presets for smoother onboarding -* Scaffolds for hybrid UI + server AI agents -* Docs: “How to build an AI SaaS in a weekend” +* Exploring using Vercel's AI SDK within our demo app (issue [#567](https://github.com/wasp-lang/open-saas/issues/567)). +* Cursor / Claude prompt presets for smoother onboarding (issue [#579](https://github.com/wasp-lang/open-saas/issues/579)) +* Creating better docs and guides for AI-powered SaaS development --- -### **3. Wasp Alignment & Core Architecture Cleanup** +### 3. Core Development Improvements -To keep Open SaaS future-proof, we’ll maintain tight alignment with the Wasp framework. +We want to keep Open SaaS relevant and up-to-date with the latest trends, as well as with the latest Wasp (the framework it's built on) features and improvements . **Efforts underway:** -* Updating to the latest Wasp versions & features -* Improving folder structure and readability -* Reducing magic; increasing explicitness -* Enhancing generated code for clarity in LLM-assisted workflows -* Improving tests & stability for production deployments +* Improving OpenSaaS.sh development workflows (issue [#552](https://github.com/wasp-lang/open-saas/issues/552)) +* Improving e2e tests (issue [#558](https://github.com/wasp-lang/open-saas/issues/558)) --- -## **Current Status Snapshot** +# How to Participate - ---- - -# **How to Participate** +So that's just a quick overview of the current state of the roadmap. But we're not done yet! Open SaaS is community-driven — and we’d love your help. ### ⭐ Star the repo -This helps surface the project to more developers. +This is super easy and helps a ton! + +[https://github.com/wasp-lang/open-saas](https://github.com/wasp-lang/open-saas) ### 🧩 File issues or feature requests Especially around real-world SaaS requirements you’re running into. +[https://github.com/wasp-lang/open-saas/issues](https://github.com/wasp-lang/open-saas/issues) + ### 🔧 Contribute code If you’re interested in payments, dashboarding, AI workflows, or dev-experience improvements — we’ll happily support and guide. -### 🚀 Build with it - -The best feedback always comes from people deploying real products. +[https://github.com/orgs/wasp-lang/projects/6](https://github.com/orgs/wasp-lang/projects/6) -### 💬 Join the conversation +### 🚀 Build with it -Chat with us on Discord and share what you’re building, what’s missing, or what’s confusing. +The best feedback always comes from people deploying real products. +Drop us a line on [Discord](https://discord.com/invite/aCamt5wCpS) or [Twitter](https://x.com/wasplang) and let us know what you're building! --- -# **Roadmap Updates** +# Roadmap Updates -We’ll update this roadmap alongside major releases and aim for a quarterly revision cycle. +We’ll keep updating this roadmap alongside major releases and aim for a quarterly revision cycle. You can follow progress in the GitHub Project board: 👉 **[https://github.com/orgs/wasp-lang/projects/6](https://github.com/orgs/wasp-lang/projects/6)** -If a major change lands, we’ll post a blog update on **opensaas.sh** and cross-link from the Wasp blog. - +See you there!