diff --git a/app/.gitignore b/app/.gitignore index 61f96b0..c7ca70f 100644 --- a/app/.gitignore +++ b/app/.gitignore @@ -8,8 +8,8 @@ pnpm-debug.log* lerna-debug.log* node_modules -dist -dist-ssr +.next +out *.local # Editor directories and files diff --git a/app/PolicyEngine_POSE_Presentation.pptx b/app/PolicyEngine_POSE_Presentation.pptx new file mode 100644 index 0000000..89bd619 Binary files /dev/null and b/app/PolicyEngine_POSE_Presentation.pptx differ diff --git a/app/bun.lock b/app/bun.lock index 71166df..c3bd231 100644 --- a/app/bun.lock +++ b/app/bun.lock @@ -9,6 +9,7 @@ "date-fns": "^4.1.0", "framer-motion": "^12.27.1", "lucide-react": "^0.562.0", + "next": "^15.3.4", "pptxgenjs": "^4.0.1", "react": "^19.2.0", "react-dom": "^19.2.0", @@ -16,25 +17,22 @@ }, "devDependencies": { "@eslint/js": "^9.39.1", - "@tailwindcss/forms": "0.5", + "@tailwindcss/postcss": "^4.1.8", "@testing-library/jest-dom": "^6.9.1", "@testing-library/react": "^16.3.2", "@testing-library/user-event": "^14.6.1", "@types/node": "^24.10.1", "@types/react": "^19.2.5", "@types/react-dom": "^19.2.3", - "@vitejs/plugin-react": "^5.1.1", - "autoprefixer": "^10.4.23", + "@vitejs/plugin-react": "^5.1.4", "eslint": "^9.39.1", "eslint-plugin-react-hooks": "^7.0.1", - "eslint-plugin-react-refresh": "^0.4.24", "globals": "^16.5.0", "jsdom": "^27.4.0", - "postcss": "^8.5.6", - "tailwindcss": "3", + "puppeteer": "^24.38.0", + "tailwindcss": "^4.1.8", "typescript": "~5.9.3", "typescript-eslint": "^8.46.4", - "vite": "^7.2.4", "vitest": "^4.0.17", }, }, @@ -56,9 +54,9 @@ "@babel/compat-data": ["@babel/compat-data@7.28.6", "", {}, "sha512-2lfu57JtzctfIrcGMz992hyLlByuzgIk58+hhGCxjKZ3rWI82NnVLjXcaTqkI2NvlcvOskZaiZ5kjUALo3Lpxg=="], - "@babel/core": ["@babel/core@7.28.6", "", { "dependencies": { "@babel/code-frame": "^7.28.6", "@babel/generator": "^7.28.6", "@babel/helper-compilation-targets": "^7.28.6", "@babel/helper-module-transforms": "^7.28.6", "@babel/helpers": "^7.28.6", "@babel/parser": "^7.28.6", "@babel/template": "^7.28.6", "@babel/traverse": "^7.28.6", "@babel/types": "^7.28.6", "@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" } }, "sha512-H3mcG6ZDLTlYfaSNi0iOKkigqMFvkTKlGUYlD8GW7nNOYRrevuA46iTypPyv+06V3fEmvvazfntkBU34L0azAw=="], + "@babel/core": ["@babel/core@7.29.0", "", { "dependencies": { "@babel/code-frame": "^7.29.0", "@babel/generator": "^7.29.0", "@babel/helper-compilation-targets": "^7.28.6", "@babel/helper-module-transforms": "^7.28.6", "@babel/helpers": "^7.28.6", "@babel/parser": "^7.29.0", "@babel/template": "^7.28.6", "@babel/traverse": "^7.29.0", "@babel/types": "^7.29.0", "@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" } }, "sha512-CGOfOJqWjg2qW/Mb6zNsDm+u5vFQ8DxXfbM09z69p5Z6+mE1ikP2jUXw+j42Pf1XTYED2Rni5f95npYeuwMDQA=="], - "@babel/generator": ["@babel/generator@7.28.6", "", { "dependencies": { "@babel/parser": "^7.28.6", "@babel/types": "^7.28.6", "@jridgewell/gen-mapping": "^0.3.12", "@jridgewell/trace-mapping": "^0.3.28", "jsesc": "^3.0.2" } }, "sha512-lOoVRwADj8hjf7al89tvQ2a1lf53Z+7tiXMgpZJL3maQPDxh0DgLMN62B2MKUOFcoodBHLMbDM6WAbKgNy5Suw=="], + "@babel/generator": ["@babel/generator@7.29.1", "", { "dependencies": { "@babel/parser": "^7.29.0", "@babel/types": "^7.29.0", "@jridgewell/gen-mapping": "^0.3.12", "@jridgewell/trace-mapping": "^0.3.28", "jsesc": "^3.0.2" } }, "sha512-qsaF+9Qcm2Qv8SRIMMscAvG4O3lJ0F1GuMo5HR/Bp02LopNgnZBC/EkbevHFeGs4ls/oPz9v+Bsmzbkbe+0dUw=="], "@babel/helper-compilation-targets": ["@babel/helper-compilation-targets@7.28.6", "", { "dependencies": { "@babel/compat-data": "^7.28.6", "@babel/helper-validator-option": "^7.27.1", "browserslist": "^4.24.0", "lru-cache": "^5.1.1", "semver": "^6.3.1" } }, "sha512-JYtls3hqi15fcx5GaSNL7SCTJ2MNmjrkHXg4FSpOA/grxK8KwyZ5bubHsCq8FXCkua6xhuaaBit+3b7+VZRfcA=="], @@ -88,9 +86,9 @@ "@babel/template": ["@babel/template@7.28.6", "", { "dependencies": { "@babel/code-frame": "^7.28.6", "@babel/parser": "^7.28.6", "@babel/types": "^7.28.6" } }, "sha512-YA6Ma2KsCdGb+WC6UpBVFJGXL58MDA6oyONbjyF/+5sBgxY/dwkhLogbMT2GXXyU84/IhRw/2D1Os1B/giz+BQ=="], - "@babel/traverse": ["@babel/traverse@7.28.6", "", { "dependencies": { "@babel/code-frame": "^7.28.6", "@babel/generator": "^7.28.6", "@babel/helper-globals": "^7.28.0", "@babel/parser": "^7.28.6", "@babel/template": "^7.28.6", "@babel/types": "^7.28.6", "debug": "^4.3.1" } }, "sha512-fgWX62k02qtjqdSNTAGxmKYY/7FSL9WAS1o2Hu5+I5m9T0yxZzr4cnrfXQ/MX0rIifthCSs6FKTlzYbJcPtMNg=="], + "@babel/traverse": ["@babel/traverse@7.29.0", "", { "dependencies": { "@babel/code-frame": "^7.29.0", "@babel/generator": "^7.29.0", "@babel/helper-globals": "^7.28.0", "@babel/parser": "^7.29.0", "@babel/template": "^7.28.6", "@babel/types": "^7.29.0", "debug": "^4.3.1" } }, "sha512-4HPiQr0X7+waHfyXPZpWPfWL/J7dcN1mx9gL6WdQVMbPnF3+ZhSMs8tCxN7oHddJE9fhNE7+lxdnlyemKfJRuA=="], - "@babel/types": ["@babel/types@7.28.6", "", { "dependencies": { "@babel/helper-string-parser": "^7.27.1", "@babel/helper-validator-identifier": "^7.28.5" } }, "sha512-0ZrskXVEHSWIqZM/sQZ4EV3jZJXRkio/WCxaqKZP1g//CEWEPSfeZFcms4XeKBCHU0ZKnIkdJeU/kF+eRp5lBg=="], + "@babel/types": ["@babel/types@7.29.0", "", { "dependencies": { "@babel/helper-string-parser": "^7.27.1", "@babel/helper-validator-identifier": "^7.28.5" } }, "sha512-LwdZHpScM4Qz8Xw2iKSzS+cfglZzJGvofQICy7W7v4caru4EaAmyUuO6BGrbyQ2mYV11W0U8j5mBhd14dd3B0A=="], "@csstools/color-helpers": ["@csstools/color-helpers@5.1.0", "", {}, "sha512-S11EXWJyy0Mz5SYvRmY8nJYTFFd1LCNV+7cXyAgQtOOuzb4EsgfqDufL+9esx72/eLhsRdGZwaldu/h+E4t4BA=="], @@ -104,6 +102,8 @@ "@csstools/css-tokenizer": ["@csstools/css-tokenizer@3.0.4", "", {}, "sha512-Vd/9EVDiu6PPJt9yAh6roZP6El1xHrdvIVGjyBsHR0RYwNHgL7FJPyIIW4fANJNG6FtyZfvlRPpFI4ZM/lubvw=="], + "@emnapi/runtime": ["@emnapi/runtime@1.8.1", "", { "dependencies": { "tslib": "^2.4.0" } }, "sha512-mehfKSMWjjNol8659Z8KxEMrdSJDDot5SXMq00dM8BN4o+CLNXQ0xH2V7EchNHV4RmbZLmmPdEaXZc5H2FXmDg=="], + "@esbuild/aix-ppc64": ["@esbuild/aix-ppc64@0.27.2", "", { "os": "aix", "cpu": "ppc64" }, "sha512-GZMB+a0mOMZs4MpDbj8RJp4cw+w1WV5NYD6xzgvzUJ5Ek2jerwfO2eADyI6ExDSUED+1X8aMbegahsJi+8mgpw=="], "@esbuild/android-arm": ["@esbuild/android-arm@0.27.2", "", { "os": "android", "cpu": "arm" }, "sha512-DVNI8jlPa7Ujbr1yjU2PfUSRtAUZPG9I1RwW4F4xFB1Imiu2on0ADiI/c3td+KmDtVKNbi+nffGDQMfcIMkwIA=="], @@ -184,6 +184,56 @@ "@humanwhocodes/retry": ["@humanwhocodes/retry@0.4.3", "", {}, "sha512-bV0Tgo9K4hfPCek+aMAn81RppFKv2ySDQeMoSZuvTASywNTnVJCArCZE2FWqpvIatKu7VMRLWlR1EazvVhDyhQ=="], + "@img/colour": ["@img/colour@1.1.0", "", {}, "sha512-Td76q7j57o/tLVdgS746cYARfSyxk8iEfRxewL9h4OMzYhbW4TAcppl0mT4eyqXddh6L/jwoM75mo7ixa/pCeQ=="], + + "@img/sharp-darwin-arm64": ["@img/sharp-darwin-arm64@0.34.5", "", { "optionalDependencies": { "@img/sharp-libvips-darwin-arm64": "1.2.4" }, "os": "darwin", "cpu": "arm64" }, "sha512-imtQ3WMJXbMY4fxb/Ndp6HBTNVtWCUI0WdobyheGf5+ad6xX8VIDO8u2xE4qc/fr08CKG/7dDseFtn6M6g/r3w=="], + + "@img/sharp-darwin-x64": ["@img/sharp-darwin-x64@0.34.5", "", { "optionalDependencies": { "@img/sharp-libvips-darwin-x64": "1.2.4" }, "os": "darwin", "cpu": "x64" }, "sha512-YNEFAF/4KQ/PeW0N+r+aVVsoIY0/qxxikF2SWdp+NRkmMB7y9LBZAVqQ4yhGCm/H3H270OSykqmQMKLBhBJDEw=="], + + "@img/sharp-libvips-darwin-arm64": ["@img/sharp-libvips-darwin-arm64@1.2.4", "", { "os": "darwin", "cpu": "arm64" }, "sha512-zqjjo7RatFfFoP0MkQ51jfuFZBnVE2pRiaydKJ1G/rHZvnsrHAOcQALIi9sA5co5xenQdTugCvtb1cuf78Vf4g=="], + + "@img/sharp-libvips-darwin-x64": ["@img/sharp-libvips-darwin-x64@1.2.4", "", { "os": "darwin", "cpu": "x64" }, "sha512-1IOd5xfVhlGwX+zXv2N93k0yMONvUlANylbJw1eTah8K/Jtpi15KC+WSiaX/nBmbm2HxRM1gZ0nSdjSsrZbGKg=="], + + "@img/sharp-libvips-linux-arm": ["@img/sharp-libvips-linux-arm@1.2.4", "", { "os": "linux", "cpu": "arm" }, "sha512-bFI7xcKFELdiNCVov8e44Ia4u2byA+l3XtsAj+Q8tfCwO6BQ8iDojYdvoPMqsKDkuoOo+X6HZA0s0q11ANMQ8A=="], + + "@img/sharp-libvips-linux-arm64": ["@img/sharp-libvips-linux-arm64@1.2.4", "", { "os": "linux", "cpu": "arm64" }, "sha512-excjX8DfsIcJ10x1Kzr4RcWe1edC9PquDRRPx3YVCvQv+U5p7Yin2s32ftzikXojb1PIFc/9Mt28/y+iRklkrw=="], + + "@img/sharp-libvips-linux-ppc64": ["@img/sharp-libvips-linux-ppc64@1.2.4", "", { "os": "linux", "cpu": "ppc64" }, "sha512-FMuvGijLDYG6lW+b/UvyilUWu5Ayu+3r2d1S8notiGCIyYU/76eig1UfMmkZ7vwgOrzKzlQbFSuQfgm7GYUPpA=="], + + "@img/sharp-libvips-linux-riscv64": ["@img/sharp-libvips-linux-riscv64@1.2.4", "", { "os": "linux", "cpu": "none" }, "sha512-oVDbcR4zUC0ce82teubSm+x6ETixtKZBh/qbREIOcI3cULzDyb18Sr/Wcyx7NRQeQzOiHTNbZFF1UwPS2scyGA=="], + + "@img/sharp-libvips-linux-s390x": ["@img/sharp-libvips-linux-s390x@1.2.4", "", { "os": "linux", "cpu": "s390x" }, "sha512-qmp9VrzgPgMoGZyPvrQHqk02uyjA0/QrTO26Tqk6l4ZV0MPWIW6LTkqOIov+J1yEu7MbFQaDpwdwJKhbJvuRxQ=="], + + "@img/sharp-libvips-linux-x64": ["@img/sharp-libvips-linux-x64@1.2.4", "", { "os": "linux", "cpu": "x64" }, "sha512-tJxiiLsmHc9Ax1bz3oaOYBURTXGIRDODBqhveVHonrHJ9/+k89qbLl0bcJns+e4t4rvaNBxaEZsFtSfAdquPrw=="], + + "@img/sharp-libvips-linuxmusl-arm64": ["@img/sharp-libvips-linuxmusl-arm64@1.2.4", "", { "os": "linux", "cpu": "arm64" }, "sha512-FVQHuwx1IIuNow9QAbYUzJ+En8KcVm9Lk5+uGUQJHaZmMECZmOlix9HnH7n1TRkXMS0pGxIJokIVB9SuqZGGXw=="], + + "@img/sharp-libvips-linuxmusl-x64": ["@img/sharp-libvips-linuxmusl-x64@1.2.4", "", { "os": "linux", "cpu": "x64" }, "sha512-+LpyBk7L44ZIXwz/VYfglaX/okxezESc6UxDSoyo2Ks6Jxc4Y7sGjpgU9s4PMgqgjj1gZCylTieNamqA1MF7Dg=="], + + "@img/sharp-linux-arm": ["@img/sharp-linux-arm@0.34.5", "", { "optionalDependencies": { "@img/sharp-libvips-linux-arm": "1.2.4" }, "os": "linux", "cpu": "arm" }, "sha512-9dLqsvwtg1uuXBGZKsxem9595+ujv0sJ6Vi8wcTANSFpwV/GONat5eCkzQo/1O6zRIkh0m/8+5BjrRr7jDUSZw=="], + + "@img/sharp-linux-arm64": ["@img/sharp-linux-arm64@0.34.5", "", { "optionalDependencies": { "@img/sharp-libvips-linux-arm64": "1.2.4" }, "os": "linux", "cpu": "arm64" }, "sha512-bKQzaJRY/bkPOXyKx5EVup7qkaojECG6NLYswgktOZjaXecSAeCWiZwwiFf3/Y+O1HrauiE3FVsGxFg8c24rZg=="], + + "@img/sharp-linux-ppc64": ["@img/sharp-linux-ppc64@0.34.5", "", { "optionalDependencies": { "@img/sharp-libvips-linux-ppc64": "1.2.4" }, "os": "linux", "cpu": "ppc64" }, "sha512-7zznwNaqW6YtsfrGGDA6BRkISKAAE1Jo0QdpNYXNMHu2+0dTrPflTLNkpc8l7MUP5M16ZJcUvysVWWrMefZquA=="], + + "@img/sharp-linux-riscv64": ["@img/sharp-linux-riscv64@0.34.5", "", { "optionalDependencies": { "@img/sharp-libvips-linux-riscv64": "1.2.4" }, "os": "linux", "cpu": "none" }, "sha512-51gJuLPTKa7piYPaVs8GmByo7/U7/7TZOq+cnXJIHZKavIRHAP77e3N2HEl3dgiqdD/w0yUfiJnII77PuDDFdw=="], + + "@img/sharp-linux-s390x": ["@img/sharp-linux-s390x@0.34.5", "", { "optionalDependencies": { "@img/sharp-libvips-linux-s390x": "1.2.4" }, "os": "linux", "cpu": "s390x" }, "sha512-nQtCk0PdKfho3eC5MrbQoigJ2gd1CgddUMkabUj+rBevs8tZ2cULOx46E7oyX+04WGfABgIwmMC0VqieTiR4jg=="], + + "@img/sharp-linux-x64": ["@img/sharp-linux-x64@0.34.5", "", { "optionalDependencies": { "@img/sharp-libvips-linux-x64": "1.2.4" }, "os": "linux", "cpu": "x64" }, "sha512-MEzd8HPKxVxVenwAa+JRPwEC7QFjoPWuS5NZnBt6B3pu7EG2Ge0id1oLHZpPJdn3OQK+BQDiw9zStiHBTJQQQQ=="], + + "@img/sharp-linuxmusl-arm64": ["@img/sharp-linuxmusl-arm64@0.34.5", "", { "optionalDependencies": { "@img/sharp-libvips-linuxmusl-arm64": "1.2.4" }, "os": "linux", "cpu": "arm64" }, "sha512-fprJR6GtRsMt6Kyfq44IsChVZeGN97gTD331weR1ex1c1rypDEABN6Tm2xa1wE6lYb5DdEnk03NZPqA7Id21yg=="], + + "@img/sharp-linuxmusl-x64": ["@img/sharp-linuxmusl-x64@0.34.5", "", { "optionalDependencies": { "@img/sharp-libvips-linuxmusl-x64": "1.2.4" }, "os": "linux", "cpu": "x64" }, "sha512-Jg8wNT1MUzIvhBFxViqrEhWDGzqymo3sV7z7ZsaWbZNDLXRJZoRGrjulp60YYtV4wfY8VIKcWidjojlLcWrd8Q=="], + + "@img/sharp-wasm32": ["@img/sharp-wasm32@0.34.5", "", { "dependencies": { "@emnapi/runtime": "^1.7.0" }, "cpu": "none" }, "sha512-OdWTEiVkY2PHwqkbBI8frFxQQFekHaSSkUIJkwzclWZe64O1X4UlUjqqqLaPbUpMOQk6FBu/HtlGXNblIs0huw=="], + + "@img/sharp-win32-arm64": ["@img/sharp-win32-arm64@0.34.5", "", { "os": "win32", "cpu": "arm64" }, "sha512-WQ3AgWCWYSb2yt+IG8mnC6Jdk9Whs7O0gxphblsLvdhSpSTtmu69ZG1Gkb6NuvxsNACwiPV6cNSZNzt0KPsw7g=="], + + "@img/sharp-win32-ia32": ["@img/sharp-win32-ia32@0.34.5", "", { "os": "win32", "cpu": "ia32" }, "sha512-FV9m/7NmeCmSHDD5j4+4pNI8Cp3aW+JvLoXcTUo0IqyjSfAZJ8dIUmijx1qaJsIiU+Hosw6xM5KijAWRJCSgNg=="], + + "@img/sharp-win32-x64": ["@img/sharp-win32-x64@0.34.5", "", { "os": "win32", "cpu": "x64" }, "sha512-+29YMsqY2/9eFEiW93eqWnuLcWcufowXewwSNIT6UwZdUUCrM3oFjMWH/Z6/TMmb4hlFenmfAVbpWeup2jryCw=="], + "@jridgewell/gen-mapping": ["@jridgewell/gen-mapping@0.3.13", "", { "dependencies": { "@jridgewell/sourcemap-codec": "^1.5.0", "@jridgewell/trace-mapping": "^0.3.24" } }, "sha512-2kkt/7niJ6MgEPxF0bYdQ6etZaA+fQvDcLKckhy1yIQOzaoKjBBjSj63/aLVjYE3qhRt5dvM+uUyfCg6UKCBbA=="], "@jridgewell/remapping": ["@jridgewell/remapping@2.3.5", "", { "dependencies": { "@jridgewell/gen-mapping": "^0.3.5", "@jridgewell/trace-mapping": "^0.3.24" } }, "sha512-LI9u/+laYG4Ds1TDKSJW2YPrIlcVYOwi2fUC6xB43lueCjgxV4lffOCZCtYFiH6TNOX+tQKXx97T4IKHbhyHEQ=="], @@ -194,15 +244,29 @@ "@jridgewell/trace-mapping": ["@jridgewell/trace-mapping@0.3.31", "", { "dependencies": { "@jridgewell/resolve-uri": "^3.1.0", "@jridgewell/sourcemap-codec": "^1.4.14" } }, "sha512-zzNR+SdQSDJzc8joaeP8QQoCQr8NuYx2dIIytl1QeBEZHJ9uW6hebsrYgbz8hJwUQao3TWCMtmfV8Nu1twOLAw=="], - "@nodelib/fs.scandir": ["@nodelib/fs.scandir@2.1.5", "", { "dependencies": { "@nodelib/fs.stat": "2.0.5", "run-parallel": "^1.1.9" } }, "sha512-vq24Bq3ym5HEQm2NKCr3yXDwjc7vTsEThRDnkp2DK9p1uqLR+DHurm/NOTo0KG7HYHU7eppKZj3MyqYuMBf62g=="], + "@next/env": ["@next/env@15.5.12", "", {}, "sha512-pUvdJN1on574wQHjaBfNGDt9Mz5utDSZFsIIQkMzPgNS8ZvT4H2mwOrOIClwsQOb6EGx5M76/CZr6G8i6pSpLg=="], + + "@next/swc-darwin-arm64": ["@next/swc-darwin-arm64@15.5.12", "", { "os": "darwin", "cpu": "arm64" }, "sha512-RnRjBtH8S8eXCpUNkQ+543DUc7ys8y15VxmFU9HRqlo9BG3CcBUiwNtF8SNoi2xvGCVJq1vl2yYq+3oISBS0Zg=="], + + "@next/swc-darwin-x64": ["@next/swc-darwin-x64@15.5.12", "", { "os": "darwin", "cpu": "x64" }, "sha512-nqa9/7iQlboF1EFtNhWxQA0rQstmYRSBGxSM6g3GxvxHxcoeqVXfGNr9stJOme674m2V7r4E3+jEhhGvSQhJRA=="], + + "@next/swc-linux-arm64-gnu": ["@next/swc-linux-arm64-gnu@15.5.12", "", { "os": "linux", "cpu": "arm64" }, "sha512-dCzAjqhDHwmoB2M4eYfVKqXs99QdQxNQVpftvP1eGVppamXh/OkDAwV737Zr0KPXEqRUMN4uCjh6mjO+XtF3Mw=="], + + "@next/swc-linux-arm64-musl": ["@next/swc-linux-arm64-musl@15.5.12", "", { "os": "linux", "cpu": "arm64" }, "sha512-+fpGWvQiITgf7PUtbWY1H7qUSnBZsPPLyyq03QuAKpVoTy/QUx1JptEDTQMVvQhvizCEuNLEeghrQUyXQOekuw=="], - "@nodelib/fs.stat": ["@nodelib/fs.stat@2.0.5", "", {}, "sha512-RkhPPp2zrqDAQA/2jNhnztcPAlv64XdhIp7a7454A5ovI7Bukxgt7MX7udwAu3zg1DcpPU0rz3VV1SeaqvY4+A=="], + "@next/swc-linux-x64-gnu": ["@next/swc-linux-x64-gnu@15.5.12", "", { "os": "linux", "cpu": "x64" }, "sha512-jSLvgdRRL/hrFAPqEjJf1fFguC719kmcptjNVDJl26BnJIpjL3KH5h6mzR4mAweociLQaqvt4UyzfbFjgAdDcw=="], - "@nodelib/fs.walk": ["@nodelib/fs.walk@1.2.8", "", { "dependencies": { "@nodelib/fs.scandir": "2.1.5", "fastq": "^1.6.0" } }, "sha512-oGB+UxlgWcgQkgwo8GcEGwemoTFt3FIO9ababBmaGwXIoBKZ+GTy0pP185beGg7Llih/NSHSV2XAs1lnznocSg=="], + "@next/swc-linux-x64-musl": ["@next/swc-linux-x64-musl@15.5.12", "", { "os": "linux", "cpu": "x64" }, "sha512-/uaF0WfmYqQgLfPmN6BvULwxY0dufI2mlN2JbOKqqceZh1G4hjREyi7pg03zjfyS6eqNemHAZPSoP84x17vo6w=="], + + "@next/swc-win32-arm64-msvc": ["@next/swc-win32-arm64-msvc@15.5.12", "", { "os": "win32", "cpu": "arm64" }, "sha512-xhsL1OvQSfGmlL5RbOmU+FV120urrgFpYLq+6U8C6KIym32gZT6XF/SDE92jKzzlPWskkbjOKCpqk5m4i8PEfg=="], + + "@next/swc-win32-x64-msvc": ["@next/swc-win32-x64-msvc@15.5.12", "", { "os": "win32", "cpu": "x64" }, "sha512-Z1Dh6lhFkxvBDH1FoW6OU/L6prYwPSlwjLiZkExIAh8fbP6iI/M7iGTQAJPYJ9YFlWobCZ1PHbchFhFYb2ADkw=="], + + "@puppeteer/browsers": ["@puppeteer/browsers@2.13.0", "", { "dependencies": { "debug": "^4.4.3", "extract-zip": "^2.0.1", "progress": "^2.0.3", "proxy-agent": "^6.5.0", "semver": "^7.7.4", "tar-fs": "^3.1.1", "yargs": "^17.7.2" }, "bin": { "browsers": "lib/cjs/main-cli.js" } }, "sha512-46BZJYJjc/WwmKjsvDFykHtXrtomsCIrwYQPOP7VfMJoZY2bsDF9oROBABR3paDjDcmkUye1Pb1BqdcdiipaWA=="], "@reduxjs/toolkit": ["@reduxjs/toolkit@2.11.2", "", { "dependencies": { "@standard-schema/spec": "^1.0.0", "@standard-schema/utils": "^0.3.0", "immer": "^11.0.0", "redux": "^5.0.1", "redux-thunk": "^3.1.0", "reselect": "^5.1.0" }, "peerDependencies": { "react": "^16.9.0 || ^17.0.0 || ^18 || ^19", "react-redux": "^7.2.1 || ^8.1.3 || ^9.0.0" }, "optionalPeers": ["react", "react-redux"] }, "sha512-Kd6kAHTA6/nUpp8mySPqj3en3dm0tdMIgbttnQ1xFMVpufoj+ADi8pXLBsd4xzTRHQa7t/Jv8W5UnCuW4kuWMQ=="], - "@rolldown/pluginutils": ["@rolldown/pluginutils@1.0.0-beta.53", "", {}, "sha512-vENRlFU4YbrwVqNDZ7fLvy+JR1CRkyr01jhSiDpE1u6py3OMzQfztQU2jxykW3ALNxO4kSlqIDeYyD0Y9RcQeQ=="], + "@rolldown/pluginutils": ["@rolldown/pluginutils@1.0.0-rc.3", "", {}, "sha512-eybk3TjzzzV97Dlj5c+XrBFW57eTNhzod66y9HrBlzJ6NsCrWCp/2kaPS3K9wJmurBC0Tdw4yPjXKZqlznim3Q=="], "@rollup/rollup-android-arm-eabi": ["@rollup/rollup-android-arm-eabi@4.55.2", "", { "os": "android", "cpu": "arm" }, "sha512-21J6xzayjy3O6NdnlO6aXi/urvSRjm6nCI6+nF6ra2YofKruGixN9kfT+dt55HVNwfDmpDHJcaS3JuP/boNnlA=="], @@ -270,7 +334,37 @@ "@supabase/supabase-js": ["@supabase/supabase-js@2.90.1", "", { "dependencies": { "@supabase/auth-js": "2.90.1", "@supabase/functions-js": "2.90.1", "@supabase/postgrest-js": "2.90.1", "@supabase/realtime-js": "2.90.1", "@supabase/storage-js": "2.90.1" } }, "sha512-U8KaKGLUgTIFHtwEW1dgw1gK7XrdpvvYo7nzzqPx721GqPe8WZbAiLh/hmyKLGBYQ/mmQNr20vU9tWSDZpii3w=="], - "@tailwindcss/forms": ["@tailwindcss/forms@0.5.11", "", { "dependencies": { "mini-svg-data-uri": "^1.2.3" }, "peerDependencies": { "tailwindcss": ">=3.0.0 || >= 3.0.0-alpha.1 || >= 4.0.0-alpha.20 || >= 4.0.0-beta.1" } }, "sha512-h9wegbZDPurxG22xZSoWtdzc41/OlNEUQERNqI/0fOwa2aVlWGu7C35E/x6LDyD3lgtztFSSjKZyuVM0hxhbgA=="], + "@swc/helpers": ["@swc/helpers@0.5.15", "", { "dependencies": { "tslib": "^2.8.0" } }, "sha512-JQ5TuMi45Owi4/BIMAJBoSQoOJu12oOk/gADqlcUL9JEdHB8vyjUSsxqeNXnmXHjYKMi2WcYtezGEEhqUI/E2g=="], + + "@tailwindcss/node": ["@tailwindcss/node@4.2.1", "", { "dependencies": { "@jridgewell/remapping": "^2.3.5", "enhanced-resolve": "^5.19.0", "jiti": "^2.6.1", "lightningcss": "1.31.1", "magic-string": "^0.30.21", "source-map-js": "^1.2.1", "tailwindcss": "4.2.1" } }, "sha512-jlx6sLk4EOwO6hHe1oCGm1Q4AN/s0rSrTTPBGPM0/RQ6Uylwq17FuU8IeJJKEjtc6K6O07zsvP+gDO6MMWo7pg=="], + + "@tailwindcss/oxide": ["@tailwindcss/oxide@4.2.1", "", { "optionalDependencies": { "@tailwindcss/oxide-android-arm64": "4.2.1", "@tailwindcss/oxide-darwin-arm64": "4.2.1", "@tailwindcss/oxide-darwin-x64": "4.2.1", "@tailwindcss/oxide-freebsd-x64": "4.2.1", "@tailwindcss/oxide-linux-arm-gnueabihf": "4.2.1", "@tailwindcss/oxide-linux-arm64-gnu": "4.2.1", "@tailwindcss/oxide-linux-arm64-musl": "4.2.1", "@tailwindcss/oxide-linux-x64-gnu": "4.2.1", "@tailwindcss/oxide-linux-x64-musl": "4.2.1", "@tailwindcss/oxide-wasm32-wasi": "4.2.1", "@tailwindcss/oxide-win32-arm64-msvc": "4.2.1", "@tailwindcss/oxide-win32-x64-msvc": "4.2.1" } }, "sha512-yv9jeEFWnjKCI6/T3Oq50yQEOqmpmpfzG1hcZsAOaXFQPfzWprWrlHSdGPEF3WQTi8zu8ohC9Mh9J470nT5pUw=="], + + "@tailwindcss/oxide-android-arm64": ["@tailwindcss/oxide-android-arm64@4.2.1", "", { "os": "android", "cpu": "arm64" }, "sha512-eZ7G1Zm5EC8OOKaesIKuw77jw++QJ2lL9N+dDpdQiAB/c/B2wDh0QPFHbkBVrXnwNugvrbJFk1gK2SsVjwWReg=="], + + "@tailwindcss/oxide-darwin-arm64": ["@tailwindcss/oxide-darwin-arm64@4.2.1", "", { "os": "darwin", "cpu": "arm64" }, "sha512-q/LHkOstoJ7pI1J0q6djesLzRvQSIfEto148ppAd+BVQK0JYjQIFSK3JgYZJa+Yzi0DDa52ZsQx2rqytBnf8Hw=="], + + "@tailwindcss/oxide-darwin-x64": ["@tailwindcss/oxide-darwin-x64@4.2.1", "", { "os": "darwin", "cpu": "x64" }, "sha512-/f/ozlaXGY6QLbpvd/kFTro2l18f7dHKpB+ieXz+Cijl4Mt9AI2rTrpq7V+t04nK+j9XBQHnSMdeQRhbGyt6fw=="], + + "@tailwindcss/oxide-freebsd-x64": ["@tailwindcss/oxide-freebsd-x64@4.2.1", "", { "os": "freebsd", "cpu": "x64" }, "sha512-5e/AkgYJT/cpbkys/OU2Ei2jdETCLlifwm7ogMC7/hksI2fC3iiq6OcXwjibcIjPung0kRtR3TxEITkqgn0TcA=="], + + "@tailwindcss/oxide-linux-arm-gnueabihf": ["@tailwindcss/oxide-linux-arm-gnueabihf@4.2.1", "", { "os": "linux", "cpu": "arm" }, "sha512-Uny1EcVTTmerCKt/1ZuKTkb0x8ZaiuYucg2/kImO5A5Y/kBz41/+j0gxUZl+hTF3xkWpDmHX+TaWhOtba2Fyuw=="], + + "@tailwindcss/oxide-linux-arm64-gnu": ["@tailwindcss/oxide-linux-arm64-gnu@4.2.1", "", { "os": "linux", "cpu": "arm64" }, "sha512-CTrwomI+c7n6aSSQlsPL0roRiNMDQ/YzMD9EjcR+H4f0I1SQ8QqIuPnsVp7QgMkC1Qi8rtkekLkOFjo7OlEFRQ=="], + + "@tailwindcss/oxide-linux-arm64-musl": ["@tailwindcss/oxide-linux-arm64-musl@4.2.1", "", { "os": "linux", "cpu": "arm64" }, "sha512-WZA0CHRL/SP1TRbA5mp9htsppSEkWuQ4KsSUumYQnyl8ZdT39ntwqmz4IUHGN6p4XdSlYfJwM4rRzZLShHsGAQ=="], + + "@tailwindcss/oxide-linux-x64-gnu": ["@tailwindcss/oxide-linux-x64-gnu@4.2.1", "", { "os": "linux", "cpu": "x64" }, "sha512-qMFzxI2YlBOLW5PhblzuSWlWfwLHaneBE0xHzLrBgNtqN6mWfs+qYbhryGSXQjFYB1Dzf5w+LN5qbUTPhW7Y5g=="], + + "@tailwindcss/oxide-linux-x64-musl": ["@tailwindcss/oxide-linux-x64-musl@4.2.1", "", { "os": "linux", "cpu": "x64" }, "sha512-5r1X2FKnCMUPlXTWRYpHdPYUY6a1Ar/t7P24OuiEdEOmms5lyqjDRvVY1yy9Rmioh+AunQ0rWiOTPE8F9A3v5g=="], + + "@tailwindcss/oxide-wasm32-wasi": ["@tailwindcss/oxide-wasm32-wasi@4.2.1", "", { "dependencies": { "@emnapi/core": "^1.8.1", "@emnapi/runtime": "^1.8.1", "@emnapi/wasi-threads": "^1.1.0", "@napi-rs/wasm-runtime": "^1.1.1", "@tybys/wasm-util": "^0.10.1", "tslib": "^2.8.1" }, "cpu": "none" }, "sha512-MGFB5cVPvshR85MTJkEvqDUnuNoysrsRxd6vnk1Lf2tbiqNlXpHYZqkqOQalydienEWOHHFyyuTSYRsLfxFJ2Q=="], + + "@tailwindcss/oxide-win32-arm64-msvc": ["@tailwindcss/oxide-win32-arm64-msvc@4.2.1", "", { "os": "win32", "cpu": "arm64" }, "sha512-YlUEHRHBGnCMh4Nj4GnqQyBtsshUPdiNroZj8VPkvTZSoHsilRCwXcVKnG9kyi0ZFAS/3u+qKHBdDc81SADTRA=="], + + "@tailwindcss/oxide-win32-x64-msvc": ["@tailwindcss/oxide-win32-x64-msvc@4.2.1", "", { "os": "win32", "cpu": "x64" }, "sha512-rbO34G5sMWWyrN/idLeVxAZgAKWrn5LiR3/I90Q9MkA67s6T1oB0xtTe+0heoBvHSpbU9Mk7i6uwJnpo4u21XQ=="], + + "@tailwindcss/postcss": ["@tailwindcss/postcss@4.2.1", "", { "dependencies": { "@alloc/quick-lru": "^5.2.0", "@tailwindcss/node": "4.2.1", "@tailwindcss/oxide": "4.2.1", "postcss": "^8.5.6", "tailwindcss": "4.2.1" } }, "sha512-OEwGIBnXnj7zJeonOh6ZG9woofIjGrd2BORfvE5p9USYKDCZoQmfqLcfNiRWoJlRWLdNPn2IgVZuWAOM4iTYMw=="], "@tanstack/query-core": ["@tanstack/query-core@5.90.19", "", {}, "sha512-GLW5sjPVIvH491VV1ufddnfldyVB+teCnpPIvweEfkpRx7CfUmUGhoh9cdcUKBh/KwVxk22aNEDxeTsvmyB/WA=="], @@ -284,6 +378,8 @@ "@testing-library/user-event": ["@testing-library/user-event@14.6.1", "", { "peerDependencies": { "@testing-library/dom": ">=7.21.4" } }, "sha512-vq7fv0rnt+QTXgPxr5Hjc210p6YKq2kmdziLgnsZGgLJ9e6VAShx1pACLuRjd/AS/sr7phAR58OIIpf0LlmQNw=="], + "@tootallnate/quickjs-emscripten": ["@tootallnate/quickjs-emscripten@0.23.0", "", {}, "sha512-C5Mc6rdnsaJDjO3UpGW/CQTHtCKaYlScZTly4JIu97Jxo/odCiH0ITnDXSJPTOrEKk/ycSZ0AOgTmkDtkOsvIA=="], + "@types/aria-query": ["@types/aria-query@5.0.4", "", {}, "sha512-rfT93uj5s0PRL7EzccGMs3brplhcrghnDoV26NqKhCAS1hVo+WdNsPvE/yb6ilfr5hi2MEk6d5EWJTKdxg8jVw=="], "@types/babel__core": ["@types/babel__core@7.20.5", "", { "dependencies": { "@babel/parser": "^7.20.7", "@babel/types": "^7.20.7", "@types/babel__generator": "*", "@types/babel__template": "*", "@types/babel__traverse": "*" } }, "sha512-qoQprZvz5wQFJwMDqeseRXWv3rqMvhgpbXFfVyWhbx9X47POIA6i/+dXefEmZKoAgOaTdaIgNSMqMIU61yRyzA=="], @@ -332,6 +428,8 @@ "@types/ws": ["@types/ws@8.18.1", "", { "dependencies": { "@types/node": "*" } }, "sha512-ThVF6DCVhA8kUGy+aazFQ4kXQ7E1Ty7A3ypFOe0IcJV8O/M511G99AW24irKrW56Wt44yG9+ij8FaqoBGkuBXg=="], + "@types/yauzl": ["@types/yauzl@2.10.3", "", { "dependencies": { "@types/node": "*" } }, "sha512-oJoftv0LSuaDZE3Le4DbKX+KS9G36NzOeSap90UIK0yMA/NhKJhqlSGtNDORNRaIbQfzjXDrQa0ytJ6mNRGz/Q=="], + "@typescript-eslint/eslint-plugin": ["@typescript-eslint/eslint-plugin@8.53.1", "", { "dependencies": { "@eslint-community/regexpp": "^4.12.2", "@typescript-eslint/scope-manager": "8.53.1", "@typescript-eslint/type-utils": "8.53.1", "@typescript-eslint/utils": "8.53.1", "@typescript-eslint/visitor-keys": "8.53.1", "ignore": "^7.0.5", "natural-compare": "^1.4.0", "ts-api-utils": "^2.4.0" }, "peerDependencies": { "@typescript-eslint/parser": "^8.53.1", "eslint": "^8.57.0 || ^9.0.0", "typescript": ">=4.8.4 <6.0.0" } }, "sha512-cFYYFZ+oQFi6hUnBTbLRXfTJiaQtYE3t4O692agbBl+2Zy+eqSKWtPjhPXJu1G7j4RLjKgeJPDdq3EqOwmX5Ag=="], "@typescript-eslint/parser": ["@typescript-eslint/parser@8.53.1", "", { "dependencies": { "@typescript-eslint/scope-manager": "8.53.1", "@typescript-eslint/types": "8.53.1", "@typescript-eslint/typescript-estree": "8.53.1", "@typescript-eslint/visitor-keys": "8.53.1", "debug": "^4.4.3" }, "peerDependencies": { "eslint": "^8.57.0 || ^9.0.0", "typescript": ">=4.8.4 <6.0.0" } }, "sha512-nm3cvFN9SqZGXjmw5bZ6cGmvJSyJPn0wU9gHAZZHDnZl2wF9PhHv78Xf06E0MaNk4zLVHL8hb2/c32XvyJOLQg=="], @@ -352,7 +450,7 @@ "@typescript-eslint/visitor-keys": ["@typescript-eslint/visitor-keys@8.53.1", "", { "dependencies": { "@typescript-eslint/types": "8.53.1", "eslint-visitor-keys": "^4.2.1" } }, "sha512-oy+wV7xDKFPRyNggmXuZQSBzvoLnpmJs+GhzRhPjrxl2b/jIlyjVokzm47CZCDUdXKr2zd7ZLodPfOBpOPyPlg=="], - "@vitejs/plugin-react": ["@vitejs/plugin-react@5.1.2", "", { "dependencies": { "@babel/core": "^7.28.5", "@babel/plugin-transform-react-jsx-self": "^7.27.1", "@babel/plugin-transform-react-jsx-source": "^7.27.1", "@rolldown/pluginutils": "1.0.0-beta.53", "@types/babel__core": "^7.20.5", "react-refresh": "^0.18.0" }, "peerDependencies": { "vite": "^4.2.0 || ^5.0.0 || ^6.0.0 || ^7.0.0" } }, "sha512-EcA07pHJouywpzsoTUqNh5NwGayl2PPVEJKUSinGGSxFGYn+shYbqMGBg6FXDqgXum9Ou/ecb+411ssw8HImJQ=="], + "@vitejs/plugin-react": ["@vitejs/plugin-react@5.1.4", "", { "dependencies": { "@babel/core": "^7.29.0", "@babel/plugin-transform-react-jsx-self": "^7.27.1", "@babel/plugin-transform-react-jsx-source": "^7.27.1", "@rolldown/pluginutils": "1.0.0-rc.3", "@types/babel__core": "^7.20.5", "react-refresh": "^0.18.0" }, "peerDependencies": { "vite": "^4.2.0 || ^5.0.0 || ^6.0.0 || ^7.0.0" } }, "sha512-VIcFLdRi/VYRU8OL/puL7QXMYafHmqOnwTZY50U1JPlCNj30PxCMx65c494b1K9be9hX83KVt0+gTEwTWLqToA=="], "@vitest/expect": ["@vitest/expect@4.0.17", "", { "dependencies": { "@standard-schema/spec": "^1.0.0", "@types/chai": "^5.2.2", "@vitest/spy": "4.0.17", "@vitest/utils": "4.0.17", "chai": "^6.2.1", "tinyrainbow": "^3.0.3" } }, "sha512-mEoqP3RqhKlbmUmntNDDCJeTDavDR+fVYkSOw8qRwJFaW/0/5zA9zFeTrHqNtcmwh6j26yMmwx2PqUDPzt5ZAQ=="], @@ -380,37 +478,43 @@ "ansi-styles": ["ansi-styles@4.3.0", "", { "dependencies": { "color-convert": "^2.0.1" } }, "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg=="], - "any-promise": ["any-promise@1.3.0", "", {}, "sha512-7UvmKalWRt1wgjL1RrGxoSJW/0QZFIegpeGvZG9kjp8vrRu55XTHbwnqq2GpXm9uLbcuhxm3IqX9OB4MZR1b2A=="], - - "anymatch": ["anymatch@3.1.3", "", { "dependencies": { "normalize-path": "^3.0.0", "picomatch": "^2.0.4" } }, "sha512-KMReFUr0B4t+D+OBkjR3KYqvocp2XaSzO55UcB6mgQMd3KbcE+mWTyvVV7D/zsdEbNnV6acZUutkiHQXvTr1Rw=="], - - "arg": ["arg@5.0.2", "", {}, "sha512-PYjyFOLKQ9y57JvQ6QLo8dAgNqswh8M1RMJYdQduT6xbWSgK36P/Z/v+p888pM69jMMfS8Xd8F6I1kQ/I9HUGg=="], - "argparse": ["argparse@2.0.1", "", {}, "sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q=="], "aria-query": ["aria-query@5.3.2", "", {}, "sha512-COROpnaoap1E2F000S62r6A60uHZnmlvomhfyT2DlTcrY1OrBKn2UhH7qn5wTC9zMvD0AY7csdPSNwKP+7WiQw=="], "assertion-error": ["assertion-error@2.0.1", "", {}, "sha512-Izi8RQcffqCeNVgFigKli1ssklIbpHnCYc6AknXGYoB6grJqyeby7jv12JUQgmTAnIDnbck1uxksT4dzN3PWBA=="], - "autoprefixer": ["autoprefixer@10.4.23", "", { "dependencies": { "browserslist": "^4.28.1", "caniuse-lite": "^1.0.30001760", "fraction.js": "^5.3.4", "picocolors": "^1.1.1", "postcss-value-parser": "^4.2.0" }, "peerDependencies": { "postcss": "^8.1.0" }, "bin": { "autoprefixer": "bin/autoprefixer" } }, "sha512-YYTXSFulfwytnjAPlw8QHncHJmlvFKtczb8InXaAx9Q0LbfDnfEYDE55omerIJKihhmU61Ft+cAOSzQVaBUmeA=="], + "ast-types": ["ast-types@0.13.4", "", { "dependencies": { "tslib": "^2.0.1" } }, "sha512-x1FCFnFifvYDDzTaLII71vG5uvDwgtmDTEVWAxrgeiR8VjMONcCXJx7E+USjDtHlwFmt9MysbqgF9b9Vjr6w+w=="], + + "b4a": ["b4a@1.8.0", "", { "peerDependencies": { "react-native-b4a": "*" }, "optionalPeers": ["react-native-b4a"] }, "sha512-qRuSmNSkGQaHwNbM7J78Wwy+ghLEYF1zNrSeMxj4Kgw6y33O3mXcQ6Ie9fRvfU/YnxWkOchPXbaLb73TkIsfdg=="], "balanced-match": ["balanced-match@1.0.2", "", {}, "sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw=="], + "bare-events": ["bare-events@2.8.2", "", { "peerDependencies": { "bare-abort-controller": "*" }, "optionalPeers": ["bare-abort-controller"] }, "sha512-riJjyv1/mHLIPX4RwiK+oW9/4c3TEUeORHKefKAKnZ5kyslbN+HXowtbaVEqt4IMUB7OXlfixcs6gsFeo/jhiQ=="], + + "bare-fs": ["bare-fs@4.5.5", "", { "dependencies": { "bare-events": "^2.5.4", "bare-path": "^3.0.0", "bare-stream": "^2.6.4", "bare-url": "^2.2.2", "fast-fifo": "^1.3.2" }, "peerDependencies": { "bare-buffer": "*" }, "optionalPeers": ["bare-buffer"] }, "sha512-XvwYM6VZqKoqDll8BmSww5luA5eflDzY0uEFfBJtFKe4PAAtxBjU3YIxzIBzhyaEQBy1VXEQBto4cpN5RZJw+w=="], + + "bare-os": ["bare-os@3.7.1", "", {}, "sha512-ebvMaS5BgZKmJlvuWh14dg9rbUI84QeV3WlWn6Ph6lFI8jJoh7ADtVTyD2c93euwbe+zgi0DVrl4YmqXeM9aIA=="], + + "bare-path": ["bare-path@3.0.0", "", { "dependencies": { "bare-os": "^3.0.1" } }, "sha512-tyfW2cQcB5NN8Saijrhqn0Zh7AnFNsnczRcuWODH0eYAXBsJ5gVxAUuNr7tsHSC6IZ77cA0SitzT+s47kot8Mw=="], + + "bare-stream": ["bare-stream@2.8.0", "", { "dependencies": { "streamx": "^2.21.0", "teex": "^1.0.1" }, "peerDependencies": { "bare-buffer": "*", "bare-events": "*" }, "optionalPeers": ["bare-buffer", "bare-events"] }, "sha512-reUN0M2sHRqCdG4lUK3Fw8w98eeUIZHL5c3H7Mbhk2yVBL+oofgaIp0ieLfD5QXwPCypBpmEEKU2WZKzbAk8GA=="], + + "bare-url": ["bare-url@2.3.2", "", { "dependencies": { "bare-path": "^3.0.0" } }, "sha512-ZMq4gd9ngV5aTMa5p9+UfY0b3skwhHELaDkhEHetMdX0LRkW9kzaym4oo/Eh+Ghm0CCDuMTsRIGM/ytUc1ZYmw=="], + "baseline-browser-mapping": ["baseline-browser-mapping@2.9.15", "", { "bin": { "baseline-browser-mapping": "dist/cli.js" } }, "sha512-kX8h7K2srmDyYnXRIppo4AH/wYgzWVCs+eKr3RusRSQ5PvRYoEFmR/I0PbdTjKFAoKqp5+kbxnNTFO9jOfSVJg=="], - "bidi-js": ["bidi-js@1.0.3", "", { "dependencies": { "require-from-string": "^2.0.2" } }, "sha512-RKshQI1R3YQ+n9YJz2QQ147P66ELpa1FQEg20Dk8oW9t2KgLbpDLLp9aGZ7y8WHSshDknG0bknqGw5/tyCs5tw=="], + "basic-ftp": ["basic-ftp@5.2.0", "", {}, "sha512-VoMINM2rqJwJgfdHq6RiUudKt2BV+FY5ZFezP/ypmwayk68+NzzAQy4XXLlqsGD4MCzq3DrmNFD/uUmBJuGoXw=="], - "binary-extensions": ["binary-extensions@2.3.0", "", {}, "sha512-Ceh+7ox5qe7LJuLHoY0feh3pHuUDHAcRUeyL2VYghZwfpkNIy/+8Ocg0a3UuSoYzavmylwuLWQOf3hl0jjMMIw=="], + "bidi-js": ["bidi-js@1.0.3", "", { "dependencies": { "require-from-string": "^2.0.2" } }, "sha512-RKshQI1R3YQ+n9YJz2QQ147P66ELpa1FQEg20Dk8oW9t2KgLbpDLLp9aGZ7y8WHSshDknG0bknqGw5/tyCs5tw=="], "brace-expansion": ["brace-expansion@1.1.12", "", { "dependencies": { "balanced-match": "^1.0.0", "concat-map": "0.0.1" } }, "sha512-9T9UjW3r0UW5c1Q7GTwllptXwhvYmEzFhzMfZ9H7FQWt+uZePjZPjBP/W1ZEyZ1twGWom5/56TF4lPcqjnDHcg=="], - "braces": ["braces@3.0.3", "", { "dependencies": { "fill-range": "^7.1.1" } }, "sha512-yQbXgO/OSZVD2IsiLlro+7Hf6Q18EJrKSEsdoMzKePKXct3gvD8oLcOQdIzGupr5Fj+EDe8gO/lxc1BzfMpxvA=="], - "browserslist": ["browserslist@4.28.1", "", { "dependencies": { "baseline-browser-mapping": "^2.9.0", "caniuse-lite": "^1.0.30001759", "electron-to-chromium": "^1.5.263", "node-releases": "^2.0.27", "update-browserslist-db": "^1.2.0" }, "bin": { "browserslist": "cli.js" } }, "sha512-ZC5Bd0LgJXgwGqUknZY/vkUQ04r8NXnJZ3yYi4vDmSiZmC/pdSN0NbNRPxZpbtO4uAfDUAFffO8IZoM3Gj8IkA=="], - "callsites": ["callsites@3.1.0", "", {}, "sha512-P8BjAsXvZS+VIDUI11hHCQEv74YT67YUi5JJFNWIqL235sBmjX4+qx9Muvls5ivyNENctx46xQLQ3aTuE7ssaQ=="], + "buffer-crc32": ["buffer-crc32@0.2.13", "", {}, "sha512-VO9Ht/+p3SN7SKWqcrgEzjGbRSJYTx+Q1pTQC0wrWqHx0vpJraQ6GtHx8tvcg1rlK1byhU5gccxgOgj7B0TDkQ=="], - "camelcase-css": ["camelcase-css@2.0.1", "", {}, "sha512-QOSvevhslijgYwRx6Rv7zKdMF8lbRmx+uQGx2+vDc+KI/eBnsy9kit5aj23AgGu3pa4t9AgwbnXWqS+iOY+2aA=="], + "callsites": ["callsites@3.1.0", "", {}, "sha512-P8BjAsXvZS+VIDUI11hHCQEv74YT67YUi5JJFNWIqL235sBmjX4+qx9Muvls5ivyNENctx46xQLQ3aTuE7ssaQ=="], "caniuse-lite": ["caniuse-lite@1.0.30001765", "", {}, "sha512-LWcNtSyZrakjECqmpP4qdg0MMGdN368D7X8XvvAqOcqMv0RxnlqVKZl2V6/mBR68oYMxOZPLw/gO7DuisMHUvQ=="], @@ -418,7 +522,11 @@ "chalk": ["chalk@4.1.2", "", { "dependencies": { "ansi-styles": "^4.1.0", "supports-color": "^7.1.0" } }, "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA=="], - "chokidar": ["chokidar@3.6.0", "", { "dependencies": { "anymatch": "~3.1.2", "braces": "~3.0.2", "glob-parent": "~5.1.2", "is-binary-path": "~2.1.0", "is-glob": "~4.0.1", "normalize-path": "~3.0.0", "readdirp": "~3.6.0" }, "optionalDependencies": { "fsevents": "~2.3.2" } }, "sha512-7VT13fmjotKpGipCW9JEQAusEPE+Ei8nl6/g4FBAmIm0GOOLMua9NDDo/DWp0ZAxCr3cPq5ZpBqmPAQgDda2Pw=="], + "chromium-bidi": ["chromium-bidi@14.0.0", "", { "dependencies": { "mitt": "^3.0.1", "zod": "^3.24.1" }, "peerDependencies": { "devtools-protocol": "*" } }, "sha512-9gYlLtS6tStdRWzrtXaTMnqcM4dudNegMXJxkR0I/CXObHalYeYcAMPrL19eroNZHtJ8DQmu1E+ZNOYu/IXMXw=="], + + "client-only": ["client-only@0.0.1", "", {}, "sha512-IV3Ou0jSMzZrd3pZ48nLkT9DA7Ag1pnPzaiQhpW7c3RbcqqzvzzVu+L8gfqMp/8IM2MQtSiqaCxrrcfu8I8rMA=="], + + "cliui": ["cliui@8.0.1", "", { "dependencies": { "string-width": "^4.2.0", "strip-ansi": "^6.0.1", "wrap-ansi": "^7.0.0" } }, "sha512-BSeNnyus75C4//NQ9gQt1/csTXyo/8Sb+afLAkzAptFuMsod9HFokGNudZpi/oQV73hnVK+sR+5PVRMd+Dr7YQ=="], "clsx": ["clsx@2.1.1", "", {}, "sha512-eYm0QWBtUrBWZWG0d386OGAw16Z995PiOVo2B7bjWSbHedGl5e0ZWaq65kOGgUSNesEIDkB9ISbTg/JK9dhCZA=="], @@ -426,22 +534,20 @@ "color-name": ["color-name@1.1.4", "", {}, "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA=="], - "commander": ["commander@4.1.1", "", {}, "sha512-NOKm8xhkzAjzFx8B2v5OAHT+u5pRQc2UCa2Vq9jYL/31o2wi9mxBA7LIFs3sV5VSC49z6pEhfbMULvShKj26WA=="], - "concat-map": ["concat-map@0.0.1", "", {}, "sha512-/Srv4dswyQNBfohGpz9o6Yb3Gz3SrUDqBH5rTuhGR7ahtlbYKnVxw2bCFMRljaA7EXHaXZ8wsHdodFvbkhKmqg=="], "convert-source-map": ["convert-source-map@2.0.0", "", {}, "sha512-Kvp459HrV2FEJ1CAsi1Ku+MY3kasH19TFykTz2xWmMeq6bk2NU3XXvfJ+Q61m0xktWwt+1HSYf3JZsTms3aRJg=="], "core-util-is": ["core-util-is@1.0.3", "", {}, "sha512-ZQBvi1DcpJ4GDqanjucZ2Hj3wEO5pZDS89BWbkcrvdxksJorwUDDZamX9ldFkp9aw2lmBDLgkObEA4DWNJ9FYQ=="], + "cosmiconfig": ["cosmiconfig@9.0.1", "", { "dependencies": { "env-paths": "^2.2.1", "import-fresh": "^3.3.0", "js-yaml": "^4.1.0", "parse-json": "^5.2.0" }, "peerDependencies": { "typescript": ">=4.9.5" }, "optionalPeers": ["typescript"] }, "sha512-hr4ihw+DBqcvrsEDioRO31Z17x71pUYoNe/4h6Z0wB72p7MU7/9gH8Q3s12NFhHPfYBBOV3qyfUxmr/Yn3shnQ=="], + "cross-spawn": ["cross-spawn@7.0.6", "", { "dependencies": { "path-key": "^3.1.0", "shebang-command": "^2.0.0", "which": "^2.0.1" } }, "sha512-uV2QOWP2nWzsy2aMp8aRibhi9dlzF5Hgh5SHaB9OiTGEyDTiJJyx0uy51QXdyWbtAHNua4XJzUKca3OzKUd3vA=="], "css-tree": ["css-tree@3.1.0", "", { "dependencies": { "mdn-data": "2.12.2", "source-map-js": "^1.0.1" } }, "sha512-0eW44TGN5SQXU1mWSkKwFstI/22X2bG1nYzZTYMAWjylYURhse752YgbE4Cx46AC+bAvI+/dYTPRk1LqSUnu6w=="], "css.escape": ["css.escape@1.5.1", "", {}, "sha512-YUifsXXuknHlUsmlgyY0PKzgPOr7/FjCePfHNt0jxm83wHZi44VDMQ7/fGNkjY3/jV1MC+1CmZbaHzugyeRtpg=="], - "cssesc": ["cssesc@3.0.0", "", { "bin": { "cssesc": "bin/cssesc" } }, "sha512-/Tb/JcjK111nNScGob5MNtsntNM1aCNUDipB/TkwZFhyDrrE47SOx/18wF2bbjgc3ZzCSKW1T5nt5EbFoAz/Vg=="], - "cssstyle": ["cssstyle@5.3.7", "", { "dependencies": { "@asamuzakjp/css-color": "^4.1.1", "@csstools/css-syntax-patches-for-csstree": "^1.0.21", "css-tree": "^3.1.0", "lru-cache": "^11.2.4" } }, "sha512-7D2EPVltRrsTkhpQmksIu+LxeWAIEk6wRDMJ1qljlv+CKHJM+cJLlfhWIzNA44eAsHXSNe3+vO6DW1yCYx8SuQ=="], "csstype": ["csstype@3.2.3", "", {}, "sha512-z1HGKcYy2xA8AGQfwrn0PAy+PB7X/GSj3UVJW9qKyn43xWa+gl5nXmU4qqLMRzWVLFC8KusUX8T/0kCiOYpAIQ=="], @@ -468,6 +574,8 @@ "d3-timer": ["d3-timer@3.0.1", "", {}, "sha512-ndfJ/JxxMd3nw31uyKoY2naivF+r29V+Lc0svZxe1JvvIRmi8hUsrMvdOwgS1o6uBHmiz91geQ0ylPP0aj1VUA=="], + "data-uri-to-buffer": ["data-uri-to-buffer@6.0.2", "", {}, "sha512-7hvf7/GW8e86rW0ptuwS3OcBGDjIi6SZva7hCyWC0yYry2cOPmLIjXAUHI6DK2HsnwJd9ifmt57i8eV2n4YNpw=="], + "data-urls": ["data-urls@6.0.0", "", { "dependencies": { "whatwg-mimetype": "^4.0.0", "whatwg-url": "^15.0.0" } }, "sha512-BnBS08aLUM+DKamupXs3w2tJJoqU+AkaE/+6vQxi/G/DPmIZFJJp9Dkb1kM03AZx8ADehDUZgsNxju3mPXZYIA=="], "date-fns": ["date-fns@4.1.0", "", {}, "sha512-Ukq0owbQXxa/U3EGtsdVBkR1w7KOQ5gIBqdH2hkvknzZPYvBxb/aa6E8L7tmjFtkwZBu3UXBbjIgPo/Ez4xaNg=="], @@ -480,18 +588,30 @@ "deep-is": ["deep-is@0.1.4", "", {}, "sha512-oIPzksmTg4/MriiaYGO+okXDT7ztn/w3Eptv/+gSIdMdKsJo0u4CfYNFJPy+4SKMuCqGw2wxnA+URMg3t8a/bQ=="], + "degenerator": ["degenerator@5.0.1", "", { "dependencies": { "ast-types": "^0.13.4", "escodegen": "^2.1.0", "esprima": "^4.0.1" } }, "sha512-TllpMR/t0M5sqCXfj85i4XaAzxmS5tVA16dqvdkMwGmzI+dXLXnw3J+3Vdv7VKw+ThlTMboK6i9rnZ6Nntj5CQ=="], + "dequal": ["dequal@2.0.3", "", {}, "sha512-0je+qPKHEMohvfRTCEo3CrPG6cAzAYgmzKyxRiYSSDkS6eGJdyVJm7WaYA5ECaAD9wLB2T4EEeymA5aFVcYXCA=="], - "didyoumean": ["didyoumean@1.2.2", "", {}, "sha512-gxtyfqMg7GKyhQmb056K7M3xszy/myH8w+B4RT+QXBQsvAOdc3XymqDDPHx1BgPgsdAA5SIifona89YtRATDzw=="], + "detect-libc": ["detect-libc@2.1.2", "", {}, "sha512-Btj2BOOO83o3WyH59e8MgXsxEQVcarkUOpEYrubB0urwnN10yQ364rsiByU11nZlqWYZm05i/of7io4mzihBtQ=="], - "dlv": ["dlv@1.1.3", "", {}, "sha512-+HlytyjlPKnIG8XuRG8WvmBP8xs8P71y+SKKS6ZXWoEgLuePxtDoUEiH7WkdePWrQ5JBpE6aoVqfZfJUQkjXwA=="], + "devtools-protocol": ["devtools-protocol@0.0.1581282", "", {}, "sha512-nv7iKtNZQshSW2hKzYNr46nM/Cfh5SEvE2oV0/SEGgc9XupIY5ggf84Cz8eJIkBce7S3bmTAauFD6aysMpnqsQ=="], "dom-accessibility-api": ["dom-accessibility-api@0.6.3", "", {}, "sha512-7ZgogeTnjuHbo+ct10G9Ffp0mif17idi0IyWNVA/wcwcm7NPOD/WEHVP3n7n3MhXqxoIYm8d6MuZohYWIZ4T3w=="], "electron-to-chromium": ["electron-to-chromium@1.5.267", "", {}, "sha512-0Drusm6MVRXSOJpGbaSVgcQsuB4hEkMpHXaVstcPmhu5LIedxs1xNK/nIxmQIU/RPC0+1/o0AVZfBTkTNJOdUw=="], + "emoji-regex": ["emoji-regex@8.0.0", "", {}, "sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A=="], + + "end-of-stream": ["end-of-stream@1.4.5", "", { "dependencies": { "once": "^1.4.0" } }, "sha512-ooEGc6HP26xXq/N+GCGOT0JKCLDGrq2bQUZrQ7gyrJiZANJ/8YDTxTpQBXGMn+WbIQXNVpyWymm7KYVICQnyOg=="], + + "enhanced-resolve": ["enhanced-resolve@5.20.0", "", { "dependencies": { "graceful-fs": "^4.2.4", "tapable": "^2.3.0" } }, "sha512-/ce7+jQ1PQ6rVXwe+jKEg5hW5ciicHwIQUagZkp6IufBoY3YDgdTTY1azVs0qoRgVmvsNB+rbjLJxDAeHHtwsQ=="], + "entities": ["entities@6.0.1", "", {}, "sha512-aN97NXWF6AWBTahfVOIrB/NShkzi5H7F9r1s9mD3cDj4Ko5f2qhhVoYMibXF7GlLveb/D2ioWay8lxI97Ven3g=="], + "env-paths": ["env-paths@2.2.1", "", {}, "sha512-+h1lkLKhZMTYjog1VEpJNG7NZJWcuc2DDk/qsqSTRRCOXiLjeQ1d1/udrUGhqMxUgAlwKNZ0cf2uqan5GLuS2A=="], + + "error-ex": ["error-ex@1.3.4", "", { "dependencies": { "is-arrayish": "^0.2.1" } }, "sha512-sqQamAnR14VgCr1A618A3sGrygcpK+HEbenA/HiEAkkUwcZIIB/tgWqHFxWgOyDh4nB4JCRimh79dR5Ywc9MDQ=="], + "es-module-lexer": ["es-module-lexer@1.7.0", "", {}, "sha512-jEQoCwk8hyb2AZziIOLhDqpm5+2ww5uIE6lkO/6jcOCusfk6LhMHpXXfBLXTZ7Ydyt0j4VoUQv6uGNYbdW+kBA=="], "es-toolkit": ["es-toolkit@1.44.0", "", {}, "sha512-6penXeZalaV88MM3cGkFZZfOoLGWshWWfdy0tWw/RlVVyhvMaWSBTOvXNeiW3e5FwdS5ePW0LGEu17zT139ktg=="], @@ -502,18 +622,20 @@ "escape-string-regexp": ["escape-string-regexp@4.0.0", "", {}, "sha512-TtpcNJ3XAzx3Gq8sWRzJaVajRs0uVxA2YAkdb1jm2YkPz4G6egUFAyA3n5vtEIZefPk5Wa4UXbKuS5fKkJWdgA=="], + "escodegen": ["escodegen@2.1.0", "", { "dependencies": { "esprima": "^4.0.1", "estraverse": "^5.2.0", "esutils": "^2.0.2" }, "optionalDependencies": { "source-map": "~0.6.1" }, "bin": { "esgenerate": "bin/esgenerate.js", "escodegen": "bin/escodegen.js" } }, "sha512-2NlIDTwUWJN0mRPQOdtQBzbUHvdGY2P1VXSyU83Q3xKxM7WHX2Ql8dKq782Q9TgQUNOLEzEYu9bzLNj1q88I5w=="], + "eslint": ["eslint@9.39.2", "", { "dependencies": { "@eslint-community/eslint-utils": "^4.8.0", "@eslint-community/regexpp": "^4.12.1", "@eslint/config-array": "^0.21.1", "@eslint/config-helpers": "^0.4.2", "@eslint/core": "^0.17.0", "@eslint/eslintrc": "^3.3.1", "@eslint/js": "9.39.2", "@eslint/plugin-kit": "^0.4.1", "@humanfs/node": "^0.16.6", "@humanwhocodes/module-importer": "^1.0.1", "@humanwhocodes/retry": "^0.4.2", "@types/estree": "^1.0.6", "ajv": "^6.12.4", "chalk": "^4.0.0", "cross-spawn": "^7.0.6", "debug": "^4.3.2", "escape-string-regexp": "^4.0.0", "eslint-scope": "^8.4.0", "eslint-visitor-keys": "^4.2.1", "espree": "^10.4.0", "esquery": "^1.5.0", "esutils": "^2.0.2", "fast-deep-equal": "^3.1.3", "file-entry-cache": "^8.0.0", "find-up": "^5.0.0", "glob-parent": "^6.0.2", "ignore": "^5.2.0", "imurmurhash": "^0.1.4", "is-glob": "^4.0.0", "json-stable-stringify-without-jsonify": "^1.0.1", "lodash.merge": "^4.6.2", "minimatch": "^3.1.2", "natural-compare": "^1.4.0", "optionator": "^0.9.3" }, "peerDependencies": { "jiti": "*" }, "optionalPeers": ["jiti"], "bin": { "eslint": "bin/eslint.js" } }, "sha512-LEyamqS7W5HB3ujJyvi0HQK/dtVINZvd5mAAp9eT5S/ujByGjiZLCzPcHVzuXbpJDJF/cxwHlfceVUDZ2lnSTw=="], "eslint-plugin-react-hooks": ["eslint-plugin-react-hooks@7.0.1", "", { "dependencies": { "@babel/core": "^7.24.4", "@babel/parser": "^7.24.4", "hermes-parser": "^0.25.1", "zod": "^3.25.0 || ^4.0.0", "zod-validation-error": "^3.5.0 || ^4.0.0" }, "peerDependencies": { "eslint": "^3.0.0 || ^4.0.0 || ^5.0.0 || ^6.0.0 || ^7.0.0 || ^8.0.0-0 || ^9.0.0" } }, "sha512-O0d0m04evaNzEPoSW+59Mezf8Qt0InfgGIBJnpC0h3NH/WjUAR7BIKUfysC6todmtiZ/A0oUVS8Gce0WhBrHsA=="], - "eslint-plugin-react-refresh": ["eslint-plugin-react-refresh@0.4.26", "", { "peerDependencies": { "eslint": ">=8.40" } }, "sha512-1RETEylht2O6FM/MvgnyvT+8K21wLqDNg4qD51Zj3guhjt433XbnnkVttHMyaVyAFD03QSV4LPS5iE3VQmO7XQ=="], - "eslint-scope": ["eslint-scope@8.4.0", "", { "dependencies": { "esrecurse": "^4.3.0", "estraverse": "^5.2.0" } }, "sha512-sNXOfKCn74rt8RICKMvJS7XKV/Xk9kA7DyJr8mJik3S7Cwgy3qlkkmyS2uQB3jiJg6VNdZd/pDBJu0nvG2NlTg=="], "eslint-visitor-keys": ["eslint-visitor-keys@4.2.1", "", {}, "sha512-Uhdk5sfqcee/9H/rCOJikYz67o0a2Tw2hGRPOG2Y1R2dg7brRe1uG0yaNQDHu+TO/uQPF/5eCapvYSmHUjt7JQ=="], "espree": ["espree@10.4.0", "", { "dependencies": { "acorn": "^8.15.0", "acorn-jsx": "^5.3.2", "eslint-visitor-keys": "^4.2.1" } }, "sha512-j6PAQ2uUr79PZhBjP5C5fhl8e39FmRnOjsD5lGnWrFU8i2G776tBK7+nP8KuQUTTyAZUwfQqXAgrVH5MbH9CYQ=="], + "esprima": ["esprima@4.0.1", "", { "bin": { "esparse": "./bin/esparse.js", "esvalidate": "./bin/esvalidate.js" } }, "sha512-eGuFFw7Upda+g4p+QHvnW0RyTX/SVeJBDM/gCtMARO0cLuT2HcEKnTPvhjV6aGeqrCB/sbNop0Kszm0jsaWU4A=="], + "esquery": ["esquery@1.7.0", "", { "dependencies": { "estraverse": "^5.1.0" } }, "sha512-Ap6G0WQwcU/LHsvLwON1fAQX9Zp0A2Y6Y/cJBl9r/JbW90Zyg4/zbG6zzKa2OTALELarYHmKu0GhpM5EO+7T0g=="], "esrecurse": ["esrecurse@4.3.0", "", { "dependencies": { "estraverse": "^5.2.0" } }, "sha512-KmfKL3b6G+RXvP8N1vr3Tq1kL/oCFgn2NYXEtqP8/L3pKapUA4G8cFVaoF3SU323CD4XypR/ffioHmkti6/Tag=="], @@ -526,47 +648,51 @@ "eventemitter3": ["eventemitter3@5.0.4", "", {}, "sha512-mlsTRyGaPBjPedk6Bvw+aqbsXDtoAyAzm5MO7JgU+yVRyMQ5O8bD4Kcci7BS85f93veegeCPkL8R4GLClnjLFw=="], + "events-universal": ["events-universal@1.0.1", "", { "dependencies": { "bare-events": "^2.7.0" } }, "sha512-LUd5euvbMLpwOF8m6ivPCbhQeSiYVNb8Vs0fQ8QjXo0JTkEHpz8pxdQf0gStltaPpw0Cca8b39KxvK9cfKRiAw=="], + "expect-type": ["expect-type@1.3.0", "", {}, "sha512-knvyeauYhqjOYvQ66MznSMs83wmHrCycNEN6Ao+2AeYEfxUIkuiVxdEa1qlGEPK+We3n0THiDciYSsCcgW/DoA=="], + "extract-zip": ["extract-zip@2.0.1", "", { "dependencies": { "debug": "^4.1.1", "get-stream": "^5.1.0", "yauzl": "^2.10.0" }, "optionalDependencies": { "@types/yauzl": "^2.9.1" }, "bin": { "extract-zip": "cli.js" } }, "sha512-GDhU9ntwuKyGXdZBUgTIe+vXnWj0fppUEtMDL0+idd5Sta8TGpHssn/eusA9mrPr9qNDym6SxAYZjNvCn/9RBg=="], + "fast-deep-equal": ["fast-deep-equal@3.1.3", "", {}, "sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q=="], - "fast-glob": ["fast-glob@3.3.3", "", { "dependencies": { "@nodelib/fs.stat": "^2.0.2", "@nodelib/fs.walk": "^1.2.3", "glob-parent": "^5.1.2", "merge2": "^1.3.0", "micromatch": "^4.0.8" } }, "sha512-7MptL8U0cqcFdzIzwOTHoilX9x5BrNqye7Z/LuC7kCMRio1EMSyqRK3BEAUD7sXRq4iT4AzTVuZdhgQ2TCvYLg=="], + "fast-fifo": ["fast-fifo@1.3.2", "", {}, "sha512-/d9sfos4yxzpwkDkuN7k2SqFKtYNmCTzgfEpz82x34IM9/zc8KGxQoXg1liNC/izpRM/MBdt44Nmx41ZWqk+FQ=="], "fast-json-stable-stringify": ["fast-json-stable-stringify@2.1.0", "", {}, "sha512-lhd/wF+Lk98HZoTCtlVraHtfh5XYijIjalXck7saUtuanSDyLMxnHhSXEDJqHxD7msR8D0uCmqlkwjCV8xvwHw=="], "fast-levenshtein": ["fast-levenshtein@2.0.6", "", {}, "sha512-DCXu6Ifhqcks7TZKY3Hxp3y6qphY5SJZmrWMDrKcERSOXWQdMhU9Ig/PYrzyw/ul9jOIyh0N4M0tbC5hodg8dw=="], - "fastq": ["fastq@1.20.1", "", { "dependencies": { "reusify": "^1.0.4" } }, "sha512-GGToxJ/w1x32s/D2EKND7kTil4n8OVk/9mycTc4VDza13lOvpUZTGX3mFSCtV9ksdGBVzvsyAVLM6mHFThxXxw=="], + "fd-slicer": ["fd-slicer@1.1.0", "", { "dependencies": { "pend": "~1.2.0" } }, "sha512-cE1qsB/VwyQozZ+q1dGxR8LBYNZeofhEdUNGSMbQD3Gw2lAzX9Zb3uIU6Ebc/Fmyjo9AWWfnn0AUCHqtevs/8g=="], "fdir": ["fdir@6.5.0", "", { "peerDependencies": { "picomatch": "^3 || ^4" }, "optionalPeers": ["picomatch"] }, "sha512-tIbYtZbucOs0BRGqPJkshJUYdL+SDH7dVM8gjy+ERp3WAUjLEFJE+02kanyHtwjWOnwrKYBiwAmM0p4kLJAnXg=="], "file-entry-cache": ["file-entry-cache@8.0.0", "", { "dependencies": { "flat-cache": "^4.0.0" } }, "sha512-XXTUwCvisa5oacNGRP9SfNtYBNAMi+RPwBFmblZEF7N7swHYQS6/Zfk7SRwx4D5j3CH211YNRco1DEMNVfZCnQ=="], - "fill-range": ["fill-range@7.1.1", "", { "dependencies": { "to-regex-range": "^5.0.1" } }, "sha512-YsGpe3WHLK8ZYi4tWDg2Jy3ebRz2rXowDxnld4bkQB00cc/1Zw9AWnC0i9ztDJitivtQvaI9KaLyKrc+hBW0yg=="], - "find-up": ["find-up@5.0.0", "", { "dependencies": { "locate-path": "^6.0.0", "path-exists": "^4.0.0" } }, "sha512-78/PXT1wlLLDgTzDs7sjq9hzz0vXD+zn+7wypEe4fXQxCmdmqfGsEPQxmiCSQI3ajFV91bVSsvNtrJRiW6nGng=="], "flat-cache": ["flat-cache@4.0.1", "", { "dependencies": { "flatted": "^3.2.9", "keyv": "^4.5.4" } }, "sha512-f7ccFPK3SXFHpx15UIGyRJ/FJQctuKZ0zVuN3frBo4HnK3cay9VEW0R6yPYFHC0AgqhukPzKjq22t5DmAyqGyw=="], "flatted": ["flatted@3.3.3", "", {}, "sha512-GX+ysw4PBCz0PzosHDepZGANEuFCMLrnRTiEy9McGjmkCQYwRq4A/X786G/fjM/+OjsWSU1ZrY5qyARZmO/uwg=="], - "fraction.js": ["fraction.js@5.3.4", "", {}, "sha512-1X1NTtiJphryn/uLQz3whtY6jK3fTqoE3ohKs0tT+Ujr1W59oopxmoEh7Lu5p6vBaPbgoM0bzveAW4Qi5RyWDQ=="], - "framer-motion": ["framer-motion@12.27.1", "", { "dependencies": { "motion-dom": "^12.27.1", "motion-utils": "^12.24.10", "tslib": "^2.4.0" }, "peerDependencies": { "@emotion/is-prop-valid": "*", "react": "^18.0.0 || ^19.0.0", "react-dom": "^18.0.0 || ^19.0.0" }, "optionalPeers": ["@emotion/is-prop-valid", "react", "react-dom"] }, "sha512-cEAqO69kcZt3gL0TGua8WTgRQfv4J57nqt1zxHtLKwYhAwA0x9kDS/JbMa1hJbwkGY74AGJKvZ9pX/IqWZtZWQ=="], "fsevents": ["fsevents@2.3.3", "", { "os": "darwin" }, "sha512-5xoDfX+fL7faATnagmWPpbFtwh/R77WmMMqqHGS65C3vvB0YHrgF+B1YmZ3441tMj5n63k0212XNoJwzlhffQw=="], - "function-bind": ["function-bind@1.1.2", "", {}, "sha512-7XHNxH7qX9xG5mIwxkhumTox/MIRNcOgDrxWsMt2pAr23WHp6MrRlN7FBSFpCpr+oVO0F744iUgR82nJMfG2SA=="], - "gensync": ["gensync@1.0.0-beta.2", "", {}, "sha512-3hN7NaskYvMDLQY55gnW3NQ+mesEAepTqlg+VEbj7zzqEMBVNhzcGYYeqFo/TlYz6eQiFcp1HcsCZO+nGgS8zg=="], + "get-caller-file": ["get-caller-file@2.0.5", "", {}, "sha512-DyFP3BM/3YHTQOCUL/w0OZHR0lpKeGrxotcHWcqNEdnltqFwXVfhEBQ94eIo34AfQpo0rGki4cyIiftY06h2Fg=="], + + "get-stream": ["get-stream@5.2.0", "", { "dependencies": { "pump": "^3.0.0" } }, "sha512-nBF+F1rAZVCu/p7rjzgA+Yb4lfYXrpl7a6VmJrU8wF9I1CKvP/QwPNZHnOlwbTkY6dvtFIzFMSyQXbLoTQPRpA=="], + + "get-uri": ["get-uri@6.0.5", "", { "dependencies": { "basic-ftp": "^5.0.2", "data-uri-to-buffer": "^6.0.2", "debug": "^4.3.4" } }, "sha512-b1O07XYq8eRuVzBNgJLstU6FYc1tS6wnMtF1I1D9lE8LxZSOGZ7LhxN54yPP6mGw5f2CkXY2BQUL9Fx41qvcIg=="], + "glob-parent": ["glob-parent@6.0.2", "", { "dependencies": { "is-glob": "^4.0.3" } }, "sha512-XxwI8EOhVQgWp6iDL+3b0r86f4d6AX6zSU55HfB4ydCEuXLXc5FcYeOu+nnGftS4TEju/11rt4KJPTMgbfmv4A=="], "globals": ["globals@16.5.0", "", {}, "sha512-c/c15i26VrJ4IRt5Z89DnIzCGDn9EcebibhAOjw5ibqEHsE1wLUgkPn9RDmNcUKyU87GeaL633nyJ+pplFR2ZQ=="], - "has-flag": ["has-flag@4.0.0", "", {}, "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ=="], + "graceful-fs": ["graceful-fs@4.2.11", "", {}, "sha512-RbJ5/jmFcNNCcDV5o9eTnBLJ/HszWV0P73bc+Ff4nS/rJj+YaS6IGyiOL0VoBYX+l1Wrl3k63h/KrH+nhJ0XvQ=="], - "hasown": ["hasown@2.0.2", "", { "dependencies": { "function-bind": "^1.1.2" } }, "sha512-0hJU9SCPvmMzIBdZFqNPXWa6dqh7WdH0cII9y+CyS8rG3nL48Bclra9HmKhVVUHyPWNH5Y7xDwAB7bfgSjkUMQ=="], + "has-flag": ["has-flag@4.0.0", "", {}, "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ=="], "hermes-estree": ["hermes-estree@0.25.1", "", {}, "sha512-0wUoCcLp+5Ev5pDW2OriHC2MJCbwLwuRx+gAqMTOkGKJJiBCLjtrvy4PWUGn6MIVefecRpzoOZ/UV6iGdOr+Cw=="], @@ -600,15 +726,15 @@ "internmap": ["internmap@2.0.3", "", {}, "sha512-5Hh7Y1wQbvY5ooGgPbDaL5iYLAPzMTUrjMulskHLH6wnv/A+1q5rgEaiuqEjB+oxGXIVZs1FF+R/KPN3ZSQYYg=="], - "is-binary-path": ["is-binary-path@2.1.0", "", { "dependencies": { "binary-extensions": "^2.0.0" } }, "sha512-ZMERYes6pDydyuGidse7OsHxtbI7WVeUEozgR/g7rd0xUimYNlvZRE/K2MgZTjWy725IfelLeVcEM97mmtRGXw=="], + "ip-address": ["ip-address@10.1.0", "", {}, "sha512-XXADHxXmvT9+CRxhXg56LJovE+bmWnEWB78LB83VZTprKTmaC5QfruXocxzTZ2Kl0DNwKuBdlIhjL8LeY8Sf8Q=="], - "is-core-module": ["is-core-module@2.16.1", "", { "dependencies": { "hasown": "^2.0.2" } }, "sha512-UfoeMA6fIJ8wTYFEUjelnaGI67v6+N7qXJEvQuIGa99l4xsCruSYOVSQ0uPANn4dAzm8lkYPaKLrrijLq7x23w=="], + "is-arrayish": ["is-arrayish@0.2.1", "", {}, "sha512-zz06S8t0ozoDXMG+ube26zeCTNXcKIPJZJi8hBrF4idCLms4CG9QtK7qBl1boi5ODzFpjswb5JPmHCbMpjaYzg=="], "is-extglob": ["is-extglob@2.1.1", "", {}, "sha512-SbKbANkN603Vi4jEZv49LeVJMn4yGwsbzZworEoyEiutsN3nJYdbO36zfhGJ6QEDpOZIFkDtnq5JRxmvl3jsoQ=="], - "is-glob": ["is-glob@4.0.3", "", { "dependencies": { "is-extglob": "^2.1.1" } }, "sha512-xelSayHH36ZgE7ZWhli7pW34hNbNl8Ojv5KVmkJD4hBdD3th8Tfk9vYasLM+mXWOZhFkgZfxhLSnrwRr4elSSg=="], + "is-fullwidth-code-point": ["is-fullwidth-code-point@3.0.0", "", {}, "sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg=="], - "is-number": ["is-number@7.0.0", "", {}, "sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng=="], + "is-glob": ["is-glob@4.0.3", "", { "dependencies": { "is-extglob": "^2.1.1" } }, "sha512-xelSayHH36ZgE7ZWhli7pW34hNbNl8Ojv5KVmkJD4hBdD3th8Tfk9vYasLM+mXWOZhFkgZfxhLSnrwRr4elSSg=="], "is-potential-custom-element-name": ["is-potential-custom-element-name@1.0.1", "", {}, "sha512-bCYeRA2rVibKZd+s2625gGnGF/t7DSqDs4dP7CrLA1m7jKWz6pps0LpYLJN8Q64HtmPKJ1hrN3nzPNKFEKOUiQ=="], @@ -628,6 +754,8 @@ "json-buffer": ["json-buffer@3.0.1", "", {}, "sha512-4bV5BfR2mqfQTJm+V5tPPdf+ZpuhiIvTuAB5g8kcrXOZpTT/QwwVRWBywX1ozr6lEuPdbHxwaJlm9G6mI2sfSQ=="], + "json-parse-even-better-errors": ["json-parse-even-better-errors@2.3.1", "", {}, "sha512-xyFwyhro/JEof6Ghe2iz2NcXoj2sloNsWr/XsERDK/oiPCfaNhl5ONfp+jQdAZRQQ0IJWNzH9zIZF7li91kh2w=="], + "json-schema-traverse": ["json-schema-traverse@0.4.1", "", {}, "sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg=="], "json-stable-stringify-without-jsonify": ["json-stable-stringify-without-jsonify@1.0.1", "", {}, "sha512-Bdboy+l7tA3OGW6FjyFHWkP5LuByj1Tk33Ljyq0axyzdk9//JSi2u3fP1QSmd1KNwq6VOKYGlAu87CisVir6Pw=="], @@ -642,7 +770,29 @@ "lie": ["lie@3.3.0", "", { "dependencies": { "immediate": "~3.0.5" } }, "sha512-UaiMJzeWRlEujzAuw5LokY1L5ecNQYZKfmyZ9L7wDHb/p5etKaxXhohBcrw0EYby+G/NA52vRSN4N39dxHAIwQ=="], - "lilconfig": ["lilconfig@3.1.3", "", {}, "sha512-/vlFKAoH5Cgt3Ie+JLhRbwOsCQePABiU3tJ1egGvyQ+33R/vcwM2Zl2QR/LzjsBeItPt3oSVXapn+m4nQDvpzw=="], + "lightningcss": ["lightningcss@1.31.1", "", { "dependencies": { "detect-libc": "^2.0.3" }, "optionalDependencies": { "lightningcss-android-arm64": "1.31.1", "lightningcss-darwin-arm64": "1.31.1", "lightningcss-darwin-x64": "1.31.1", "lightningcss-freebsd-x64": "1.31.1", "lightningcss-linux-arm-gnueabihf": "1.31.1", "lightningcss-linux-arm64-gnu": "1.31.1", "lightningcss-linux-arm64-musl": "1.31.1", "lightningcss-linux-x64-gnu": "1.31.1", "lightningcss-linux-x64-musl": "1.31.1", "lightningcss-win32-arm64-msvc": "1.31.1", "lightningcss-win32-x64-msvc": "1.31.1" } }, "sha512-l51N2r93WmGUye3WuFoN5k10zyvrVs0qfKBhyC5ogUQ6Ew6JUSswh78mbSO+IU3nTWsyOArqPCcShdQSadghBQ=="], + + "lightningcss-android-arm64": ["lightningcss-android-arm64@1.31.1", "", { "os": "android", "cpu": "arm64" }, "sha512-HXJF3x8w9nQ4jbXRiNppBCqeZPIAfUo8zE/kOEGbW5NZvGc/K7nMxbhIr+YlFlHW5mpbg/YFPdbnCh1wAXCKFg=="], + + "lightningcss-darwin-arm64": ["lightningcss-darwin-arm64@1.31.1", "", { "os": "darwin", "cpu": "arm64" }, "sha512-02uTEqf3vIfNMq3h/z2cJfcOXnQ0GRwQrkmPafhueLb2h7mqEidiCzkE4gBMEH65abHRiQvhdcQ+aP0D0g67sg=="], + + "lightningcss-darwin-x64": ["lightningcss-darwin-x64@1.31.1", "", { "os": "darwin", "cpu": "x64" }, "sha512-1ObhyoCY+tGxtsz1lSx5NXCj3nirk0Y0kB/g8B8DT+sSx4G9djitg9ejFnjb3gJNWo7qXH4DIy2SUHvpoFwfTA=="], + + "lightningcss-freebsd-x64": ["lightningcss-freebsd-x64@1.31.1", "", { "os": "freebsd", "cpu": "x64" }, "sha512-1RINmQKAItO6ISxYgPwszQE1BrsVU5aB45ho6O42mu96UiZBxEXsuQ7cJW4zs4CEodPUioj/QrXW1r9pLUM74A=="], + + "lightningcss-linux-arm-gnueabihf": ["lightningcss-linux-arm-gnueabihf@1.31.1", "", { "os": "linux", "cpu": "arm" }, "sha512-OOCm2//MZJ87CdDK62rZIu+aw9gBv4azMJuA8/KB74wmfS3lnC4yoPHm0uXZ/dvNNHmnZnB8XLAZzObeG0nS1g=="], + + "lightningcss-linux-arm64-gnu": ["lightningcss-linux-arm64-gnu@1.31.1", "", { "os": "linux", "cpu": "arm64" }, "sha512-WKyLWztD71rTnou4xAD5kQT+982wvca7E6QoLpoawZ1gP9JM0GJj4Tp5jMUh9B3AitHbRZ2/H3W5xQmdEOUlLg=="], + + "lightningcss-linux-arm64-musl": ["lightningcss-linux-arm64-musl@1.31.1", "", { "os": "linux", "cpu": "arm64" }, "sha512-mVZ7Pg2zIbe3XlNbZJdjs86YViQFoJSpc41CbVmKBPiGmC4YrfeOyz65ms2qpAobVd7WQsbW4PdsSJEMymyIMg=="], + + "lightningcss-linux-x64-gnu": ["lightningcss-linux-x64-gnu@1.31.1", "", { "os": "linux", "cpu": "x64" }, "sha512-xGlFWRMl+0KvUhgySdIaReQdB4FNudfUTARn7q0hh/V67PVGCs3ADFjw+6++kG1RNd0zdGRlEKa+T13/tQjPMA=="], + + "lightningcss-linux-x64-musl": ["lightningcss-linux-x64-musl@1.31.1", "", { "os": "linux", "cpu": "x64" }, "sha512-eowF8PrKHw9LpoZii5tdZwnBcYDxRw2rRCyvAXLi34iyeYfqCQNA9rmUM0ce62NlPhCvof1+9ivRaTY6pSKDaA=="], + + "lightningcss-win32-arm64-msvc": ["lightningcss-win32-arm64-msvc@1.31.1", "", { "os": "win32", "cpu": "arm64" }, "sha512-aJReEbSEQzx1uBlQizAOBSjcmr9dCdL3XuC/6HLXAxmtErsj2ICo5yYggg1qOODQMtnjNQv2UHb9NpOuFtYe4w=="], + + "lightningcss-win32-x64-msvc": ["lightningcss-win32-x64-msvc@1.31.1", "", { "os": "win32", "cpu": "x64" }, "sha512-I9aiFrbd7oYHwlnQDqr1Roz+fTz61oDDJX7n9tYF9FJymH1cIN1DtKw3iYt6b8WZgEjoNwVSncwF4wx/ZedMhw=="], "lines-and-columns": ["lines-and-columns@1.2.4", "", {}, "sha512-7ylylesZQ/PV29jhEDl3Ufjo6ZX7gCqJr5F7PKrqc93v7fzSymt1BpwEU8nAUXs8qzzvqhbjhK5QZg6Mt/HkBg=="], @@ -660,94 +810,88 @@ "mdn-data": ["mdn-data@2.12.2", "", {}, "sha512-IEn+pegP1aManZuckezWCO+XZQDplx1366JoVhTpMpBB1sPey/SbveZQUosKiKiGYjg1wH4pMlNgXbCiYgihQA=="], - "merge2": ["merge2@1.4.1", "", {}, "sha512-8q7VEgMJW4J8tcfVPy8g09NcQwZdbwFEqhe/WZkoIzjn/3TGDwtOCYtXGxA3O8tPzpczCCDgv+P2P5y00ZJOOg=="], - - "micromatch": ["micromatch@4.0.8", "", { "dependencies": { "braces": "^3.0.3", "picomatch": "^2.3.1" } }, "sha512-PXwfBhYu0hBCPw8Dn0E+WDYb7af3dSLVWKi3HGv84IdF4TyFoC0ysxFd0Goxw7nSv4T/PzEJQxsYsEiFCKo2BA=="], - "min-indent": ["min-indent@1.0.1", "", {}, "sha512-I9jwMn07Sy/IwOj3zVkVik2JTvgpaykDZEigL6Rx6N9LbMywwUSMtxET+7lVoDLLd3O3IXwJwvuuns8UB/HeAg=="], - "mini-svg-data-uri": ["mini-svg-data-uri@1.4.4", "", { "bin": { "mini-svg-data-uri": "cli.js" } }, "sha512-r9deDe9p5FJUPZAk3A59wGH7Ii9YrjjWw0jmw/liSbHl2CHiyXj6FcDXDu2K3TjVAXqiJdaw3xxwlZZr9E6nHg=="], - "minimatch": ["minimatch@3.1.2", "", { "dependencies": { "brace-expansion": "^1.1.7" } }, "sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw=="], + "mitt": ["mitt@3.0.1", "", {}, "sha512-vKivATfr97l2/QBCYAkXYDbrIWPM2IIKEl7YPhjCvKlG3kE2gm+uBo6nEXK3M5/Ffh/FLpKExzOQ3JJoJGFKBw=="], + "motion-dom": ["motion-dom@12.27.1", "", { "dependencies": { "motion-utils": "^12.24.10" } }, "sha512-V/53DA2nBqKl9O2PMJleSUb/G0dsMMeZplZwgIQf5+X0bxIu7Q1cTv6DrjvTTGYRm3+7Y5wMlRZ1wT61boU/bQ=="], "motion-utils": ["motion-utils@12.24.10", "", {}, "sha512-x5TFgkCIP4pPsRLpKoI86jv/q8t8FQOiM/0E8QKBzfMozWHfkKap2gA1hOki+B5g3IsBNpxbUnfOum1+dgvYww=="], "ms": ["ms@2.1.3", "", {}, "sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA=="], - "mz": ["mz@2.7.0", "", { "dependencies": { "any-promise": "^1.0.0", "object-assign": "^4.0.1", "thenify-all": "^1.0.0" } }, "sha512-z81GNO7nnYMEhrGh9LeymoE4+Yr0Wn5McHIZMK5cfQCl+NDX08sCZgUc9/6MHni9IWuFLm1Z3HTCXu2z9fN62Q=="], - "nanoid": ["nanoid@3.3.11", "", { "bin": { "nanoid": "bin/nanoid.cjs" } }, "sha512-N8SpfPUnUp1bK+PMYW8qSWdl9U+wwNWI4QKxOYDy9JAro3WMX7p2OeVRF9v+347pnakNevPmiHhNmZ2HbFA76w=="], "natural-compare": ["natural-compare@1.4.0", "", {}, "sha512-OWND8ei3VtNC9h7V60qff3SVobHr996CTwgxubgyQYEpg290h9J0buyECNNJexkFm5sOajh5G116RYA1c8ZMSw=="], - "node-releases": ["node-releases@2.0.27", "", {}, "sha512-nmh3lCkYZ3grZvqcCH+fjmQ7X+H0OeZgP40OierEaAptX4XofMh5kwNbWh7lBduUzCcV/8kZ+NDLCwm2iorIlA=="], - - "normalize-path": ["normalize-path@3.0.0", "", {}, "sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA=="], + "netmask": ["netmask@2.0.2", "", {}, "sha512-dBpDMdxv9Irdq66304OLfEmQ9tbNRFnFTuZiLo+bD+r332bBmMJ8GBLXklIXXgxd3+v9+KUnZaUR5PJMa75Gsg=="], - "object-assign": ["object-assign@4.1.1", "", {}, "sha512-rJgTQnkUnH1sFw8yT6VSU3zD3sWmu6sZhIseY8VX+GRu3P6F7Fu+JNDoXfklElbLJSnc3FUQHVe4cU5hj+BcUg=="], + "next": ["next@15.5.12", "", { "dependencies": { "@next/env": "15.5.12", "@swc/helpers": "0.5.15", "caniuse-lite": "^1.0.30001579", "postcss": "8.4.31", "styled-jsx": "5.1.6" }, "optionalDependencies": { "@next/swc-darwin-arm64": "15.5.12", "@next/swc-darwin-x64": "15.5.12", "@next/swc-linux-arm64-gnu": "15.5.12", "@next/swc-linux-arm64-musl": "15.5.12", "@next/swc-linux-x64-gnu": "15.5.12", "@next/swc-linux-x64-musl": "15.5.12", "@next/swc-win32-arm64-msvc": "15.5.12", "@next/swc-win32-x64-msvc": "15.5.12", "sharp": "^0.34.3" }, "peerDependencies": { "@opentelemetry/api": "^1.1.0", "@playwright/test": "^1.51.1", "babel-plugin-react-compiler": "*", "react": "^18.2.0 || 19.0.0-rc-de68d2f4-20241204 || ^19.0.0", "react-dom": "^18.2.0 || 19.0.0-rc-de68d2f4-20241204 || ^19.0.0", "sass": "^1.3.0" }, "optionalPeers": ["@opentelemetry/api", "@playwright/test", "babel-plugin-react-compiler", "sass"], "bin": { "next": "dist/bin/next" } }, "sha512-Fi/wQ4Etlrn60rz78bebG1i1SR20QxvV8tVp6iJspjLUSHcZoeUXCt+vmWoEcza85ElZzExK/jJ/F6SvtGktjA=="], - "object-hash": ["object-hash@3.0.0", "", {}, "sha512-RSn9F68PjH9HqtltsSnqYC1XXoWe9Bju5+213R98cNGttag9q9yAOTzdbsqvIa7aNm5WffBZFpWYr2aWrklWAw=="], + "node-releases": ["node-releases@2.0.27", "", {}, "sha512-nmh3lCkYZ3grZvqcCH+fjmQ7X+H0OeZgP40OierEaAptX4XofMh5kwNbWh7lBduUzCcV/8kZ+NDLCwm2iorIlA=="], "obug": ["obug@2.1.1", "", {}, "sha512-uTqF9MuPraAQ+IsnPf366RG4cP9RtUi7MLO1N3KEc+wb0a6yKpeL0lmk2IB1jY5KHPAlTc6T/JRdC/YqxHNwkQ=="], + "once": ["once@1.4.0", "", { "dependencies": { "wrappy": "1" } }, "sha512-lNaJgI+2Q5URQBkccEKHTQOPaXdUxnZZElQTZY0MFUAuaEqe1E+Nyvgdz/aIyNi6Z9MzO5dv1H8n58/GELp3+w=="], + "optionator": ["optionator@0.9.4", "", { "dependencies": { "deep-is": "^0.1.3", "fast-levenshtein": "^2.0.6", "levn": "^0.4.1", "prelude-ls": "^1.2.1", "type-check": "^0.4.0", "word-wrap": "^1.2.5" } }, "sha512-6IpQ7mKUxRcZNLIObR0hz7lxsapSSIYNZJwXPGeF0mTVqGKFIXj1DQcMoT22S3ROcLyY/rz0PWaWZ9ayWmad9g=="], "p-limit": ["p-limit@3.1.0", "", { "dependencies": { "yocto-queue": "^0.1.0" } }, "sha512-TYOanM3wGwNGsZN2cVTYPArw454xnXj5qmWF1bEoAc4+cU/ol7GVh7odevjp1FNHduHc3KZMcFduxU5Xc6uJRQ=="], "p-locate": ["p-locate@5.0.0", "", { "dependencies": { "p-limit": "^3.0.2" } }, "sha512-LaNjtRWUBY++zB5nE/NwcaoMylSPk+S+ZHNB1TzdbMJMny6dynpAGt7X/tl/QYq3TIeE6nxHppbo2LGymrG5Pw=="], + "pac-proxy-agent": ["pac-proxy-agent@7.2.0", "", { "dependencies": { "@tootallnate/quickjs-emscripten": "^0.23.0", "agent-base": "^7.1.2", "debug": "^4.3.4", "get-uri": "^6.0.1", "http-proxy-agent": "^7.0.0", "https-proxy-agent": "^7.0.6", "pac-resolver": "^7.0.1", "socks-proxy-agent": "^8.0.5" } }, "sha512-TEB8ESquiLMc0lV8vcd5Ql/JAKAoyzHFXaStwjkzpOpC5Yv+pIzLfHvjTSdf3vpa2bMiUQrg9i6276yn8666aA=="], + + "pac-resolver": ["pac-resolver@7.0.1", "", { "dependencies": { "degenerator": "^5.0.0", "netmask": "^2.0.2" } }, "sha512-5NPgf87AT2STgwa2ntRMr45jTKrYBGkVU36yT0ig/n/GMAa3oPqhZfIQ2kMEimReg0+t9kZViDVZ83qfVUlckg=="], + "pako": ["pako@1.0.11", "", {}, "sha512-4hLB8Py4zZce5s4yd9XzopqwVv/yGNhV1Bl8NTmCq1763HeK2+EwVTv+leGeL13Dnh2wfbqowVPXCIO0z4taYw=="], "parent-module": ["parent-module@1.0.1", "", { "dependencies": { "callsites": "^3.0.0" } }, "sha512-GQ2EWRpQV8/o+Aw8YqtfZZPfNRWZYkbidE9k5rpl/hC3vtHHBfGm2Ifi6qWV+coDGkrUKZAxE3Lot5kcsRlh+g=="], + "parse-json": ["parse-json@5.2.0", "", { "dependencies": { "@babel/code-frame": "^7.0.0", "error-ex": "^1.3.1", "json-parse-even-better-errors": "^2.3.0", "lines-and-columns": "^1.1.6" } }, "sha512-ayCKvm/phCGxOkYRSCM82iDwct8/EonSEgCSxWxD7ve6jHggsFl4fZVQBPRNgQoKiuV/odhFrGzQXZwbifC8Rg=="], + "parse5": ["parse5@8.0.0", "", { "dependencies": { "entities": "^6.0.0" } }, "sha512-9m4m5GSgXjL4AjumKzq1Fgfp3Z8rsvjRNbnkVwfu2ImRqE5D0LnY2QfDen18FSY9C573YU5XxSapdHZTZ2WolA=="], "path-exists": ["path-exists@4.0.0", "", {}, "sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w=="], "path-key": ["path-key@3.1.1", "", {}, "sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q=="], - "path-parse": ["path-parse@1.0.7", "", {}, "sha512-LDJzPVEEEPR+y48z93A0Ed0yXb8pAByGWo/k5YYdYgpY2/2EsOsksJrq7lOHxryrVOn1ejG6oAp8ahvOIQD8sw=="], - "pathe": ["pathe@2.0.3", "", {}, "sha512-WUjGcAqP1gQacoQe+OBJsFA7Ld4DyXuUIjZ5cc75cLHvJ7dtNsTugphxIADwspS+AraAUePCKrSVtPLFj/F88w=="], + "pend": ["pend@1.2.0", "", {}, "sha512-F3asv42UuXchdzt+xXqfW1OGlVBe+mxa2mqI0pg5yAHZPvFmY3Y6drSf/GQ1A86WgWEN9Kzh/WrgKa6iGcHXLg=="], + "picocolors": ["picocolors@1.1.1", "", {}, "sha512-xceH2snhtb5M9liqDsmEw56le376mTZkEX/jEb/RxNFyegNul7eNslCXP9FDj/Lcu0X8KEyMceP2ntpaHrDEVA=="], "picomatch": ["picomatch@4.0.3", "", {}, "sha512-5gTmgEY/sqK6gFXLIsQNH19lWb4ebPDLA4SdLP7dsWkIXHWlG66oPuVvXSGFPppYZz8ZDZq0dYYrbHfBCVUb1Q=="], - "pify": ["pify@2.3.0", "", {}, "sha512-udgsAY+fTnvv7kI7aaxbqwWNb0AHiB0qBO89PZKPkoTmGOgdbrHDKD+0B2X4uTfJ/FT1R09r9gTsjUjNJotuog=="], - - "pirates": ["pirates@4.0.7", "", {}, "sha512-TfySrs/5nm8fQJDcBDuUng3VOUKsd7S+zqvbOTiGXHfxX4wK31ard+hoNuvkicM/2YFzlpDgABOevKSsB4G/FA=="], - "postcss": ["postcss@8.5.6", "", { "dependencies": { "nanoid": "^3.3.11", "picocolors": "^1.1.1", "source-map-js": "^1.2.1" } }, "sha512-3Ybi1tAuwAP9s0r1UQ2J4n5Y0G05bJkpUIO0/bI9MhwmD70S5aTWbXGBwxHrelT+XM1k6dM0pk+SwNkpTRN7Pg=="], - "postcss-import": ["postcss-import@15.1.0", "", { "dependencies": { "postcss-value-parser": "^4.0.0", "read-cache": "^1.0.0", "resolve": "^1.1.7" }, "peerDependencies": { "postcss": "^8.0.0" } }, "sha512-hpr+J05B2FVYUAXHeK1YyI267J/dDDhMU6B6civm8hSY1jYJnBXxzKDKDswzJmtLHryrjhnDjqqp/49t8FALew=="], + "pptxgenjs": ["pptxgenjs@4.0.1", "", { "dependencies": { "@types/node": "^22.8.1", "https": "^1.0.0", "image-size": "^1.2.1", "jszip": "^3.10.1" } }, "sha512-TeJISr8wouAuXw4C1F/mC33xbZs/FuEG6nH9FG1Zj+nuPcGMP5YRHl6X+j3HSUnS1f3at6k75ZZXPMZlA5Lj9A=="], - "postcss-js": ["postcss-js@4.1.0", "", { "dependencies": { "camelcase-css": "^2.0.1" }, "peerDependencies": { "postcss": "^8.4.21" } }, "sha512-oIAOTqgIo7q2EOwbhb8UalYePMvYoIeRY2YKntdpFQXNosSu3vLrniGgmH9OKs/qAkfoj5oB3le/7mINW1LCfw=="], + "prelude-ls": ["prelude-ls@1.2.1", "", {}, "sha512-vkcDPrRZo1QZLbn5RLGPpg/WmIQ65qoWWhcGKf/b5eplkkarX0m9z8ppCat4mlOqUsWpyNuYgO3VRyrYHSzX5g=="], - "postcss-load-config": ["postcss-load-config@6.0.1", "", { "dependencies": { "lilconfig": "^3.1.1" }, "peerDependencies": { "jiti": ">=1.21.0", "postcss": ">=8.0.9", "tsx": "^4.8.1", "yaml": "^2.4.2" }, "optionalPeers": ["jiti", "postcss", "tsx", "yaml"] }, "sha512-oPtTM4oerL+UXmx+93ytZVN82RrlY/wPUV8IeDxFrzIjXOLF1pN+EmKPLbubvKHT2HC20xXsCAH2Z+CKV6Oz/g=="], + "pretty-format": ["pretty-format@27.5.1", "", { "dependencies": { "ansi-regex": "^5.0.1", "ansi-styles": "^5.0.0", "react-is": "^17.0.1" } }, "sha512-Qb1gy5OrP5+zDf2Bvnzdl3jsTf1qXVMazbvCoKhtKqVs4/YK4ozX4gKQJJVyNe+cajNPn0KoC0MC3FUmaHWEmQ=="], - "postcss-nested": ["postcss-nested@6.2.0", "", { "dependencies": { "postcss-selector-parser": "^6.1.1" }, "peerDependencies": { "postcss": "^8.2.14" } }, "sha512-HQbt28KulC5AJzG+cZtj9kvKB93CFCdLvog1WFLf1D+xmMvPGlBstkpTEZfK5+AN9hfJocyBFCNiqyS48bpgzQ=="], + "process-nextick-args": ["process-nextick-args@2.0.1", "", {}, "sha512-3ouUOpQhtgrbOa17J7+uxOTpITYWaGP7/AhoR3+A+/1e9skrzelGi/dXzEYyvbxubEF6Wn2ypscTKiKJFFn1ag=="], - "postcss-selector-parser": ["postcss-selector-parser@6.1.2", "", { "dependencies": { "cssesc": "^3.0.0", "util-deprecate": "^1.0.2" } }, "sha512-Q8qQfPiZ+THO/3ZrOrO0cJJKfpYCagtMUkXbnEfmgUjwXg6z/WBeOyS9APBBPCTSiDV+s4SwQGu8yFsiMRIudg=="], + "progress": ["progress@2.0.3", "", {}, "sha512-7PiHtLll5LdnKIMw100I+8xJXR5gW2QwWYkT6iJva0bXitZKa/XMrSbdmg3r2Xnaidz9Qumd0VPaMrZlF9V9sA=="], - "postcss-value-parser": ["postcss-value-parser@4.2.0", "", {}, "sha512-1NNCs6uurfkVbeXG4S8JFT9t19m45ICnif8zWLd5oPSZ50QnwMfK+H3jv408d4jw/7Bttv5axS5IiHoLaVNHeQ=="], + "proxy-agent": ["proxy-agent@6.5.0", "", { "dependencies": { "agent-base": "^7.1.2", "debug": "^4.3.4", "http-proxy-agent": "^7.0.1", "https-proxy-agent": "^7.0.6", "lru-cache": "^7.14.1", "pac-proxy-agent": "^7.1.0", "proxy-from-env": "^1.1.0", "socks-proxy-agent": "^8.0.5" } }, "sha512-TmatMXdr2KlRiA2CyDu8GqR8EjahTG3aY3nXjdzFyoZbmB8hrBsTyMezhULIXKnC0jpfjlmiZ3+EaCzoInSu/A=="], - "pptxgenjs": ["pptxgenjs@4.0.1", "", { "dependencies": { "@types/node": "^22.8.1", "https": "^1.0.0", "image-size": "^1.2.1", "jszip": "^3.10.1" } }, "sha512-TeJISr8wouAuXw4C1F/mC33xbZs/FuEG6nH9FG1Zj+nuPcGMP5YRHl6X+j3HSUnS1f3at6k75ZZXPMZlA5Lj9A=="], + "proxy-from-env": ["proxy-from-env@1.1.0", "", {}, "sha512-D+zkORCbA9f1tdWRK0RaCR3GPv50cMxcrz4X8k5LTSUD1Dkw47mKJEZQNunItRTkWwgtaUSo1RVFRIG9ZXiFYg=="], - "prelude-ls": ["prelude-ls@1.2.1", "", {}, "sha512-vkcDPrRZo1QZLbn5RLGPpg/WmIQ65qoWWhcGKf/b5eplkkarX0m9z8ppCat4mlOqUsWpyNuYgO3VRyrYHSzX5g=="], + "pump": ["pump@3.0.4", "", { "dependencies": { "end-of-stream": "^1.1.0", "once": "^1.3.1" } }, "sha512-VS7sjc6KR7e1ukRFhQSY5LM2uBWAUPiOPa/A3mkKmiMwSmRFUITt0xuj+/lesgnCv+dPIEYlkzrcyXgquIHMcA=="], - "pretty-format": ["pretty-format@27.5.1", "", { "dependencies": { "ansi-regex": "^5.0.1", "ansi-styles": "^5.0.0", "react-is": "^17.0.1" } }, "sha512-Qb1gy5OrP5+zDf2Bvnzdl3jsTf1qXVMazbvCoKhtKqVs4/YK4ozX4gKQJJVyNe+cajNPn0KoC0MC3FUmaHWEmQ=="], + "punycode": ["punycode@2.3.1", "", {}, "sha512-vYt7UD1U9Wg6138shLtLOvdAu+8DsC/ilFtEVHcH+wydcSpNE20AfSOduf6MkRFahL5FY7X1oU7nKVZFtfq8Fg=="], - "process-nextick-args": ["process-nextick-args@2.0.1", "", {}, "sha512-3ouUOpQhtgrbOa17J7+uxOTpITYWaGP7/AhoR3+A+/1e9skrzelGi/dXzEYyvbxubEF6Wn2ypscTKiKJFFn1ag=="], + "puppeteer": ["puppeteer@24.38.0", "", { "dependencies": { "@puppeteer/browsers": "2.13.0", "chromium-bidi": "14.0.0", "cosmiconfig": "^9.0.0", "devtools-protocol": "0.0.1581282", "puppeteer-core": "24.38.0", "typed-query-selector": "^2.12.1" }, "bin": { "puppeteer": "lib/cjs/puppeteer/node/cli.js" } }, "sha512-abnJOBVoL9PQTLKSbYGm9mjNFyIPaTVj77J/6cS370dIQtcZMpx8wyZoAuBzR71Aoon6yvI71NEVFUsl3JU82g=="], - "punycode": ["punycode@2.3.1", "", {}, "sha512-vYt7UD1U9Wg6138shLtLOvdAu+8DsC/ilFtEVHcH+wydcSpNE20AfSOduf6MkRFahL5FY7X1oU7nKVZFtfq8Fg=="], + "puppeteer-core": ["puppeteer-core@24.38.0", "", { "dependencies": { "@puppeteer/browsers": "2.13.0", "chromium-bidi": "14.0.0", "debug": "^4.4.3", "devtools-protocol": "0.0.1581282", "typed-query-selector": "^2.12.1", "webdriver-bidi-protocol": "0.4.1", "ws": "^8.19.0" } }, "sha512-zB3S/tksIhgi2gZRndUe07AudBz5SXOB7hqG0kEa9/YXWrGwlVlYm3tZtwKgfRftBzbmLQl5iwHkQQl04n/mWw=="], "queue": ["queue@6.0.2", "", { "dependencies": { "inherits": "~2.0.3" } }, "sha512-iHZWu+q3IdFZFX36ro/lKBkSvfkztY5Y7HMiPlOUjhupPcG2JMfst2KKEpu5XndviX/3UhFbRngUPNKtgvtZiA=="], - "queue-microtask": ["queue-microtask@1.2.3", "", {}, "sha512-NuaNSa6flKT5JaSYQzJok04JzTL1CA6aGhv5rfLW3PgqA+M2ChpZQnAC8h8i4ZFkBS8X5RqkDBHA7r4hej3K9A=="], - "react": ["react@19.2.3", "", {}, "sha512-Ku/hhYbVjOQnXDZFv2+RibmLFGwFdeeKHFcOTlrt7xplBnya5OGn/hIRDsqDiSUcfORsDC7MPxwork8jBwsIWA=="], "react-dom": ["react-dom@19.2.3", "", { "dependencies": { "scheduler": "^0.27.0" }, "peerDependencies": { "react": "^19.2.3" } }, "sha512-yELu4WmLPw5Mr/lmeEpox5rw3RETacE++JgHqQzd2dg+YbJuat3jH4ingc+WPZhxaoFzdv9y33G+F7Nl5O0GBg=="], @@ -758,12 +902,8 @@ "react-refresh": ["react-refresh@0.18.0", "", {}, "sha512-QgT5//D3jfjJb6Gsjxv0Slpj23ip+HtOpnNgnb2S5zU3CB26G/IDPGoy4RJB42wzFE46DRsstbW6tKHoKbhAxw=="], - "read-cache": ["read-cache@1.0.0", "", { "dependencies": { "pify": "^2.3.0" } }, "sha512-Owdv/Ft7IjOgm/i0xvNDZ1LrRANRfew4b2prF3OWMQLxLfu3bS8FVhCsrSCMK4lR56Y9ya+AThoTpDCTxCmpRA=="], - "readable-stream": ["readable-stream@2.3.8", "", { "dependencies": { "core-util-is": "~1.0.0", "inherits": "~2.0.3", "isarray": "~1.0.0", "process-nextick-args": "~2.0.0", "safe-buffer": "~5.1.1", "string_decoder": "~1.1.1", "util-deprecate": "~1.0.1" } }, "sha512-8p0AUk4XODgIewSi0l8Epjs+EVnWiK7NoDIEGU0HhE7+ZyY8D1IMY7odu5lRrFXGg71L15KG8QrPmum45RTtdA=="], - "readdirp": ["readdirp@3.6.0", "", { "dependencies": { "picomatch": "^2.2.1" } }, "sha512-hOS089on8RduqdbhvQ5Z37A0ESjsqz6qnRcffsMU3495FuTdqSm+7bhJ29JvIOsBDEEnan5DPu9t3To9VRlMzA=="], - "recharts": ["recharts@3.6.0", "", { "dependencies": { "@reduxjs/toolkit": "1.x.x || 2.x.x", "clsx": "^2.1.1", "decimal.js-light": "^2.5.1", "es-toolkit": "^1.39.3", "eventemitter3": "^5.0.1", "immer": "^10.1.1", "react-redux": "8.x.x || 9.x.x", "reselect": "5.1.1", "tiny-invariant": "^1.3.3", "use-sync-external-store": "^1.2.2", "victory-vendor": "^37.0.2" }, "peerDependencies": { "react": "^16.8.0 || ^17.0.0 || ^18.0.0 || ^19.0.0", "react-dom": "^16.0.0 || ^17.0.0 || ^18.0.0 || ^19.0.0", "react-is": "^16.8.0 || ^17.0.0 || ^18.0.0 || ^19.0.0" } }, "sha512-L5bjxvQRAe26RlToBAziKUB7whaGKEwD3znoM6fz3DrTowCIC/FnJYnuq1GEzB8Zv2kdTfaxQfi5GoH0tBinyg=="], "redent": ["redent@3.0.0", "", { "dependencies": { "indent-string": "^4.0.0", "strip-indent": "^3.0.0" } }, "sha512-6tDA8g98We0zd0GvVeMT9arEOnTw9qM03L9cJXaCjrip1OO764RDBLBfrB4cwzNGDj5OA5ioymC9GkizgWJDUg=="], @@ -772,20 +912,16 @@ "redux-thunk": ["redux-thunk@3.1.0", "", { "peerDependencies": { "redux": "^5.0.0" } }, "sha512-NW2r5T6ksUKXCabzhL9z+h206HQw/NJkcLm1GPImRQ8IzfXwRGqjVhKJGauHirT0DAuyy6hjdnMZaRoAcy0Klw=="], + "require-directory": ["require-directory@2.1.1", "", {}, "sha512-fGxEI7+wsG9xrvdjsrlmL22OMTTiHRwAMroiEeMgq8gzoLC/PQr7RsRDSTLUg/bZAZtF+TVIkHc6/4RIKrui+Q=="], + "require-from-string": ["require-from-string@2.0.2", "", {}, "sha512-Xf0nWe6RseziFMu+Ap9biiUbmplq6S9/p+7w7YXP/JBHhrUDDUhwa+vANyubuqfZWTveU//DYVGsDG7RKL/vEw=="], "reselect": ["reselect@5.1.1", "", {}, "sha512-K/BG6eIky/SBpzfHZv/dd+9JBFiS4SWV7FIujVyJRux6e45+73RaUHXLmIR1f7WOMaQ0U1km6qwklRQxpJJY0w=="], - "resolve": ["resolve@1.22.11", "", { "dependencies": { "is-core-module": "^2.16.1", "path-parse": "^1.0.7", "supports-preserve-symlinks-flag": "^1.0.0" }, "bin": { "resolve": "bin/resolve" } }, "sha512-RfqAvLnMl313r7c9oclB1HhUEAezcpLjz95wFH4LVuhk9JF/r22qmVP9AMmOU4vMX7Q8pN8jwNg/CSpdFnMjTQ=="], - "resolve-from": ["resolve-from@4.0.0", "", {}, "sha512-pb/MYmXstAkysRFx8piNI1tGFNQIFA3vkE3Gq4EuA1dF6gHp/+vgZqsCGJapvy8N3Q+4o7FwvquPJcnZ7RYy4g=="], - "reusify": ["reusify@1.1.0", "", {}, "sha512-g6QUff04oZpHs0eG5p83rFLhHeV00ug/Yf9nZM6fLeUrPguBTkTQOdpAWWspMh55TZfVQDPaN3NQJfbVRAxdIw=="], - "rollup": ["rollup@4.55.2", "", { "dependencies": { "@types/estree": "1.0.8" }, "optionalDependencies": { "@rollup/rollup-android-arm-eabi": "4.55.2", "@rollup/rollup-android-arm64": "4.55.2", "@rollup/rollup-darwin-arm64": "4.55.2", "@rollup/rollup-darwin-x64": "4.55.2", "@rollup/rollup-freebsd-arm64": "4.55.2", "@rollup/rollup-freebsd-x64": "4.55.2", "@rollup/rollup-linux-arm-gnueabihf": "4.55.2", "@rollup/rollup-linux-arm-musleabihf": "4.55.2", "@rollup/rollup-linux-arm64-gnu": "4.55.2", "@rollup/rollup-linux-arm64-musl": "4.55.2", "@rollup/rollup-linux-loong64-gnu": "4.55.2", "@rollup/rollup-linux-loong64-musl": "4.55.2", "@rollup/rollup-linux-ppc64-gnu": "4.55.2", "@rollup/rollup-linux-ppc64-musl": "4.55.2", "@rollup/rollup-linux-riscv64-gnu": "4.55.2", "@rollup/rollup-linux-riscv64-musl": "4.55.2", "@rollup/rollup-linux-s390x-gnu": "4.55.2", "@rollup/rollup-linux-x64-gnu": "4.55.2", "@rollup/rollup-linux-x64-musl": "4.55.2", "@rollup/rollup-openbsd-x64": "4.55.2", "@rollup/rollup-openharmony-arm64": "4.55.2", "@rollup/rollup-win32-arm64-msvc": "4.55.2", "@rollup/rollup-win32-ia32-msvc": "4.55.2", "@rollup/rollup-win32-x64-gnu": "4.55.2", "@rollup/rollup-win32-x64-msvc": "4.55.2", "fsevents": "~2.3.2" }, "bin": { "rollup": "dist/bin/rollup" } }, "sha512-PggGy4dhwx5qaW+CKBilA/98Ql9keyfnb7lh4SR6shQ91QQQi1ORJ1v4UinkdP2i87OBs9AQFooQylcrrRfIcg=="], - "run-parallel": ["run-parallel@1.2.0", "", { "dependencies": { "queue-microtask": "^1.2.2" } }, "sha512-5l4VyZR86LZ/lDxZTR6jqL8AFE2S0IFLMP26AbjsLVADxHdhB/c0GUsH+y39UfCi3dzz8OlQuPmnaJOMoDHQBA=="], - "safe-buffer": ["safe-buffer@5.1.2", "", {}, "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g=="], "saxes": ["saxes@6.0.0", "", { "dependencies": { "xmlchars": "^2.2.0" } }, "sha512-xAg7SOnEhrm5zI3puOOKyy1OMcMlIJZYNJY7xLBwSze0UjhPLnWfj2GF2EpT0jmzaJKIWKHLsaSSajf35bcYnA=="], @@ -796,37 +932,57 @@ "setimmediate": ["setimmediate@1.0.5", "", {}, "sha512-MATJdZp8sLqDl/68LfQmbP8zKPLQNV6BIZoIgrscFDQ+RsvK/BxeDQOgyxKKoh0y/8h3BqVFnCqQ/gd+reiIXA=="], + "sharp": ["sharp@0.34.5", "", { "dependencies": { "@img/colour": "^1.0.0", "detect-libc": "^2.1.2", "semver": "^7.7.3" }, "optionalDependencies": { "@img/sharp-darwin-arm64": "0.34.5", "@img/sharp-darwin-x64": "0.34.5", "@img/sharp-libvips-darwin-arm64": "1.2.4", "@img/sharp-libvips-darwin-x64": "1.2.4", "@img/sharp-libvips-linux-arm": "1.2.4", "@img/sharp-libvips-linux-arm64": "1.2.4", "@img/sharp-libvips-linux-ppc64": "1.2.4", "@img/sharp-libvips-linux-riscv64": "1.2.4", "@img/sharp-libvips-linux-s390x": "1.2.4", "@img/sharp-libvips-linux-x64": "1.2.4", "@img/sharp-libvips-linuxmusl-arm64": "1.2.4", "@img/sharp-libvips-linuxmusl-x64": "1.2.4", "@img/sharp-linux-arm": "0.34.5", "@img/sharp-linux-arm64": "0.34.5", "@img/sharp-linux-ppc64": "0.34.5", "@img/sharp-linux-riscv64": "0.34.5", "@img/sharp-linux-s390x": "0.34.5", "@img/sharp-linux-x64": "0.34.5", "@img/sharp-linuxmusl-arm64": "0.34.5", "@img/sharp-linuxmusl-x64": "0.34.5", "@img/sharp-wasm32": "0.34.5", "@img/sharp-win32-arm64": "0.34.5", "@img/sharp-win32-ia32": "0.34.5", "@img/sharp-win32-x64": "0.34.5" } }, "sha512-Ou9I5Ft9WNcCbXrU9cMgPBcCK8LiwLqcbywW3t4oDV37n1pzpuNLsYiAV8eODnjbtQlSDwZ2cUEeQz4E54Hltg=="], + "shebang-command": ["shebang-command@2.0.0", "", { "dependencies": { "shebang-regex": "^3.0.0" } }, "sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA=="], "shebang-regex": ["shebang-regex@3.0.0", "", {}, "sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A=="], "siginfo": ["siginfo@2.0.0", "", {}, "sha512-ybx0WO1/8bSBLEWXZvEd7gMW3Sn3JFlW3TvX1nREbDLRNQNaeNN8WK0meBwPdAaOI7TtRRRJn/Es1zhrrCHu7g=="], + "smart-buffer": ["smart-buffer@4.2.0", "", {}, "sha512-94hK0Hh8rPqQl2xXc3HsaBoOXKV20MToPkcXvwbISWLEs+64sBq5kFgn2kJDHb1Pry9yrP0dxrCI9RRci7RXKg=="], + + "socks": ["socks@2.8.7", "", { "dependencies": { "ip-address": "^10.0.1", "smart-buffer": "^4.2.0" } }, "sha512-HLpt+uLy/pxB+bum/9DzAgiKS8CX1EvbWxI4zlmgGCExImLdiad2iCwXT5Z4c9c3Eq8rP2318mPW2c+QbtjK8A=="], + + "socks-proxy-agent": ["socks-proxy-agent@8.0.5", "", { "dependencies": { "agent-base": "^7.1.2", "debug": "^4.3.4", "socks": "^2.8.3" } }, "sha512-HehCEsotFqbPW9sJ8WVYB6UbmIMv7kUUORIF2Nncq4VQvBfNBLibW9YZR5dlYCSUhwcD628pRllm7n+E+YTzJw=="], + + "source-map": ["source-map@0.6.1", "", {}, "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g=="], + "source-map-js": ["source-map-js@1.2.1", "", {}, "sha512-UXWMKhLOwVKb728IUtQPXxfYU+usdybtUrK/8uGE8CQMvrhOpwvzDBwj0QhSL7MQc7vIsISBG8VQ8+IDQxpfQA=="], "stackback": ["stackback@0.0.2", "", {}, "sha512-1XMJE5fQo1jGH6Y/7ebnwPOBEkIEnT4QF32d5R1+VXdXveM0IBMJt8zfaxX1P3QhVwrYe+576+jkANtSS2mBbw=="], "std-env": ["std-env@3.10.0", "", {}, "sha512-5GS12FdOZNliM5mAOxFRg7Ir0pWz8MdpYm6AY6VPkGpbA7ZzmbzNcBJQ0GPvvyWgcY7QAhCgf9Uy89I03faLkg=="], + "streamx": ["streamx@2.23.0", "", { "dependencies": { "events-universal": "^1.0.0", "fast-fifo": "^1.3.2", "text-decoder": "^1.1.0" } }, "sha512-kn+e44esVfn2Fa/O0CPFcex27fjIL6MkVae0Mm6q+E6f0hWv578YCERbv+4m02cjxvDsPKLnmxral/rR6lBMAg=="], + + "string-width": ["string-width@4.2.3", "", { "dependencies": { "emoji-regex": "^8.0.0", "is-fullwidth-code-point": "^3.0.0", "strip-ansi": "^6.0.1" } }, "sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g=="], + "string_decoder": ["string_decoder@1.1.1", "", { "dependencies": { "safe-buffer": "~5.1.0" } }, "sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg=="], + "strip-ansi": ["strip-ansi@6.0.1", "", { "dependencies": { "ansi-regex": "^5.0.1" } }, "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A=="], + "strip-indent": ["strip-indent@3.0.0", "", { "dependencies": { "min-indent": "^1.0.0" } }, "sha512-laJTa3Jb+VQpaC6DseHhF7dXVqHTfJPCRDaEbid/drOhgitgYku/letMUqOXFoWV0zIIUbjpdH2t+tYj4bQMRQ=="], "strip-json-comments": ["strip-json-comments@3.1.1", "", {}, "sha512-6fPc+R4ihwqP6N/aIv2f1gMH8lOVtWQHoqC4yK6oSDVVocumAsfCqjkXnqiYMhmMwS/mEHLp7Vehlt3ql6lEig=="], - "sucrase": ["sucrase@3.35.1", "", { "dependencies": { "@jridgewell/gen-mapping": "^0.3.2", "commander": "^4.0.0", "lines-and-columns": "^1.1.6", "mz": "^2.7.0", "pirates": "^4.0.1", "tinyglobby": "^0.2.11", "ts-interface-checker": "^0.1.9" }, "bin": { "sucrase": "bin/sucrase", "sucrase-node": "bin/sucrase-node" } }, "sha512-DhuTmvZWux4H1UOnWMB3sk0sbaCVOoQZjv8u1rDoTV0HTdGem9hkAZtl4JZy8P2z4Bg0nT+YMeOFyVr4zcG5Tw=="], + "styled-jsx": ["styled-jsx@5.1.6", "", { "dependencies": { "client-only": "0.0.1" }, "peerDependencies": { "react": ">= 16.8.0 || 17.x.x || ^18.0.0-0 || ^19.0.0-0" } }, "sha512-qSVyDTeMotdvQYoHWLNGwRFJHC+i+ZvdBRYosOFgC+Wg1vx4frN2/RG/NA7SYqqvKNLf39P2LSRA2pu6n0XYZA=="], "supports-color": ["supports-color@7.2.0", "", { "dependencies": { "has-flag": "^4.0.0" } }, "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw=="], - "supports-preserve-symlinks-flag": ["supports-preserve-symlinks-flag@1.0.0", "", {}, "sha512-ot0WnXS9fgdkgIcePe6RHNk1WA8+muPa6cSjeR3V8K27q9BB1rTE3R1p7Hv0z1ZyAc8s6Vvv8DIyWf681MAt0w=="], - "symbol-tree": ["symbol-tree@3.2.4", "", {}, "sha512-9QNk5KwDF+Bvz+PyObkmSYjI5ksVUYtjW7AU22r2NKcfLJcXp96hkDWU3+XndOsUb+AQ9QhfzfCT2O+CNWT5Tw=="], - "tailwindcss": ["tailwindcss@3.4.19", "", { "dependencies": { "@alloc/quick-lru": "^5.2.0", "arg": "^5.0.2", "chokidar": "^3.6.0", "didyoumean": "^1.2.2", "dlv": "^1.1.3", "fast-glob": "^3.3.2", "glob-parent": "^6.0.2", "is-glob": "^4.0.3", "jiti": "^1.21.7", "lilconfig": "^3.1.3", "micromatch": "^4.0.8", "normalize-path": "^3.0.0", "object-hash": "^3.0.0", "picocolors": "^1.1.1", "postcss": "^8.4.47", "postcss-import": "^15.1.0", "postcss-js": "^4.0.1", "postcss-load-config": "^4.0.2 || ^5.0 || ^6.0", "postcss-nested": "^6.2.0", "postcss-selector-parser": "^6.1.2", "resolve": "^1.22.8", "sucrase": "^3.35.0" }, "bin": { "tailwind": "lib/cli.js", "tailwindcss": "lib/cli.js" } }, "sha512-3ofp+LL8E+pK/JuPLPggVAIaEuhvIz4qNcf3nA1Xn2o/7fb7s/TYpHhwGDv1ZU3PkBluUVaF8PyCHcm48cKLWQ=="], + "tailwindcss": ["tailwindcss@4.2.1", "", {}, "sha512-/tBrSQ36vCleJkAOsy9kbNTgaxvGbyOamC30PRePTQe/o1MFwEKHQk4Cn7BNGaPtjp+PuUrByJehM1hgxfq4sw=="], + + "tapable": ["tapable@2.3.0", "", {}, "sha512-g9ljZiwki/LfxmQADO3dEY1CbpmXT5Hm2fJ+QaGKwSXUylMybePR7/67YW7jOrrvjEgL1Fmz5kzyAjWVWLlucg=="], - "thenify": ["thenify@3.3.1", "", { "dependencies": { "any-promise": "^1.0.0" } }, "sha512-RVZSIV5IG10Hk3enotrhvz0T9em6cyHBLkH/YAZuKqd8hRkKhSfCGIcP2KUY0EPxndzANBmNllzWPwak+bheSw=="], + "tar-fs": ["tar-fs@3.1.1", "", { "dependencies": { "pump": "^3.0.0", "tar-stream": "^3.1.5" }, "optionalDependencies": { "bare-fs": "^4.0.1", "bare-path": "^3.0.0" } }, "sha512-LZA0oaPOc2fVo82Txf3gw+AkEd38szODlptMYejQUhndHMLQ9M059uXR+AfS7DNo0NpINvSqDsvyaCrBVkptWg=="], - "thenify-all": ["thenify-all@1.6.0", "", { "dependencies": { "thenify": ">= 3.1.0 < 4" } }, "sha512-RNxQH/qI8/t3thXJDwcstUO4zeqo64+Uy/+sNVRBx4Xn2OX+OZ9oP+iJnNFqplFra2ZUVeKCSa2oVWi3T4uVmA=="], + "tar-stream": ["tar-stream@3.1.8", "", { "dependencies": { "b4a": "^1.6.4", "bare-fs": "^4.5.5", "fast-fifo": "^1.2.0", "streamx": "^2.15.0" } }, "sha512-U6QpVRyCGHva435KoNWy9PRoi2IFYCgtEhq9nmrPPpbRacPs9IH4aJ3gbrFC8dPcXvdSZ4XXfXT5Fshbp2MtlQ=="], + + "teex": ["teex@1.0.1", "", { "dependencies": { "streamx": "^2.12.5" } }, "sha512-eYE6iEI62Ni1H8oIa7KlDU6uQBtqr4Eajni3wX7rpfXD8ysFx8z0+dri+KWEPWpBsxXfxu58x/0jvTVT1ekOSg=="], + + "text-decoder": ["text-decoder@1.2.7", "", { "dependencies": { "b4a": "^1.6.4" } }, "sha512-vlLytXkeP4xvEq2otHeJfSQIRyWxo/oZGEbXrtEEF9Hnmrdly59sUbzZ/QgyWuLYHctCHxFF4tRQZNQ9k60ExQ=="], "tiny-invariant": ["tiny-invariant@1.3.3", "", {}, "sha512-+FbBPE1o9QAYvviau/qC5SE3caw21q3xkvWKBtja5vgqOWIHHJ3ioaq1VPfn/Szqctz2bU/oYeKd9/z5BL+PVg=="], @@ -842,20 +998,18 @@ "tldts-core": ["tldts-core@7.0.19", "", {}, "sha512-lJX2dEWx0SGH4O6p+7FPwYmJ/bu1JbcGJ8RLaG9b7liIgZ85itUVEPbMtWRVrde/0fnDPEPHW10ZsKW3kVsE9A=="], - "to-regex-range": ["to-regex-range@5.0.1", "", { "dependencies": { "is-number": "^7.0.0" } }, "sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ=="], - "tough-cookie": ["tough-cookie@6.0.0", "", { "dependencies": { "tldts": "^7.0.5" } }, "sha512-kXuRi1mtaKMrsLUxz3sQYvVl37B0Ns6MzfrtV5DvJceE9bPyspOqk9xxv7XbZWcfLWbFmm997vl83qUWVJA64w=="], "tr46": ["tr46@6.0.0", "", { "dependencies": { "punycode": "^2.3.1" } }, "sha512-bLVMLPtstlZ4iMQHpFHTR7GAGj2jxi8Dg0s2h2MafAE4uSWF98FC/3MomU51iQAMf8/qDUbKWf5GxuvvVcXEhw=="], "ts-api-utils": ["ts-api-utils@2.4.0", "", { "peerDependencies": { "typescript": ">=4.8.4" } }, "sha512-3TaVTaAv2gTiMB35i3FiGJaRfwb3Pyn/j3m/bfAvGe8FB7CF6u+LMYqYlDh7reQf7UNvoTvdfAqHGmPGOSsPmA=="], - "ts-interface-checker": ["ts-interface-checker@0.1.13", "", {}, "sha512-Y/arvbn+rrz3JCKl9C4kVNfTfSm2/mEp5FSz5EsZSANGPSlQrpRI5M4PKF+mJnE52jOO90PnPSc3Ur3bTQw0gA=="], - "tslib": ["tslib@2.8.1", "", {}, "sha512-oJFu94HQb+KVduSUQL7wnpmqnfmLsOA/nAh6b6EH0wCEoK0/mPeXU6c3wKDV83MkOuHPRHtSXKKU99IBazS/2w=="], "type-check": ["type-check@0.4.0", "", { "dependencies": { "prelude-ls": "^1.2.1" } }, "sha512-XleUoc9uwGXqjWwXaUTZAmzMcFZ5858QA2vvx1Ur5xIcixXIP+8LnFDgRplU30us6teqdlskFfu+ae4K79Ooew=="], + "typed-query-selector": ["typed-query-selector@2.12.1", "", {}, "sha512-uzR+FzI8qrUEIu96oaeBJmd9E7CFEiQ3goA5qCVgc4s5llSubcfGHq9yUstZx/k4s9dXHVKsE35YWoFyvEqEHA=="], + "typescript": ["typescript@5.9.3", "", { "bin": { "tsc": "bin/tsc", "tsserver": "bin/tsserver" } }, "sha512-jl1vZzPDinLr9eUt3J/t7V6FgNEw9QjvBPdysz9KfQDD41fQrC2Y4vKQdiaUpFT4bXlb1RHhLpp8wtm6M5TgSw=="], "typescript-eslint": ["typescript-eslint@8.53.1", "", { "dependencies": { "@typescript-eslint/eslint-plugin": "8.53.1", "@typescript-eslint/parser": "8.53.1", "@typescript-eslint/typescript-estree": "8.53.1", "@typescript-eslint/utils": "8.53.1" }, "peerDependencies": { "eslint": "^8.57.0 || ^9.0.0", "typescript": ">=4.8.4 <6.0.0" } }, "sha512-gB+EVQfP5RDElh9ittfXlhZJdjSU4jUSTyE2+ia8CYyNvet4ElfaLlAIqDvQV9JPknKx0jQH1racTYe/4LaLSg=="], @@ -878,6 +1032,8 @@ "w3c-xmlserializer": ["w3c-xmlserializer@5.0.0", "", { "dependencies": { "xml-name-validator": "^5.0.0" } }, "sha512-o8qghlI8NZHU1lLPrpi2+Uq7abh4GGPpYANlalzWxyWteJOCsr/P+oPBA49TOLu5FTZO4d3F9MnWJfiMo4BkmA=="], + "webdriver-bidi-protocol": ["webdriver-bidi-protocol@0.4.1", "", {}, "sha512-ARrjNjtWRRs2w4Tk7nqrf2gBI0QXWuOmMCx2hU+1jUt6d00MjMxURrhxhGbrsoiZKJrhTSTzbIrc554iKI10qw=="], + "webidl-conversions": ["webidl-conversions@8.0.1", "", {}, "sha512-BMhLD/Sw+GbJC21C/UgyaZX41nPt8bUTg+jWyDeg7e7YN4xOM05YPSIXceACnXVtqyEw/LMClUQMtMZ+PGGpqQ=="], "whatwg-mimetype": ["whatwg-mimetype@4.0.0", "", {}, "sha512-QaKxh0eNIi2mE9p2vEdzfagOKHCcj1pJ56EEHGQOVxp8r9/iszLUUV7v89x9O1p/T+NlTM5W7jW6+cz4Fq1YVg=="], @@ -890,45 +1046,97 @@ "word-wrap": ["word-wrap@1.2.5", "", {}, "sha512-BN22B5eaMMI9UMtjrGd5g5eCYPpCPDUy0FJXbYsaT5zYxjFOckS53SQDE3pWkVoWpHXVb3BrYcEN4Twa55B5cA=="], + "wrap-ansi": ["wrap-ansi@7.0.0", "", { "dependencies": { "ansi-styles": "^4.0.0", "string-width": "^4.1.0", "strip-ansi": "^6.0.0" } }, "sha512-YVGIj2kamLSTxw6NsZjoBxfSwsn0ycdesmc4p+Q21c5zPuZ1pl+NfxVdxPtdHvmNVOQ6XSYG4AUtyt/Fi7D16Q=="], + + "wrappy": ["wrappy@1.0.2", "", {}, "sha512-l4Sp/DRseor9wL6EvV2+TuQn63dMkPjZ/sp9XkghTEbV9KlPS1xUsZ3u7/IQO4wxtcFB4bgpQPRcR3QCvezPcQ=="], + "ws": ["ws@8.19.0", "", { "peerDependencies": { "bufferutil": "^4.0.1", "utf-8-validate": ">=5.0.2" }, "optionalPeers": ["bufferutil", "utf-8-validate"] }, "sha512-blAT2mjOEIi0ZzruJfIhb3nps74PRWTCz1IjglWEEpQl5XS/UNama6u2/rjFkDDouqr4L67ry+1aGIALViWjDg=="], "xml-name-validator": ["xml-name-validator@5.0.0", "", {}, "sha512-EvGK8EJ3DhaHfbRlETOWAS5pO9MZITeauHKJyb8wyajUfQUenkIg2MvLDTZ4T/TgIcm3HU0TFBgWWboAZ30UHg=="], "xmlchars": ["xmlchars@2.2.0", "", {}, "sha512-JZnDKK8B0RCDw84FNdDAIpZK+JuJw+s7Lz8nksI7SIuU3UXJJslUthsi+uWBUYOwPFwW7W7PRLRfUKpxjtjFCw=="], + "y18n": ["y18n@5.0.8", "", {}, "sha512-0pfFzegeDWJHJIAmTLRP2DwHjdF5s7jo9tuztdQxAhINCdvS+3nGINqPd00AphqJR/0LhANUS6/+7SCb98YOfA=="], + "yallist": ["yallist@3.1.1", "", {}, "sha512-a4UGQaWPH59mOXUYnAG2ewncQS4i4F43Tv3JoAM+s2VDAmS9NsK8GpDMLrCHPksFT7h3K6TOoUNn2pb7RoXx4g=="], + "yargs": ["yargs@17.7.2", "", { "dependencies": { "cliui": "^8.0.1", "escalade": "^3.1.1", "get-caller-file": "^2.0.5", "require-directory": "^2.1.1", "string-width": "^4.2.3", "y18n": "^5.0.5", "yargs-parser": "^21.1.1" } }, "sha512-7dSzzRQ++CKnNI/krKnYRV7JKKPUXMEh61soaHKg9mrWEhzFWhFnxPxGl+69cD1Ou63C13NUPCnmIcrvqCuM6w=="], + + "yargs-parser": ["yargs-parser@21.1.1", "", {}, "sha512-tVpsJW7DdjecAiFpbIB1e3qxIQsE6NoPc5/eTdrbbIC4h0LVsWhnoa3g+m2HclBIujHzsxZ4VJVA+GUuc2/LBw=="], + + "yauzl": ["yauzl@2.10.0", "", { "dependencies": { "buffer-crc32": "~0.2.3", "fd-slicer": "~1.1.0" } }, "sha512-p4a9I6X6nu6IhoGmBqAcbJy1mlC4j27vEPZX9F4L4/vZT3Lyq1VkFHw/V/PUcB9Buo+DG3iHkT0x3Qya58zc3g=="], + "yocto-queue": ["yocto-queue@0.1.0", "", {}, "sha512-rVksvsnNCdJ/ohGc6xgPwyN8eheCxsiLM8mxuE/t/mOVqJewPuO1miLpTHQiRgTKCLexL4MeAFVagts7HmNZ2Q=="], "zod": ["zod@4.3.5", "", {}, "sha512-k7Nwx6vuWx1IJ9Bjuf4Zt1PEllcwe7cls3VNzm4CQ1/hgtFUK2bRNG3rvnpPUhFjmqJKAKtjV576KnUkHocg/g=="], "zod-validation-error": ["zod-validation-error@4.0.2", "", { "peerDependencies": { "zod": "^3.25.0 || ^4.0.0" } }, "sha512-Q6/nZLe6jxuU80qb/4uJ4t5v2VEZ44lzQjPDhYJNztRQ4wyWc6VF3D3Kb/fAuPetZQnhS3hnajCf9CsWesghLQ=="], + "@babel/core/@babel/code-frame": ["@babel/code-frame@7.29.0", "", { "dependencies": { "@babel/helper-validator-identifier": "^7.28.5", "js-tokens": "^4.0.0", "picocolors": "^1.1.1" } }, "sha512-9NhCeYjq9+3uxgdtp20LSiJXJvN0FeCtNGpJxuMFZ1Kv3cWUNb6DOhJwUvcVCzKGR66cw4njwM6hrJLqgOwbcw=="], + + "@babel/core/@babel/parser": ["@babel/parser@7.29.0", "", { "dependencies": { "@babel/types": "^7.29.0" }, "bin": "./bin/babel-parser.js" }, "sha512-IyDgFV5GeDUVX4YdF/3CPULtVGSXXMLh1xVIgdCgxApktqnQV0r7/8Nqthg+8YLGaAtdyIlo2qIdZrbCv4+7ww=="], + + "@babel/generator/@babel/parser": ["@babel/parser@7.29.0", "", { "dependencies": { "@babel/types": "^7.29.0" }, "bin": "./bin/babel-parser.js" }, "sha512-IyDgFV5GeDUVX4YdF/3CPULtVGSXXMLh1xVIgdCgxApktqnQV0r7/8Nqthg+8YLGaAtdyIlo2qIdZrbCv4+7ww=="], + "@babel/helper-compilation-targets/lru-cache": ["lru-cache@5.1.1", "", { "dependencies": { "yallist": "^3.0.2" } }, "sha512-KpNARQA3Iwv+jTA0utUVVbrh+Jlrr1Fv0e56GGzAFOXN7dk/FviaDW8LHmK52DlcH4WP2n6gI8vN1aesBFgo9w=="], + "@babel/helper-module-imports/@babel/traverse": ["@babel/traverse@7.28.6", "", { "dependencies": { "@babel/code-frame": "^7.28.6", "@babel/generator": "^7.28.6", "@babel/helper-globals": "^7.28.0", "@babel/parser": "^7.28.6", "@babel/template": "^7.28.6", "@babel/types": "^7.28.6", "debug": "^4.3.1" } }, "sha512-fgWX62k02qtjqdSNTAGxmKYY/7FSL9WAS1o2Hu5+I5m9T0yxZzr4cnrfXQ/MX0rIifthCSs6FKTlzYbJcPtMNg=="], + + "@babel/helper-module-imports/@babel/types": ["@babel/types@7.28.6", "", { "dependencies": { "@babel/helper-string-parser": "^7.27.1", "@babel/helper-validator-identifier": "^7.28.5" } }, "sha512-0ZrskXVEHSWIqZM/sQZ4EV3jZJXRkio/WCxaqKZP1g//CEWEPSfeZFcms4XeKBCHU0ZKnIkdJeU/kF+eRp5lBg=="], + + "@babel/helper-module-transforms/@babel/traverse": ["@babel/traverse@7.28.6", "", { "dependencies": { "@babel/code-frame": "^7.28.6", "@babel/generator": "^7.28.6", "@babel/helper-globals": "^7.28.0", "@babel/parser": "^7.28.6", "@babel/template": "^7.28.6", "@babel/types": "^7.28.6", "debug": "^4.3.1" } }, "sha512-fgWX62k02qtjqdSNTAGxmKYY/7FSL9WAS1o2Hu5+I5m9T0yxZzr4cnrfXQ/MX0rIifthCSs6FKTlzYbJcPtMNg=="], + + "@babel/helpers/@babel/types": ["@babel/types@7.28.6", "", { "dependencies": { "@babel/helper-string-parser": "^7.27.1", "@babel/helper-validator-identifier": "^7.28.5" } }, "sha512-0ZrskXVEHSWIqZM/sQZ4EV3jZJXRkio/WCxaqKZP1g//CEWEPSfeZFcms4XeKBCHU0ZKnIkdJeU/kF+eRp5lBg=="], + + "@babel/parser/@babel/types": ["@babel/types@7.28.6", "", { "dependencies": { "@babel/helper-string-parser": "^7.27.1", "@babel/helper-validator-identifier": "^7.28.5" } }, "sha512-0ZrskXVEHSWIqZM/sQZ4EV3jZJXRkio/WCxaqKZP1g//CEWEPSfeZFcms4XeKBCHU0ZKnIkdJeU/kF+eRp5lBg=="], + + "@babel/template/@babel/types": ["@babel/types@7.28.6", "", { "dependencies": { "@babel/helper-string-parser": "^7.27.1", "@babel/helper-validator-identifier": "^7.28.5" } }, "sha512-0ZrskXVEHSWIqZM/sQZ4EV3jZJXRkio/WCxaqKZP1g//CEWEPSfeZFcms4XeKBCHU0ZKnIkdJeU/kF+eRp5lBg=="], + + "@babel/traverse/@babel/code-frame": ["@babel/code-frame@7.29.0", "", { "dependencies": { "@babel/helper-validator-identifier": "^7.28.5", "js-tokens": "^4.0.0", "picocolors": "^1.1.1" } }, "sha512-9NhCeYjq9+3uxgdtp20LSiJXJvN0FeCtNGpJxuMFZ1Kv3cWUNb6DOhJwUvcVCzKGR66cw4njwM6hrJLqgOwbcw=="], + + "@babel/traverse/@babel/parser": ["@babel/parser@7.29.0", "", { "dependencies": { "@babel/types": "^7.29.0" }, "bin": "./bin/babel-parser.js" }, "sha512-IyDgFV5GeDUVX4YdF/3CPULtVGSXXMLh1xVIgdCgxApktqnQV0r7/8Nqthg+8YLGaAtdyIlo2qIdZrbCv4+7ww=="], + "@eslint-community/eslint-utils/eslint-visitor-keys": ["eslint-visitor-keys@3.4.3", "", {}, "sha512-wpc+LXeiyiisxPlEkUzU6svyS1frIO3Mgxj1fdy7Pm8Ygzguax2N3Fa/D/ag1WqbOprdI+uY6wMUl8/a2G+iag=="], "@eslint/eslintrc/globals": ["globals@14.0.0", "", {}, "sha512-oahGvuMGQlPw/ivIYBjVSrWAfWLBeku5tpPE2fOPLi+WHffIWbuh2tCjhyQhTBPMf5E9jDEH4FOmTYgYwbKwtQ=="], + "@puppeteer/browsers/semver": ["semver@7.7.4", "", { "bin": { "semver": "bin/semver.js" } }, "sha512-vFKC2IEtQnVhpT78h1Yp8wzwrf8CM+MzKMHGJZfBtzhZNycRFnXsHk6E5TxIkkMsgNS7mdX3AGB7x2QM2di4lA=="], + "@reduxjs/toolkit/immer": ["immer@11.1.3", "", {}, "sha512-6jQTc5z0KJFtr1UgFpIL3N9XSC3saRaI9PwWtzM2pSqkNGtiNkYY2OSwkOGDK2XcTRcLb1pi/aNkKZz0nxVH4Q=="], + "@tailwindcss/node/jiti": ["jiti@2.6.1", "", { "bin": { "jiti": "lib/jiti-cli.mjs" } }, "sha512-ekilCSN1jwRvIbgeg/57YFh8qQDNbwDb9xT/qu2DAHbFFZUicIl4ygVaAvzveMhMVr3LnpSKTNnwt8PoOfmKhQ=="], + + "@tailwindcss/oxide-wasm32-wasi/@emnapi/core": ["@emnapi/core@1.8.1", "", { "dependencies": { "@emnapi/wasi-threads": "1.1.0", "tslib": "^2.4.0" }, "bundled": true }, "sha512-AvT9QFpxK0Zd8J0jopedNm+w/2fIzvtPKPjqyw9jwvBaReTTqPBk9Hixaz7KbjimP+QNz605/XnjFcDAL2pqBg=="], + + "@tailwindcss/oxide-wasm32-wasi/@emnapi/runtime": ["@emnapi/runtime@1.8.1", "", { "dependencies": { "tslib": "^2.4.0" }, "bundled": true }, "sha512-mehfKSMWjjNol8659Z8KxEMrdSJDDot5SXMq00dM8BN4o+CLNXQ0xH2V7EchNHV4RmbZLmmPdEaXZc5H2FXmDg=="], + + "@tailwindcss/oxide-wasm32-wasi/@emnapi/wasi-threads": ["@emnapi/wasi-threads@1.1.0", "", { "dependencies": { "tslib": "^2.4.0" }, "bundled": true }, "sha512-WI0DdZ8xFSbgMjR1sFsKABJ/C5OnRrjT06JXbZKexJGrDuPTzZdDYfFlsgcCXCyf+suG5QU2e/y1Wo2V/OapLQ=="], + + "@tailwindcss/oxide-wasm32-wasi/@napi-rs/wasm-runtime": ["@napi-rs/wasm-runtime@1.1.1", "", { "dependencies": { "@emnapi/core": "^1.7.1", "@emnapi/runtime": "^1.7.1", "@tybys/wasm-util": "^0.10.1" }, "bundled": true }, "sha512-p64ah1M1ld8xjWv3qbvFwHiFVWrq1yFvV4f7w+mzaqiR4IlSgkqhcRdHwsGgomwzBH51sRY4NEowLxnaBjcW/A=="], + + "@tailwindcss/oxide-wasm32-wasi/@tybys/wasm-util": ["@tybys/wasm-util@0.10.1", "", { "dependencies": { "tslib": "^2.4.0" }, "bundled": true }, "sha512-9tTaPJLSiejZKx+Bmog4uSubteqTvFrVrURwkmHixBo0G4seD0zUxp98E1DzUBJxLQ3NPwXrGKDiVjwx/DpPsg=="], + + "@tailwindcss/oxide-wasm32-wasi/tslib": ["tslib@2.8.1", "", { "bundled": true }, "sha512-oJFu94HQb+KVduSUQL7wnpmqnfmLsOA/nAh6b6EH0wCEoK0/mPeXU6c3wKDV83MkOuHPRHtSXKKU99IBazS/2w=="], + "@testing-library/dom/aria-query": ["aria-query@5.3.0", "", { "dependencies": { "dequal": "^2.0.3" } }, "sha512-b0P0sZPKtyu8HkeRAfCq0IfURZK+SuwMjY1UXGBU27wpAiTwQAIlq56IbIO+ytk/JjS1fMR14ee5WBBfKi5J6A=="], "@testing-library/dom/dom-accessibility-api": ["dom-accessibility-api@0.5.16", "", {}, "sha512-X7BJ2yElsnOJ30pZF4uIIDfBEVgF4XEBxL9Bxhy6dnrm5hkzqmsWHGTiHqRiITNhMyFLyAiWndIJP7Z1NTteDg=="], + "@types/babel__core/@babel/types": ["@babel/types@7.28.6", "", { "dependencies": { "@babel/helper-string-parser": "^7.27.1", "@babel/helper-validator-identifier": "^7.28.5" } }, "sha512-0ZrskXVEHSWIqZM/sQZ4EV3jZJXRkio/WCxaqKZP1g//CEWEPSfeZFcms4XeKBCHU0ZKnIkdJeU/kF+eRp5lBg=="], + + "@types/babel__template/@babel/parser": ["@babel/parser@7.29.0", "", { "dependencies": { "@babel/types": "^7.29.0" }, "bin": "./bin/babel-parser.js" }, "sha512-IyDgFV5GeDUVX4YdF/3CPULtVGSXXMLh1xVIgdCgxApktqnQV0r7/8Nqthg+8YLGaAtdyIlo2qIdZrbCv4+7ww=="], + "@typescript-eslint/eslint-plugin/ignore": ["ignore@7.0.5", "", {}, "sha512-Hs59xBNfUIunMFgWAbGX5cq6893IbWg4KnrjbYwX3tx0ztorVgTDA6B2sxf8ejHJ4wz8BqGUMYlnzNBer5NvGg=="], "@typescript-eslint/typescript-estree/minimatch": ["minimatch@9.0.5", "", { "dependencies": { "brace-expansion": "^2.0.1" } }, "sha512-G6T0ZX48xgozx7587koeX9Ys2NYy6Gmv//P89sEte9V9whIapMNF4idKxnW2QtCcLiTWlb/wfCabAtAFWhhBow=="], "@typescript-eslint/typescript-estree/semver": ["semver@7.7.3", "", { "bin": { "semver": "bin/semver.js" } }, "sha512-SdsKMrI9TdgjdweUSR9MweHA4EJ8YxHn8DFaDisvhVlUOe4BF1tLD7GAj0lIqWVl+dPb/rExr0Btby5loQm20Q=="], - "anymatch/picomatch": ["picomatch@2.3.1", "", {}, "sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA=="], + "chromium-bidi/zod": ["zod@3.25.76", "", {}, "sha512-gzUt/qt81nXsFGKIFcC3YnfEAx5NkunCfnDlvuBSSFS02bcXu4Lmea0AFIUwbLWxWPx3d9p8S5QoaujKcNQxcQ=="], - "chokidar/glob-parent": ["glob-parent@5.1.2", "", { "dependencies": { "is-glob": "^4.0.1" } }, "sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow=="], + "eslint-plugin-react-hooks/@babel/core": ["@babel/core@7.28.6", "", { "dependencies": { "@babel/code-frame": "^7.28.6", "@babel/generator": "^7.28.6", "@babel/helper-compilation-targets": "^7.28.6", "@babel/helper-module-transforms": "^7.28.6", "@babel/helpers": "^7.28.6", "@babel/parser": "^7.28.6", "@babel/template": "^7.28.6", "@babel/traverse": "^7.28.6", "@babel/types": "^7.28.6", "@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" } }, "sha512-H3mcG6ZDLTlYfaSNi0iOKkigqMFvkTKlGUYlD8GW7nNOYRrevuA46iTypPyv+06V3fEmvvazfntkBU34L0azAw=="], - "fast-glob/glob-parent": ["glob-parent@5.1.2", "", { "dependencies": { "is-glob": "^4.0.1" } }, "sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow=="], - - "micromatch/picomatch": ["picomatch@2.3.1", "", {}, "sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA=="], + "next/postcss": ["postcss@8.4.31", "", { "dependencies": { "nanoid": "^3.3.6", "picocolors": "^1.0.0", "source-map-js": "^1.0.2" } }, "sha512-PS08Iboia9mts/2ygV3eLpY5ghnUcfLV/EXTOW1E2qYxJKGGBUtNjN76FYHnMs36RmARn41bC0AZmn+rR0OVpQ=="], "pptxgenjs/@types/node": ["@types/node@22.19.7", "", { "dependencies": { "undici-types": "~6.21.0" } }, "sha512-MciR4AKGHWl7xwxkBa6xUGxQJ4VBOmPTF7sL+iGzuahOFaO0jHCsuEfS80pan1ef4gWId1oWOweIhrDEYLuaOw=="], @@ -936,10 +1144,24 @@ "pretty-format/react-is": ["react-is@17.0.2", "", {}, "sha512-w2GsyukL62IJnlaff/nRegPQR94C/XXamvMWmSHRJ4y7Ts/4ocGRmTHvOs8PSE6pB3dWOrD/nueuU5sduBsQ4w=="], - "readdirp/picomatch": ["picomatch@2.3.1", "", {}, "sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA=="], + "proxy-agent/lru-cache": ["lru-cache@7.18.3", "", {}, "sha512-jumlc0BIUrS3qJGgIkWZsyfAM7NCWiBcCDhnd+3NNM5KbBmLTgHVfWBcg6W+rLUsIpzpERPsvwUP7CckAQSOoA=="], + + "sharp/semver": ["semver@7.7.4", "", { "bin": { "semver": "bin/semver.js" } }, "sha512-vFKC2IEtQnVhpT78h1Yp8wzwrf8CM+MzKMHGJZfBtzhZNycRFnXsHk6E5TxIkkMsgNS7mdX3AGB7x2QM2di4lA=="], + + "@babel/helper-module-imports/@babel/traverse/@babel/generator": ["@babel/generator@7.28.6", "", { "dependencies": { "@babel/parser": "^7.28.6", "@babel/types": "^7.28.6", "@jridgewell/gen-mapping": "^0.3.12", "@jridgewell/trace-mapping": "^0.3.28", "jsesc": "^3.0.2" } }, "sha512-lOoVRwADj8hjf7al89tvQ2a1lf53Z+7tiXMgpZJL3maQPDxh0DgLMN62B2MKUOFcoodBHLMbDM6WAbKgNy5Suw=="], + + "@babel/helper-module-transforms/@babel/traverse/@babel/generator": ["@babel/generator@7.28.6", "", { "dependencies": { "@babel/parser": "^7.28.6", "@babel/types": "^7.28.6", "@jridgewell/gen-mapping": "^0.3.12", "@jridgewell/trace-mapping": "^0.3.28", "jsesc": "^3.0.2" } }, "sha512-lOoVRwADj8hjf7al89tvQ2a1lf53Z+7tiXMgpZJL3maQPDxh0DgLMN62B2MKUOFcoodBHLMbDM6WAbKgNy5Suw=="], + + "@babel/helper-module-transforms/@babel/traverse/@babel/types": ["@babel/types@7.28.6", "", { "dependencies": { "@babel/helper-string-parser": "^7.27.1", "@babel/helper-validator-identifier": "^7.28.5" } }, "sha512-0ZrskXVEHSWIqZM/sQZ4EV3jZJXRkio/WCxaqKZP1g//CEWEPSfeZFcms4XeKBCHU0ZKnIkdJeU/kF+eRp5lBg=="], "@typescript-eslint/typescript-estree/minimatch/brace-expansion": ["brace-expansion@2.0.2", "", { "dependencies": { "balanced-match": "^1.0.0" } }, "sha512-Jt0vHyM+jmUBqojB7E1NIYadt0vI0Qxjxd2TErW94wDz+E2LAm5vKMXXwg6ZZBTHPuUlDgQHKXvjGBdfcF1ZDQ=="], + "eslint-plugin-react-hooks/@babel/core/@babel/generator": ["@babel/generator@7.28.6", "", { "dependencies": { "@babel/parser": "^7.28.6", "@babel/types": "^7.28.6", "@jridgewell/gen-mapping": "^0.3.12", "@jridgewell/trace-mapping": "^0.3.28", "jsesc": "^3.0.2" } }, "sha512-lOoVRwADj8hjf7al89tvQ2a1lf53Z+7tiXMgpZJL3maQPDxh0DgLMN62B2MKUOFcoodBHLMbDM6WAbKgNy5Suw=="], + + "eslint-plugin-react-hooks/@babel/core/@babel/traverse": ["@babel/traverse@7.28.6", "", { "dependencies": { "@babel/code-frame": "^7.28.6", "@babel/generator": "^7.28.6", "@babel/helper-globals": "^7.28.0", "@babel/parser": "^7.28.6", "@babel/template": "^7.28.6", "@babel/types": "^7.28.6", "debug": "^4.3.1" } }, "sha512-fgWX62k02qtjqdSNTAGxmKYY/7FSL9WAS1o2Hu5+I5m9T0yxZzr4cnrfXQ/MX0rIifthCSs6FKTlzYbJcPtMNg=="], + + "eslint-plugin-react-hooks/@babel/core/@babel/types": ["@babel/types@7.28.6", "", { "dependencies": { "@babel/helper-string-parser": "^7.27.1", "@babel/helper-validator-identifier": "^7.28.5" } }, "sha512-0ZrskXVEHSWIqZM/sQZ4EV3jZJXRkio/WCxaqKZP1g//CEWEPSfeZFcms4XeKBCHU0ZKnIkdJeU/kF+eRp5lBg=="], + "pptxgenjs/@types/node/undici-types": ["undici-types@6.21.0", "", {}, "sha512-iwDZqg0QAGrg9Rav5H4n0M64c3mkR59cJ6wQp+7C4nI0gsmExaedaYLNO44eT4AtBBwjbTiGPMlt2Md0T9H9JQ=="], } } diff --git a/app/bun.lockb b/app/bun.lockb new file mode 100755 index 0000000..061add2 Binary files /dev/null and b/app/bun.lockb differ diff --git a/app/dist/assets/index-Ckzfl-_I.js b/app/dist/assets/index-Ckzfl-_I.js new file mode 100644 index 0000000..4f118f3 --- /dev/null +++ b/app/dist/assets/index-Ckzfl-_I.js @@ -0,0 +1,38 @@ +(function(){const r=document.createElement("link").relList;if(r&&r.supports&&r.supports("modulepreload"))return;for(const O of document.querySelectorAll('link[rel="modulepreload"]'))f(O);new MutationObserver(O=>{for(const D of O)if(D.type==="childList")for(const _ of D.addedNodes)_.tagName==="LINK"&&_.rel==="modulepreload"&&f(_)}).observe(document,{childList:!0,subtree:!0});function y(O){const D={};return O.integrity&&(D.integrity=O.integrity),O.referrerPolicy&&(D.referrerPolicy=O.referrerPolicy),O.crossOrigin==="use-credentials"?D.credentials="include":O.crossOrigin==="anonymous"?D.credentials="omit":D.credentials="same-origin",D}function f(O){if(O.ep)return;O.ep=!0;const D=y(O);fetch(O.href,D)}})();var ms={exports:{}},Tn={};var zd;function Sy(){if(zd)return Tn;zd=1;var v=Symbol.for("react.transitional.element"),r=Symbol.for("react.fragment");function y(f,O,D){var _=null;if(D!==void 0&&(_=""+D),O.key!==void 0&&(_=""+O.key),"key"in O){D={};for(var M in O)M!=="key"&&(D[M]=O[M])}else D=O;return O=D.ref,{$$typeof:v,type:f,key:_,ref:O!==void 0?O:null,props:D}}return Tn.Fragment=r,Tn.jsx=y,Tn.jsxs=y,Tn}var Cd;function Ay(){return Cd||(Cd=1,ms.exports=Sy()),ms.exports}var c=Ay(),hs={exports:{}},X={};var Od;function Ey(){if(Od)return X;Od=1;var v=Symbol.for("react.transitional.element"),r=Symbol.for("react.portal"),y=Symbol.for("react.fragment"),f=Symbol.for("react.strict_mode"),O=Symbol.for("react.profiler"),D=Symbol.for("react.consumer"),_=Symbol.for("react.context"),M=Symbol.for("react.forward_ref"),C=Symbol.for("react.suspense"),E=Symbol.for("react.memo"),Q=Symbol.for("react.lazy"),G=Symbol.for("react.activity"),ee=Symbol.iterator;function ze(h){return h===null||typeof h!="object"?null:(h=ee&&h[ee]||h["@@iterator"],typeof h=="function"?h:null)}var De={isMounted:function(){return!1},enqueueForceUpdate:function(){},enqueueReplaceState:function(){},enqueueSetState:function(){}},Ye=Object.assign,Dl={};function Ie(h,z,B){this.props=h,this.context=z,this.refs=Dl,this.updater=B||De}Ie.prototype.isReactComponent={},Ie.prototype.setState=function(h,z){if(typeof h!="object"&&typeof h!="function"&&h!=null)throw Error("takes an object of state variables to update or a function which returns an object of state variables.");this.updater.enqueueSetState(this,h,z,"setState")},Ie.prototype.forceUpdate=function(h){this.updater.enqueueForceUpdate(this,h,"forceUpdate")};function Il(){}Il.prototype=Ie.prototype;function qe(h,z,B){this.props=h,this.context=z,this.refs=Dl,this.updater=B||De}var ol=qe.prototype=new Il;ol.constructor=qe,Ye(ol,Ie.prototype),ol.isPureReactComponent=!0;var Tl=Array.isArray;function Qe(){}var I={H:null,A:null,T:null,S:null},Xe=Object.prototype.hasOwnProperty;function Nl(h,z,B){var H=B.ref;return{$$typeof:v,type:h,key:z,ref:H!==void 0?H:null,props:B}}function Vt(h,z){return Nl(h.type,z,h.props)}function jl(h){return typeof h=="object"&&h!==null&&h.$$typeof===v}function Ve(h){var z={"=":"=0",":":"=2"};return"$"+h.replace(/[=:]/g,function(B){return z[B]})}var Tt=/\/+/g;function _l(h,z){return typeof h=="object"&&h!==null&&h.key!=null?Ve(""+h.key):z.toString(36)}function bl(h){switch(h.status){case"fulfilled":return h.value;case"rejected":throw h.reason;default:switch(typeof h.status=="string"?h.then(Qe,Qe):(h.status="pending",h.then(function(z){h.status==="pending"&&(h.status="fulfilled",h.value=z)},function(z){h.status==="pending"&&(h.status="rejected",h.reason=z)})),h.status){case"fulfilled":return h.value;case"rejected":throw h.reason}}throw h}function T(h,z,B,H,V){var J=typeof h;(J==="undefined"||J==="boolean")&&(h=null);var ne=!1;if(h===null)ne=!0;else switch(J){case"bigint":case"string":case"number":ne=!0;break;case"object":switch(h.$$typeof){case v:case r:ne=!0;break;case Q:return ne=h._init,T(ne(h._payload),z,B,H,V)}}if(ne)return V=V(h),ne=H===""?"."+_l(h,0):H,Tl(V)?(B="",ne!=null&&(B=ne.replace(Tt,"$&/")+"/"),T(V,z,B,"",function(Ma){return Ma})):V!=null&&(jl(V)&&(V=Vt(V,B+(V.key==null||h&&h.key===V.key?"":(""+V.key).replace(Tt,"$&/")+"/")+ne)),z.push(V)),1;ne=0;var Le=H===""?".":H+":";if(Tl(h))for(var xe=0;xe>>1,fe=T[ce];if(0>>1;ceO(B,w))HO(V,B)?(T[ce]=V,T[H]=w,ce=H):(T[ce]=B,T[z]=w,ce=z);else if(HO(V,w))T[ce]=V,T[H]=w,ce=H;else break e}}return R}function O(T,R){var w=T.sortIndex-R.sortIndex;return w!==0?w:T.id-R.id}if(v.unstable_now=void 0,typeof performance=="object"&&typeof performance.now=="function"){var D=performance;v.unstable_now=function(){return D.now()}}else{var _=Date,M=_.now();v.unstable_now=function(){return _.now()-M}}var C=[],E=[],Q=1,G=null,ee=3,ze=!1,De=!1,Ye=!1,Dl=!1,Ie=typeof setTimeout=="function"?setTimeout:null,Il=typeof clearTimeout=="function"?clearTimeout:null,qe=typeof setImmediate<"u"?setImmediate:null;function ol(T){for(var R=y(E);R!==null;){if(R.callback===null)f(E);else if(R.startTime<=T)f(E),R.sortIndex=R.expirationTime,r(C,R);else break;R=y(E)}}function Tl(T){if(Ye=!1,ol(T),!De)if(y(C)!==null)De=!0,Qe||(Qe=!0,Ve());else{var R=y(E);R!==null&&bl(Tl,R.startTime-T)}}var Qe=!1,I=-1,Xe=5,Nl=-1;function Vt(){return Dl?!0:!(v.unstable_now()-NlT&&Vt());){var ce=G.callback;if(typeof ce=="function"){G.callback=null,ee=G.priorityLevel;var fe=ce(G.expirationTime<=T);if(T=v.unstable_now(),typeof fe=="function"){G.callback=fe,ol(T),R=!0;break l}G===y(C)&&f(C),ol(T)}else f(C);G=y(C)}if(G!==null)R=!0;else{var h=y(E);h!==null&&bl(Tl,h.startTime-T),R=!1}}break e}finally{G=null,ee=w,ze=!1}R=void 0}}finally{R?Ve():Qe=!1}}}var Ve;if(typeof qe=="function")Ve=function(){qe(jl)};else if(typeof MessageChannel<"u"){var Tt=new MessageChannel,_l=Tt.port2;Tt.port1.onmessage=jl,Ve=function(){_l.postMessage(null)}}else Ve=function(){Ie(jl,0)};function bl(T,R){I=Ie(function(){T(v.unstable_now())},R)}v.unstable_IdlePriority=5,v.unstable_ImmediatePriority=1,v.unstable_LowPriority=4,v.unstable_NormalPriority=3,v.unstable_Profiling=null,v.unstable_UserBlockingPriority=2,v.unstable_cancelCallback=function(T){T.callback=null},v.unstable_forceFrameRate=function(T){0>T||125ce?(T.sortIndex=w,r(E,T),y(C)===null&&T===y(E)&&(Ye?(Il(I),I=-1):Ye=!0,bl(Tl,w-ce))):(T.sortIndex=fe,r(C,T),De||ze||(De=!0,Qe||(Qe=!0,Ve()))),T},v.unstable_shouldYield=Vt,v.unstable_wrapCallback=function(T){var R=ee;return function(){var w=ee;ee=R;try{return T.apply(this,arguments)}finally{ee=w}}}})(vs)),vs}var _d;function Ny(){return _d||(_d=1,gs.exports=Ty()),gs.exports}var ps={exports:{}},Ge={};var Rd;function jy(){if(Rd)return Ge;Rd=1;var v=As();function r(C){var E="https://react.dev/errors/"+C;if(1"u"||typeof __REACT_DEVTOOLS_GLOBAL_HOOK__.checkDCE!="function"))try{__REACT_DEVTOOLS_GLOBAL_HOOK__.checkDCE(v)}catch(r){console.error(r)}}return v(),ps.exports=jy(),ps.exports}var Ud;function Cy(){if(Ud)return Nn;Ud=1;var v=Ny(),r=As(),y=zy();function f(e){var l="https://react.dev/errors/"+e;if(1fe||(e.current=ce[fe],ce[fe]=null,fe--)}function B(e,l){fe++,ce[fe]=e.current,e.current=l}var H=h(null),V=h(null),J=h(null),ne=h(null);function Le(e,l){switch(B(J,l),B(V,e),B(H,null),l.nodeType){case 9:case 11:e=(e=l.documentElement)&&(e=e.namespaceURI)?Ff(e):0;break;default:if(e=l.tagName,l=l.namespaceURI)l=Ff(l),e=Wf(l,e);else switch(e){case"svg":e=1;break;case"math":e=2;break;default:e=0}}z(H),B(H,e)}function xe(){z(H),z(V),z(J)}function Ma(e){e.memoizedState!==null&&B(ne,e);var l=H.current,t=Wf(l,e.type);l!==t&&(B(V,e),B(H,t))}function Cn(e){V.current===e&&(z(H),z(V)),ne.current===e&&(z(ne),bn._currentValue=w)}var $i,Ts;function Nt(e){if($i===void 0)try{throw Error()}catch(t){var l=t.stack.trim().match(/\n( *(at )?)/);$i=l&&l[1]||"",Ts=-1)":-1n||d[a]!==x[n]){var A=` +`+d[a].replace(" at new "," at ");return e.displayName&&A.includes("")&&(A=A.replace("",e.displayName)),A}while(1<=a&&0<=n);break}}}finally{Fi=!1,Error.prepareStackTrace=t}return(t=e?e.displayName||e.name:"")?Nt(t):""}function Id(e,l){switch(e.tag){case 26:case 27:case 5:return Nt(e.type);case 16:return Nt("Lazy");case 13:return e.child!==l&&l!==null?Nt("Suspense Fallback"):Nt("Suspense");case 19:return Nt("SuspenseList");case 0:case 15:return Wi(e.type,!1);case 11:return Wi(e.type.render,!1);case 1:return Wi(e.type,!0);case 31:return Nt("Activity");default:return""}}function Ns(e){try{var l="",t=null;do l+=Id(e,t),t=e,e=e.return;while(e);return l}catch(a){return` +Error generating stack: `+a.message+` +`+a.stack}}var Ii=Object.prototype.hasOwnProperty,Pi=v.unstable_scheduleCallback,eu=v.unstable_cancelCallback,Pd=v.unstable_shouldYield,em=v.unstable_requestPaint,Pe=v.unstable_now,lm=v.unstable_getCurrentPriorityLevel,js=v.unstable_ImmediatePriority,zs=v.unstable_UserBlockingPriority,On=v.unstable_NormalPriority,tm=v.unstable_LowPriority,Cs=v.unstable_IdlePriority,am=v.log,nm=v.unstable_setDisableYieldValue,Da=null,el=null;function Pl(e){if(typeof am=="function"&&nm(e),el&&typeof el.setStrictMode=="function")try{el.setStrictMode(Da,e)}catch{}}var ll=Math.clz32?Math.clz32:cm,im=Math.log,um=Math.LN2;function cm(e){return e>>>=0,e===0?32:31-(im(e)/um|0)|0}var Mn=256,Dn=262144,_n=4194304;function jt(e){var l=e&42;if(l!==0)return l;switch(e&-e){case 1:return 1;case 2:return 2;case 4:return 4;case 8:return 8;case 16:return 16;case 32:return 32;case 64:return 64;case 128:return 128;case 256:case 512:case 1024:case 2048:case 4096:case 8192:case 16384:case 32768:case 65536:case 131072:return e&261888;case 262144:case 524288:case 1048576:case 2097152:return e&3932160;case 4194304:case 8388608:case 16777216:case 33554432:return e&62914560;case 67108864:return 67108864;case 134217728:return 134217728;case 268435456:return 268435456;case 536870912:return 536870912;case 1073741824:return 0;default:return e}}function Rn(e,l,t){var a=e.pendingLanes;if(a===0)return 0;var n=0,i=e.suspendedLanes,u=e.pingedLanes;e=e.warmLanes;var s=a&134217727;return s!==0?(a=s&~i,a!==0?n=jt(a):(u&=s,u!==0?n=jt(u):t||(t=s&~e,t!==0&&(n=jt(t))))):(s=a&~i,s!==0?n=jt(s):u!==0?n=jt(u):t||(t=a&~e,t!==0&&(n=jt(t)))),n===0?0:l!==0&&l!==n&&(l&i)===0&&(i=n&-n,t=l&-l,i>=t||i===32&&(t&4194048)!==0)?l:n}function _a(e,l){return(e.pendingLanes&~(e.suspendedLanes&~e.pingedLanes)&l)===0}function sm(e,l){switch(e){case 1:case 2:case 4:case 8:case 64:return l+250;case 16:case 32:case 128:case 256:case 512:case 1024:case 2048:case 4096:case 8192:case 16384:case 32768:case 65536:case 131072:case 262144:case 524288:case 1048576:case 2097152:return l+5e3;case 4194304:case 8388608:case 16777216:case 33554432:return-1;case 67108864:case 134217728:case 268435456:case 536870912:case 1073741824:return-1;default:return-1}}function Os(){var e=_n;return _n<<=1,(_n&62914560)===0&&(_n=4194304),e}function lu(e){for(var l=[],t=0;31>t;t++)l.push(e);return l}function Ra(e,l){e.pendingLanes|=l,l!==268435456&&(e.suspendedLanes=0,e.pingedLanes=0,e.warmLanes=0)}function om(e,l,t,a,n,i){var u=e.pendingLanes;e.pendingLanes=t,e.suspendedLanes=0,e.pingedLanes=0,e.warmLanes=0,e.expiredLanes&=t,e.entangledLanes&=t,e.errorRecoveryDisabledLanes&=t,e.shellSuspendCounter=0;var s=e.entanglements,d=e.expirationTimes,x=e.hiddenUpdates;for(t=u&~t;0"u")return null;try{return e.activeElement||e.body}catch{return e.body}}var ym=/[\n"\\]/g;function fl(e){return e.replace(ym,function(l){return"\\"+l.charCodeAt(0).toString(16)+" "})}function cu(e,l,t,a,n,i,u,s){e.name="",u!=null&&typeof u!="function"&&typeof u!="symbol"&&typeof u!="boolean"?e.type=u:e.removeAttribute("type"),l!=null?u==="number"?(l===0&&e.value===""||e.value!=l)&&(e.value=""+rl(l)):e.value!==""+rl(l)&&(e.value=""+rl(l)):u!=="submit"&&u!=="reset"||e.removeAttribute("value"),l!=null?su(e,u,rl(l)):t!=null?su(e,u,rl(t)):a!=null&&e.removeAttribute("value"),n==null&&i!=null&&(e.defaultChecked=!!i),n!=null&&(e.checked=n&&typeof n!="function"&&typeof n!="symbol"),s!=null&&typeof s!="function"&&typeof s!="symbol"&&typeof s!="boolean"?e.name=""+rl(s):e.removeAttribute("name")}function Qs(e,l,t,a,n,i,u,s){if(i!=null&&typeof i!="function"&&typeof i!="symbol"&&typeof i!="boolean"&&(e.type=i),l!=null||t!=null){if(!(i!=="submit"&&i!=="reset"||l!=null)){uu(e);return}t=t!=null?""+rl(t):"",l=l!=null?""+rl(l):t,s||l===e.value||(e.value=l),e.defaultValue=l}a=a??n,a=typeof a!="function"&&typeof a!="symbol"&&!!a,e.checked=s?e.checked:!!a,e.defaultChecked=!!a,u!=null&&typeof u!="function"&&typeof u!="symbol"&&typeof u!="boolean"&&(e.name=u),uu(e)}function su(e,l,t){l==="number"&&Hn(e.ownerDocument)===e||e.defaultValue===""+t||(e.defaultValue=""+t)}function Ft(e,l,t,a){if(e=e.options,l){l={};for(var n=0;n"u"||typeof window.document>"u"||typeof window.document.createElement>"u"),mu=!1;if(Ul)try{var qa={};Object.defineProperty(qa,"passive",{get:function(){mu=!0}}),window.addEventListener("test",qa,qa),window.removeEventListener("test",qa,qa)}catch{mu=!1}var lt=null,hu=null,Gn=null;function $s(){if(Gn)return Gn;var e,l=hu,t=l.length,a,n="value"in lt?lt.value:lt.textContent,i=n.length;for(e=0;e=La),lo=" ",to=!1;function ao(e,l){switch(e){case"keyup":return Xm.indexOf(l.keyCode)!==-1;case"keydown":return l.keyCode!==229;case"keypress":case"mousedown":case"focusout":return!0;default:return!1}}function no(e){return e=e.detail,typeof e=="object"&&"data"in e?e.data:null}var ea=!1;function Zm(e,l){switch(e){case"compositionend":return no(l);case"keypress":return l.which!==32?null:(to=!0,lo);case"textInput":return e=l.data,e===lo&&to?null:e;default:return null}}function Km(e,l){if(ea)return e==="compositionend"||!xu&&ao(e,l)?(e=$s(),Gn=hu=lt=null,ea=!1,e):null;switch(e){case"paste":return null;case"keypress":if(!(l.ctrlKey||l.altKey||l.metaKey)||l.ctrlKey&&l.altKey){if(l.char&&1=l)return{node:t,offset:l-e};e=a}e:{for(;t;){if(t.nextSibling){t=t.nextSibling;break e}t=t.parentNode}t=void 0}t=mo(t)}}function yo(e,l){return e&&l?e===l?!0:e&&e.nodeType===3?!1:l&&l.nodeType===3?yo(e,l.parentNode):"contains"in e?e.contains(l):e.compareDocumentPosition?!!(e.compareDocumentPosition(l)&16):!1:!1}function go(e){e=e!=null&&e.ownerDocument!=null&&e.ownerDocument.defaultView!=null?e.ownerDocument.defaultView:window;for(var l=Hn(e.document);l instanceof e.HTMLIFrameElement;){try{var t=typeof l.contentWindow.location.href=="string"}catch{t=!1}if(t)e=l.contentWindow;else break;l=Hn(e.document)}return l}function Au(e){var l=e&&e.nodeName&&e.nodeName.toLowerCase();return l&&(l==="input"&&(e.type==="text"||e.type==="search"||e.type==="tel"||e.type==="url"||e.type==="password")||l==="textarea"||e.contentEditable==="true")}var eh=Ul&&"documentMode"in document&&11>=document.documentMode,la=null,Eu=null,Va=null,Tu=!1;function vo(e,l,t){var a=t.window===t?t.document:t.nodeType===9?t:t.ownerDocument;Tu||la==null||la!==Hn(a)||(a=la,"selectionStart"in a&&Au(a)?a={start:a.selectionStart,end:a.selectionEnd}:(a=(a.ownerDocument&&a.ownerDocument.defaultView||window).getSelection(),a={anchorNode:a.anchorNode,anchorOffset:a.anchorOffset,focusNode:a.focusNode,focusOffset:a.focusOffset}),Va&&Xa(Va,a)||(Va=a,a=Di(Eu,"onSelect"),0>=u,n-=u,zl=1<<32-ll(l)+n|t<K?(W=q,q=null):W=q.sibling;var te=b(g,q,p[K],N);if(te===null){q===null&&(q=W);break}e&&q&&te.alternate===null&&l(g,q),m=i(te,m,K),le===null?Y=te:le.sibling=te,le=te,q=W}if(K===p.length)return t(g,q),P&&ql(g,K),Y;if(q===null){for(;KK?(W=q,q=null):W=q.sibling;var Et=b(g,q,te.value,N);if(Et===null){q===null&&(q=W);break}e&&q&&Et.alternate===null&&l(g,q),m=i(Et,m,K),le===null?Y=Et:le.sibling=Et,le=Et,q=W}if(te.done)return t(g,q),P&&ql(g,K),Y;if(q===null){for(;!te.done;K++,te=p.next())te=j(g,te.value,N),te!==null&&(m=i(te,m,K),le===null?Y=te:le.sibling=te,le=te);return P&&ql(g,K),Y}for(q=a(q);!te.done;K++,te=p.next())te=S(q,g,K,te.value,N),te!==null&&(e&&te.alternate!==null&&q.delete(te.key===null?K:te.key),m=i(te,m,K),le===null?Y=te:le.sibling=te,le=te);return e&&q.forEach(function(by){return l(g,by)}),P&&ql(g,K),Y}function re(g,m,p,N){if(typeof p=="object"&&p!==null&&p.type===Ye&&p.key===null&&(p=p.props.children),typeof p=="object"&&p!==null){switch(p.$$typeof){case ze:e:{for(var Y=p.key;m!==null;){if(m.key===Y){if(Y=p.type,Y===Ye){if(m.tag===7){t(g,m.sibling),N=n(m,p.props.children),N.return=g,g=N;break e}}else if(m.elementType===Y||typeof Y=="object"&&Y!==null&&Y.$$typeof===Xe&&qt(Y)===m.type){t(g,m.sibling),N=n(m,p.props),Fa(N,p),N.return=g,g=N;break e}t(g,m);break}else l(g,m);m=m.sibling}p.type===Ye?(N=_t(p.props.children,g.mode,N,p.key),N.return=g,g=N):(N=kn(p.type,p.key,p.props,null,g.mode,N),Fa(N,p),N.return=g,g=N)}return u(g);case De:e:{for(Y=p.key;m!==null;){if(m.key===Y)if(m.tag===4&&m.stateNode.containerInfo===p.containerInfo&&m.stateNode.implementation===p.implementation){t(g,m.sibling),N=n(m,p.children||[]),N.return=g,g=N;break e}else{t(g,m);break}else l(g,m);m=m.sibling}N=Du(p,g.mode,N),N.return=g,g=N}return u(g);case Xe:return p=qt(p),re(g,m,p,N)}if(bl(p))return U(g,m,p,N);if(Ve(p)){if(Y=Ve(p),typeof Y!="function")throw Error(f(150));return p=Y.call(p),L(g,m,p,N)}if(typeof p.then=="function")return re(g,m,li(p),N);if(p.$$typeof===qe)return re(g,m,Wn(g,p),N);ti(g,p)}return typeof p=="string"&&p!==""||typeof p=="number"||typeof p=="bigint"?(p=""+p,m!==null&&m.tag===6?(t(g,m.sibling),N=n(m,p),N.return=g,g=N):(t(g,m),N=Mu(p,g.mode,N),N.return=g,g=N),u(g)):t(g,m)}return function(g,m,p,N){try{$a=0;var Y=re(g,m,p,N);return da=null,Y}catch(q){if(q===fa||q===Pn)throw q;var le=al(29,q,null,g.mode);return le.lanes=N,le.return=g,le}}}var Yt=Lo(!0),wo=Lo(!1),ut=!1;function Xu(e){e.updateQueue={baseState:e.memoizedState,firstBaseUpdate:null,lastBaseUpdate:null,shared:{pending:null,lanes:0,hiddenCallbacks:null},callbacks:null}}function Vu(e,l){e=e.updateQueue,l.updateQueue===e&&(l.updateQueue={baseState:e.baseState,firstBaseUpdate:e.firstBaseUpdate,lastBaseUpdate:e.lastBaseUpdate,shared:e.shared,callbacks:null})}function ct(e){return{lane:e,tag:0,payload:null,callback:null,next:null}}function st(e,l,t){var a=e.updateQueue;if(a===null)return null;if(a=a.shared,(ae&2)!==0){var n=a.pending;return n===null?l.next=l:(l.next=n.next,n.next=l),a.pending=l,l=Jn(e),To(e,null,t),l}return Kn(e,a,l,t),Jn(e)}function Wa(e,l,t){if(l=l.updateQueue,l!==null&&(l=l.shared,(t&4194048)!==0)){var a=l.lanes;a&=e.pendingLanes,t|=a,l.lanes=t,Ds(e,t)}}function Zu(e,l){var t=e.updateQueue,a=e.alternate;if(a!==null&&(a=a.updateQueue,t===a)){var n=null,i=null;if(t=t.firstBaseUpdate,t!==null){do{var u={lane:t.lane,tag:t.tag,payload:t.payload,callback:null,next:null};i===null?n=i=u:i=i.next=u,t=t.next}while(t!==null);i===null?n=i=l:i=i.next=l}else n=i=l;t={baseState:a.baseState,firstBaseUpdate:n,lastBaseUpdate:i,shared:a.shared,callbacks:a.callbacks},e.updateQueue=t;return}e=t.lastBaseUpdate,e===null?t.firstBaseUpdate=l:e.next=l,t.lastBaseUpdate=l}var Ku=!1;function Ia(){if(Ku){var e=ra;if(e!==null)throw e}}function Pa(e,l,t,a){Ku=!1;var n=e.updateQueue;ut=!1;var i=n.firstBaseUpdate,u=n.lastBaseUpdate,s=n.shared.pending;if(s!==null){n.shared.pending=null;var d=s,x=d.next;d.next=null,u===null?i=x:u.next=x,u=d;var A=e.alternate;A!==null&&(A=A.updateQueue,s=A.lastBaseUpdate,s!==u&&(s===null?A.firstBaseUpdate=x:s.next=x,A.lastBaseUpdate=d))}if(i!==null){var j=n.baseState;u=0,A=x=d=null,s=i;do{var b=s.lane&-536870913,S=b!==s.lane;if(S?(F&b)===b:(a&b)===b){b!==0&&b===oa&&(Ku=!0),A!==null&&(A=A.next={lane:0,tag:s.tag,payload:s.payload,callback:null,next:null});e:{var U=e,L=s;b=l;var re=t;switch(L.tag){case 1:if(U=L.payload,typeof U=="function"){j=U.call(re,j,b);break e}j=U;break e;case 3:U.flags=U.flags&-65537|128;case 0:if(U=L.payload,b=typeof U=="function"?U.call(re,j,b):U,b==null)break e;j=G({},j,b);break e;case 2:ut=!0}}b=s.callback,b!==null&&(e.flags|=64,S&&(e.flags|=8192),S=n.callbacks,S===null?n.callbacks=[b]:S.push(b))}else S={lane:b,tag:s.tag,payload:s.payload,callback:s.callback,next:null},A===null?(x=A=S,d=j):A=A.next=S,u|=b;if(s=s.next,s===null){if(s=n.shared.pending,s===null)break;S=s,s=S.next,S.next=null,n.lastBaseUpdate=S,n.shared.pending=null}}while(!0);A===null&&(d=j),n.baseState=d,n.firstBaseUpdate=x,n.lastBaseUpdate=A,i===null&&(n.shared.lanes=0),mt|=u,e.lanes=u,e.memoizedState=j}}function Qo(e,l){if(typeof e!="function")throw Error(f(191,e));e.call(l)}function Xo(e,l){var t=e.callbacks;if(t!==null)for(e.callbacks=null,e=0;ei?i:8;var u=T.T,s={};T.T=s,fc(e,!1,l,t);try{var d=n(),x=T.S;if(x!==null&&x(s,d),d!==null&&typeof d=="object"&&typeof d.then=="function"){var A=oh(d,a);tn(e,l,A,sl(e))}else tn(e,l,a,sl(e))}catch(j){tn(e,l,{then:function(){},status:"rejected",reason:j},sl())}finally{R.p=i,u!==null&&s.types!==null&&(u.types=s.types),T.T=u}}function yh(){}function oc(e,l,t,a){if(e.tag!==5)throw Error(f(476));var n=Sr(e).queue;br(e,n,l,w,t===null?yh:function(){return Ar(e),t(a)})}function Sr(e){var l=e.memoizedState;if(l!==null)return l;l={memoizedState:w,baseState:w,baseQueue:null,queue:{pending:null,lanes:0,dispatch:null,lastRenderedReducer:wl,lastRenderedState:w},next:null};var t={};return l.next={memoizedState:t,baseState:t,baseQueue:null,queue:{pending:null,lanes:0,dispatch:null,lastRenderedReducer:wl,lastRenderedState:t},next:null},e.memoizedState=l,e=e.alternate,e!==null&&(e.memoizedState=l),l}function Ar(e){var l=Sr(e);l.next===null&&(l=e.alternate.memoizedState),tn(e,l.next.queue,{},sl())}function rc(){return Be(bn)}function Er(){return Se().memoizedState}function Tr(){return Se().memoizedState}function gh(e){for(var l=e.return;l!==null;){switch(l.tag){case 24:case 3:var t=sl();e=ct(t);var a=st(l,e,t);a!==null&&(We(a,l,t),Wa(a,l,t)),l={cache:Yu()},e.payload=l;return}l=l.return}}function vh(e,l,t){var a=sl();t={lane:a,revertLane:0,gesture:null,action:t,hasEagerState:!1,eagerState:null,next:null},di(e)?jr(l,t):(t=Cu(e,l,t,a),t!==null&&(We(t,e,a),zr(t,l,a)))}function Nr(e,l,t){var a=sl();tn(e,l,t,a)}function tn(e,l,t,a){var n={lane:a,revertLane:0,gesture:null,action:t,hasEagerState:!1,eagerState:null,next:null};if(di(e))jr(l,n);else{var i=e.alternate;if(e.lanes===0&&(i===null||i.lanes===0)&&(i=l.lastRenderedReducer,i!==null))try{var u=l.lastRenderedState,s=i(u,t);if(n.hasEagerState=!0,n.eagerState=s,tl(s,u))return Kn(e,l,n,0),de===null&&Zn(),!1}catch{}if(t=Cu(e,l,n,a),t!==null)return We(t,e,a),zr(t,l,a),!0}return!1}function fc(e,l,t,a){if(a={lane:2,revertLane:Xc(),gesture:null,action:a,hasEagerState:!1,eagerState:null,next:null},di(e)){if(l)throw Error(f(479))}else l=Cu(e,t,a,2),l!==null&&We(l,e,2)}function di(e){var l=e.alternate;return e===Z||l!==null&&l===Z}function jr(e,l){ha=ii=!0;var t=e.pending;t===null?l.next=l:(l.next=t.next,t.next=l),e.pending=l}function zr(e,l,t){if((t&4194048)!==0){var a=l.lanes;a&=e.pendingLanes,t|=a,l.lanes=t,Ds(e,t)}}var an={readContext:Be,use:si,useCallback:ve,useContext:ve,useEffect:ve,useImperativeHandle:ve,useLayoutEffect:ve,useInsertionEffect:ve,useMemo:ve,useReducer:ve,useRef:ve,useState:ve,useDebugValue:ve,useDeferredValue:ve,useTransition:ve,useSyncExternalStore:ve,useId:ve,useHostTransitionStatus:ve,useFormState:ve,useActionState:ve,useOptimistic:ve,useMemoCache:ve,useCacheRefresh:ve};an.useEffectEvent=ve;var Cr={readContext:Be,use:si,useCallback:function(e,l){return we().memoizedState=[e,l===void 0?null:l],e},useContext:Be,useEffect:fr,useImperativeHandle:function(e,l,t){t=t!=null?t.concat([e]):null,ri(4194308,4,yr.bind(null,l,e),t)},useLayoutEffect:function(e,l){return ri(4194308,4,e,l)},useInsertionEffect:function(e,l){ri(4,2,e,l)},useMemo:function(e,l){var t=we();l=l===void 0?null:l;var a=e();if(Lt){Pl(!0);try{e()}finally{Pl(!1)}}return t.memoizedState=[a,l],a},useReducer:function(e,l,t){var a=we();if(t!==void 0){var n=t(l);if(Lt){Pl(!0);try{t(l)}finally{Pl(!1)}}}else n=l;return a.memoizedState=a.baseState=n,e={pending:null,lanes:0,dispatch:null,lastRenderedReducer:e,lastRenderedState:n},a.queue=e,e=e.dispatch=vh.bind(null,Z,e),[a.memoizedState,e]},useRef:function(e){var l=we();return e={current:e},l.memoizedState=e},useState:function(e){e=nc(e);var l=e.queue,t=Nr.bind(null,Z,l);return l.dispatch=t,[e.memoizedState,t]},useDebugValue:cc,useDeferredValue:function(e,l){var t=we();return sc(t,e,l)},useTransition:function(){var e=nc(!1);return e=br.bind(null,Z,e.queue,!0,!1),we().memoizedState=e,[!1,e]},useSyncExternalStore:function(e,l,t){var a=Z,n=we();if(P){if(t===void 0)throw Error(f(407));t=t()}else{if(t=l(),de===null)throw Error(f(349));(F&127)!==0||$o(a,l,t)}n.memoizedState=t;var i={value:t,getSnapshot:l};return n.queue=i,fr(Wo.bind(null,a,i,e),[e]),a.flags|=2048,ga(9,{destroy:void 0},Fo.bind(null,a,i,t,l),null),t},useId:function(){var e=we(),l=de.identifierPrefix;if(P){var t=Cl,a=zl;t=(a&~(1<<32-ll(a)-1)).toString(32)+t,l="_"+l+"R_"+t,t=ui++,0<\/script>",i=i.removeChild(i.firstChild);break;case"select":i=typeof a.is=="string"?u.createElement("select",{is:a.is}):u.createElement("select"),a.multiple?i.multiple=!0:a.size&&(i.size=a.size);break;default:i=typeof a.is=="string"?u.createElement(n,{is:a.is}):u.createElement(n)}}i[_e]=l,i[Ze]=a;e:for(u=l.child;u!==null;){if(u.tag===5||u.tag===6)i.appendChild(u.stateNode);else if(u.tag!==4&&u.tag!==27&&u.child!==null){u.child.return=u,u=u.child;continue}if(u===l)break e;for(;u.sibling===null;){if(u.return===null||u.return===l)break e;u=u.return}u.sibling.return=u.return,u=u.sibling}l.stateNode=i;e:switch(He(i,n,a),n){case"button":case"input":case"select":case"textarea":a=!!a.autoFocus;break e;case"img":a=!0;break e;default:a=!1}a&&Xl(l)}}return he(l),Nc(l,l.type,e===null?null:e.memoizedProps,l.pendingProps,t),null;case 6:if(e&&l.stateNode!=null)e.memoizedProps!==a&&Xl(l);else{if(typeof a!="string"&&l.stateNode===null)throw Error(f(166));if(e=J.current,ca(l)){if(e=l.stateNode,t=l.memoizedProps,a=null,n=Re,n!==null)switch(n.tag){case 27:case 5:a=n.memoizedProps}e[_e]=l,e=!!(e.nodeValue===t||a!==null&&a.suppressHydrationWarning===!0||kf(e.nodeValue,t)),e||nt(l,!0)}else e=_i(e).createTextNode(a),e[_e]=l,l.stateNode=e}return he(l),null;case 31:if(t=l.memoizedState,e===null||e.memoizedState!==null){if(a=ca(l),t!==null){if(e===null){if(!a)throw Error(f(318));if(e=l.memoizedState,e=e!==null?e.dehydrated:null,!e)throw Error(f(557));e[_e]=l}else Rt(),(l.flags&128)===0&&(l.memoizedState=null),l.flags|=4;he(l),e=!1}else t=Uu(),e!==null&&e.memoizedState!==null&&(e.memoizedState.hydrationErrors=t),e=!0;if(!e)return l.flags&256?(il(l),l):(il(l),null);if((l.flags&128)!==0)throw Error(f(558))}return he(l),null;case 13:if(a=l.memoizedState,e===null||e.memoizedState!==null&&e.memoizedState.dehydrated!==null){if(n=ca(l),a!==null&&a.dehydrated!==null){if(e===null){if(!n)throw Error(f(318));if(n=l.memoizedState,n=n!==null?n.dehydrated:null,!n)throw Error(f(317));n[_e]=l}else Rt(),(l.flags&128)===0&&(l.memoizedState=null),l.flags|=4;he(l),n=!1}else n=Uu(),e!==null&&e.memoizedState!==null&&(e.memoizedState.hydrationErrors=n),n=!0;if(!n)return l.flags&256?(il(l),l):(il(l),null)}return il(l),(l.flags&128)!==0?(l.lanes=t,l):(t=a!==null,e=e!==null&&e.memoizedState!==null,t&&(a=l.child,n=null,a.alternate!==null&&a.alternate.memoizedState!==null&&a.alternate.memoizedState.cachePool!==null&&(n=a.alternate.memoizedState.cachePool.pool),i=null,a.memoizedState!==null&&a.memoizedState.cachePool!==null&&(i=a.memoizedState.cachePool.pool),i!==n&&(a.flags|=2048)),t!==e&&t&&(l.child.flags|=8192),vi(l,l.updateQueue),he(l),null);case 4:return xe(),e===null&&Jc(l.stateNode.containerInfo),he(l),null;case 10:return Yl(l.type),he(l),null;case 19:if(z(be),a=l.memoizedState,a===null)return he(l),null;if(n=(l.flags&128)!==0,i=a.rendering,i===null)if(n)un(a,!1);else{if(pe!==0||e!==null&&(e.flags&128)!==0)for(e=l.child;e!==null;){if(i=ni(e),i!==null){for(l.flags|=128,un(a,!1),e=i.updateQueue,l.updateQueue=e,vi(l,e),l.subtreeFlags=0,e=t,t=l.child;t!==null;)No(t,e),t=t.sibling;return B(be,be.current&1|2),P&&ql(l,a.treeForkCount),l.child}e=e.sibling}a.tail!==null&&Pe()>Ai&&(l.flags|=128,n=!0,un(a,!1),l.lanes=4194304)}else{if(!n)if(e=ni(i),e!==null){if(l.flags|=128,n=!0,e=e.updateQueue,l.updateQueue=e,vi(l,e),un(a,!0),a.tail===null&&a.tailMode==="hidden"&&!i.alternate&&!P)return he(l),null}else 2*Pe()-a.renderingStartTime>Ai&&t!==536870912&&(l.flags|=128,n=!0,un(a,!1),l.lanes=4194304);a.isBackwards?(i.sibling=l.child,l.child=i):(e=a.last,e!==null?e.sibling=i:l.child=i,a.last=i)}return a.tail!==null?(e=a.tail,a.rendering=e,a.tail=e.sibling,a.renderingStartTime=Pe(),e.sibling=null,t=be.current,B(be,n?t&1|2:t&1),P&&ql(l,a.treeForkCount),e):(he(l),null);case 22:case 23:return il(l),ku(),a=l.memoizedState!==null,e!==null?e.memoizedState!==null!==a&&(l.flags|=8192):a&&(l.flags|=8192),a?(t&536870912)!==0&&(l.flags&128)===0&&(he(l),l.subtreeFlags&6&&(l.flags|=8192)):he(l),t=l.updateQueue,t!==null&&vi(l,t.retryQueue),t=null,e!==null&&e.memoizedState!==null&&e.memoizedState.cachePool!==null&&(t=e.memoizedState.cachePool.pool),a=null,l.memoizedState!==null&&l.memoizedState.cachePool!==null&&(a=l.memoizedState.cachePool.pool),a!==t&&(l.flags|=2048),e!==null&&z(Ht),null;case 24:return t=null,e!==null&&(t=e.memoizedState.cache),l.memoizedState.cache!==t&&(l.flags|=2048),Yl(Ae),he(l),null;case 25:return null;case 30:return null}throw Error(f(156,l.tag))}function Ah(e,l){switch(Ru(l),l.tag){case 1:return e=l.flags,e&65536?(l.flags=e&-65537|128,l):null;case 3:return Yl(Ae),xe(),e=l.flags,(e&65536)!==0&&(e&128)===0?(l.flags=e&-65537|128,l):null;case 26:case 27:case 5:return Cn(l),null;case 31:if(l.memoizedState!==null){if(il(l),l.alternate===null)throw Error(f(340));Rt()}return e=l.flags,e&65536?(l.flags=e&-65537|128,l):null;case 13:if(il(l),e=l.memoizedState,e!==null&&e.dehydrated!==null){if(l.alternate===null)throw Error(f(340));Rt()}return e=l.flags,e&65536?(l.flags=e&-65537|128,l):null;case 19:return z(be),null;case 4:return xe(),null;case 10:return Yl(l.type),null;case 22:case 23:return il(l),ku(),e!==null&&z(Ht),e=l.flags,e&65536?(l.flags=e&-65537|128,l):null;case 24:return Yl(Ae),null;case 25:return null;default:return null}}function Ir(e,l){switch(Ru(l),l.tag){case 3:Yl(Ae),xe();break;case 26:case 27:case 5:Cn(l);break;case 4:xe();break;case 31:l.memoizedState!==null&&il(l);break;case 13:il(l);break;case 19:z(be);break;case 10:Yl(l.type);break;case 22:case 23:il(l),ku(),e!==null&&z(Ht);break;case 24:Yl(Ae)}}function cn(e,l){try{var t=l.updateQueue,a=t!==null?t.lastEffect:null;if(a!==null){var n=a.next;t=n;do{if((t.tag&e)===e){a=void 0;var i=t.create,u=t.inst;a=i(),u.destroy=a}t=t.next}while(t!==n)}}catch(s){ue(l,l.return,s)}}function ft(e,l,t){try{var a=l.updateQueue,n=a!==null?a.lastEffect:null;if(n!==null){var i=n.next;a=i;do{if((a.tag&e)===e){var u=a.inst,s=u.destroy;if(s!==void 0){u.destroy=void 0,n=l;var d=t,x=s;try{x()}catch(A){ue(n,d,A)}}}a=a.next}while(a!==i)}}catch(A){ue(l,l.return,A)}}function Pr(e){var l=e.updateQueue;if(l!==null){var t=e.stateNode;try{Xo(l,t)}catch(a){ue(e,e.return,a)}}}function ef(e,l,t){t.props=wt(e.type,e.memoizedProps),t.state=e.memoizedState;try{t.componentWillUnmount()}catch(a){ue(e,l,a)}}function sn(e,l){try{var t=e.ref;if(t!==null){switch(e.tag){case 26:case 27:case 5:var a=e.stateNode;break;case 30:a=e.stateNode;break;default:a=e.stateNode}typeof t=="function"?e.refCleanup=t(a):t.current=a}}catch(n){ue(e,l,n)}}function Ol(e,l){var t=e.ref,a=e.refCleanup;if(t!==null)if(typeof a=="function")try{a()}catch(n){ue(e,l,n)}finally{e.refCleanup=null,e=e.alternate,e!=null&&(e.refCleanup=null)}else if(typeof t=="function")try{t(null)}catch(n){ue(e,l,n)}else t.current=null}function lf(e){var l=e.type,t=e.memoizedProps,a=e.stateNode;try{e:switch(l){case"button":case"input":case"select":case"textarea":t.autoFocus&&a.focus();break e;case"img":t.src?a.src=t.src:t.srcSet&&(a.srcset=t.srcSet)}}catch(n){ue(e,e.return,n)}}function jc(e,l,t){try{var a=e.stateNode;Vh(a,e.type,t,l),a[Ze]=l}catch(n){ue(e,e.return,n)}}function tf(e){return e.tag===5||e.tag===3||e.tag===26||e.tag===27&&pt(e.type)||e.tag===4}function zc(e){e:for(;;){for(;e.sibling===null;){if(e.return===null||tf(e.return))return null;e=e.return}for(e.sibling.return=e.return,e=e.sibling;e.tag!==5&&e.tag!==6&&e.tag!==18;){if(e.tag===27&&pt(e.type)||e.flags&2||e.child===null||e.tag===4)continue e;e.child.return=e,e=e.child}if(!(e.flags&2))return e.stateNode}}function Cc(e,l,t){var a=e.tag;if(a===5||a===6)e=e.stateNode,l?(t.nodeType===9?t.body:t.nodeName==="HTML"?t.ownerDocument.body:t).insertBefore(e,l):(l=t.nodeType===9?t.body:t.nodeName==="HTML"?t.ownerDocument.body:t,l.appendChild(e),t=t._reactRootContainer,t!=null||l.onclick!==null||(l.onclick=Bl));else if(a!==4&&(a===27&&pt(e.type)&&(t=e.stateNode,l=null),e=e.child,e!==null))for(Cc(e,l,t),e=e.sibling;e!==null;)Cc(e,l,t),e=e.sibling}function pi(e,l,t){var a=e.tag;if(a===5||a===6)e=e.stateNode,l?t.insertBefore(e,l):t.appendChild(e);else if(a!==4&&(a===27&&pt(e.type)&&(t=e.stateNode),e=e.child,e!==null))for(pi(e,l,t),e=e.sibling;e!==null;)pi(e,l,t),e=e.sibling}function af(e){var l=e.stateNode,t=e.memoizedProps;try{for(var a=e.type,n=l.attributes;n.length;)l.removeAttributeNode(n[0]);He(l,a,t),l[_e]=e,l[Ze]=t}catch(i){ue(e,e.return,i)}}var Vl=!1,Ne=!1,Oc=!1,nf=typeof WeakSet=="function"?WeakSet:Set,Oe=null;function Eh(e,l){if(e=e.containerInfo,Fc=Yi,e=go(e),Au(e)){if("selectionStart"in e)var t={start:e.selectionStart,end:e.selectionEnd};else e:{t=(t=e.ownerDocument)&&t.defaultView||window;var a=t.getSelection&&t.getSelection();if(a&&a.rangeCount!==0){t=a.anchorNode;var n=a.anchorOffset,i=a.focusNode;a=a.focusOffset;try{t.nodeType,i.nodeType}catch{t=null;break e}var u=0,s=-1,d=-1,x=0,A=0,j=e,b=null;l:for(;;){for(var S;j!==t||n!==0&&j.nodeType!==3||(s=u+n),j!==i||a!==0&&j.nodeType!==3||(d=u+a),j.nodeType===3&&(u+=j.nodeValue.length),(S=j.firstChild)!==null;)b=j,j=S;for(;;){if(j===e)break l;if(b===t&&++x===n&&(s=u),b===i&&++A===a&&(d=u),(S=j.nextSibling)!==null)break;j=b,b=j.parentNode}j=S}t=s===-1||d===-1?null:{start:s,end:d}}else t=null}t=t||{start:0,end:0}}else t=null;for(Wc={focusedElem:e,selectionRange:t},Yi=!1,Oe=l;Oe!==null;)if(l=Oe,e=l.child,(l.subtreeFlags&1028)!==0&&e!==null)e.return=l,Oe=e;else for(;Oe!==null;){switch(l=Oe,i=l.alternate,e=l.flags,l.tag){case 0:if((e&4)!==0&&(e=l.updateQueue,e=e!==null?e.events:null,e!==null))for(t=0;t title"))),He(i,a,t),i[_e]=e,Ce(i),a=i;break e;case"link":var u=fd("link","href",n).get(a+(t.href||""));if(u){for(var s=0;sre&&(u=re,re=L,L=u);var g=ho(s,L),m=ho(s,re);if(g&&m&&(S.rangeCount!==1||S.anchorNode!==g.node||S.anchorOffset!==g.offset||S.focusNode!==m.node||S.focusOffset!==m.offset)){var p=j.createRange();p.setStart(g.node,g.offset),S.removeAllRanges(),L>re?(S.addRange(p),S.extend(m.node,m.offset)):(p.setEnd(m.node,m.offset),S.addRange(p))}}}}for(j=[],S=s;S=S.parentNode;)S.nodeType===1&&j.push({element:S,left:S.scrollLeft,top:S.scrollTop});for(typeof s.focus=="function"&&s.focus(),s=0;st?32:t,T.T=null,t=Hc,Hc=null;var i=yt,u=$l;if(je=0,Sa=yt=null,$l=0,(ae&6)!==0)throw Error(f(331));var s=ae;if(ae|=4,gf(i.current),mf(i,i.current,u,t),ae=s,hn(0,!1),el&&typeof el.onPostCommitFiberRoot=="function")try{el.onPostCommitFiberRoot(Da,i)}catch{}return!0}finally{R.p=n,T.T=a,Bf(e,l)}}function Hf(e,l,t){l=ml(t,l),l=yc(e.stateNode,l,2),e=st(e,l,2),e!==null&&(Ra(e,2),Ml(e))}function ue(e,l,t){if(e.tag===3)Hf(e,e,t);else for(;l!==null;){if(l.tag===3){Hf(l,e,t);break}else if(l.tag===1){var a=l.stateNode;if(typeof l.type.getDerivedStateFromError=="function"||typeof a.componentDidCatch=="function"&&(ht===null||!ht.has(a))){e=ml(t,e),t=Hr(2),a=st(l,t,2),a!==null&&(qr(t,a,l,e),Ra(a,2),Ml(a));break}}l=l.return}}function Lc(e,l,t){var a=e.pingCache;if(a===null){a=e.pingCache=new jh;var n=new Set;a.set(l,n)}else n=a.get(l),n===void 0&&(n=new Set,a.set(l,n));n.has(t)||(_c=!0,n.add(t),e=Dh.bind(null,e,l,t),l.then(e,e))}function Dh(e,l,t){var a=e.pingCache;a!==null&&a.delete(l),e.pingedLanes|=e.suspendedLanes&t,e.warmLanes&=~t,de===e&&(F&t)===t&&(pe===4||pe===3&&(F&62914560)===F&&300>Pe()-Si?(ae&2)===0&&Aa(e,0):Rc|=t,ba===F&&(ba=0)),Ml(e)}function qf(e,l){l===0&&(l=Os()),e=Dt(e,l),e!==null&&(Ra(e,l),Ml(e))}function _h(e){var l=e.memoizedState,t=0;l!==null&&(t=l.retryLane),qf(e,t)}function Rh(e,l){var t=0;switch(e.tag){case 31:case 13:var a=e.stateNode,n=e.memoizedState;n!==null&&(t=n.retryLane);break;case 19:a=e.stateNode;break;case 22:a=e.stateNode._retryCache;break;default:throw Error(f(314))}a!==null&&a.delete(l),qf(e,t)}function Bh(e,l){return Pi(e,l)}var Ci=null,Ta=null,wc=!1,Oi=!1,Qc=!1,vt=0;function Ml(e){e!==Ta&&e.next===null&&(Ta===null?Ci=Ta=e:Ta=Ta.next=e),Oi=!0,wc||(wc=!0,Hh())}function hn(e,l){if(!Qc&&Oi){Qc=!0;do for(var t=!1,a=Ci;a!==null;){if(e!==0){var n=a.pendingLanes;if(n===0)var i=0;else{var u=a.suspendedLanes,s=a.pingedLanes;i=(1<<31-ll(42|e)+1)-1,i&=n&~(u&~s),i=i&201326741?i&201326741|1:i?i|2:0}i!==0&&(t=!0,wf(a,i))}else i=F,i=Rn(a,a===de?i:0,a.cancelPendingCommit!==null||a.timeoutHandle!==-1),(i&3)===0||_a(a,i)||(t=!0,wf(a,i));a=a.next}while(t);Qc=!1}}function Uh(){Gf()}function Gf(){Oi=wc=!1;var e=0;vt!==0&&Kh()&&(e=vt);for(var l=Pe(),t=null,a=Ci;a!==null;){var n=a.next,i=Yf(a,l);i===0?(a.next=null,t===null?Ci=n:t.next=n,n===null&&(Ta=t)):(t=a,(e!==0||(i&3)!==0)&&(Oi=!0)),a=n}je!==0&&je!==5||hn(e),vt!==0&&(vt=0)}function Yf(e,l){for(var t=e.suspendedLanes,a=e.pingedLanes,n=e.expirationTimes,i=e.pendingLanes&-62914561;0s)break;var A=d.transferSize,j=d.initiatorType;A&&$f(j)&&(d=d.responseEnd,u+=A*(d"u"?null:document;function cd(e,l,t){var a=Na;if(a&&typeof l=="string"&&l){var n=fl(l);n='link[rel="'+e+'"][href="'+n+'"]',typeof t=="string"&&(n+='[crossorigin="'+t+'"]'),ud.has(n)||(ud.add(n),e={rel:e,crossOrigin:t,href:l},a.querySelector(n)===null&&(l=a.createElement("link"),He(l,"link",e),Ce(l),a.head.appendChild(l)))}}function ly(e){Fl.D(e),cd("dns-prefetch",e,null)}function ty(e,l){Fl.C(e,l),cd("preconnect",e,l)}function ay(e,l,t){Fl.L(e,l,t);var a=Na;if(a&&e&&l){var n='link[rel="preload"][as="'+fl(l)+'"]';l==="image"&&t&&t.imageSrcSet?(n+='[imagesrcset="'+fl(t.imageSrcSet)+'"]',typeof t.imageSizes=="string"&&(n+='[imagesizes="'+fl(t.imageSizes)+'"]')):n+='[href="'+fl(e)+'"]';var i=n;switch(l){case"style":i=ja(e);break;case"script":i=za(e)}xl.has(i)||(e=G({rel:"preload",href:l==="image"&&t&&t.imageSrcSet?void 0:e,as:l},t),xl.set(i,e),a.querySelector(n)!==null||l==="style"&&a.querySelector(pn(i))||l==="script"&&a.querySelector(xn(i))||(l=a.createElement("link"),He(l,"link",e),Ce(l),a.head.appendChild(l)))}}function ny(e,l){Fl.m(e,l);var t=Na;if(t&&e){var a=l&&typeof l.as=="string"?l.as:"script",n='link[rel="modulepreload"][as="'+fl(a)+'"][href="'+fl(e)+'"]',i=n;switch(a){case"audioworklet":case"paintworklet":case"serviceworker":case"sharedworker":case"worker":case"script":i=za(e)}if(!xl.has(i)&&(e=G({rel:"modulepreload",href:e},l),xl.set(i,e),t.querySelector(n)===null)){switch(a){case"audioworklet":case"paintworklet":case"serviceworker":case"sharedworker":case"worker":case"script":if(t.querySelector(xn(i)))return}a=t.createElement("link"),He(a,"link",e),Ce(a),t.head.appendChild(a)}}}function iy(e,l,t){Fl.S(e,l,t);var a=Na;if(a&&e){var n=kt(a).hoistableStyles,i=ja(e);l=l||"default";var u=n.get(i);if(!u){var s={loading:0,preload:null};if(u=a.querySelector(pn(i)))s.loading=5;else{e=G({rel:"stylesheet",href:e,"data-precedence":l},t),(t=xl.get(i))&&ns(e,t);var d=u=a.createElement("link");Ce(d),He(d,"link",e),d._p=new Promise(function(x,A){d.onload=x,d.onerror=A}),d.addEventListener("load",function(){s.loading|=1}),d.addEventListener("error",function(){s.loading|=2}),s.loading|=4,Bi(u,l,a)}u={type:"stylesheet",instance:u,count:1,state:s},n.set(i,u)}}}function uy(e,l){Fl.X(e,l);var t=Na;if(t&&e){var a=kt(t).hoistableScripts,n=za(e),i=a.get(n);i||(i=t.querySelector(xn(n)),i||(e=G({src:e,async:!0},l),(l=xl.get(n))&&is(e,l),i=t.createElement("script"),Ce(i),He(i,"link",e),t.head.appendChild(i)),i={type:"script",instance:i,count:1,state:null},a.set(n,i))}}function cy(e,l){Fl.M(e,l);var t=Na;if(t&&e){var a=kt(t).hoistableScripts,n=za(e),i=a.get(n);i||(i=t.querySelector(xn(n)),i||(e=G({src:e,async:!0,type:"module"},l),(l=xl.get(n))&&is(e,l),i=t.createElement("script"),Ce(i),He(i,"link",e),t.head.appendChild(i)),i={type:"script",instance:i,count:1,state:null},a.set(n,i))}}function sd(e,l,t,a){var n=(n=J.current)?Ri(n):null;if(!n)throw Error(f(446));switch(e){case"meta":case"title":return null;case"style":return typeof t.precedence=="string"&&typeof t.href=="string"?(l=ja(t.href),t=kt(n).hoistableStyles,a=t.get(l),a||(a={type:"style",instance:null,count:0,state:null},t.set(l,a)),a):{type:"void",instance:null,count:0,state:null};case"link":if(t.rel==="stylesheet"&&typeof t.href=="string"&&typeof t.precedence=="string"){e=ja(t.href);var i=kt(n).hoistableStyles,u=i.get(e);if(u||(n=n.ownerDocument||n,u={type:"stylesheet",instance:null,count:0,state:{loading:0,preload:null}},i.set(e,u),(i=n.querySelector(pn(e)))&&!i._p&&(u.instance=i,u.state.loading=5),xl.has(e)||(t={rel:"preload",as:"style",href:t.href,crossOrigin:t.crossOrigin,integrity:t.integrity,media:t.media,hrefLang:t.hrefLang,referrerPolicy:t.referrerPolicy},xl.set(e,t),i||sy(n,e,t,u.state))),l&&a===null)throw Error(f(528,""));return u}if(l&&a!==null)throw Error(f(529,""));return null;case"script":return l=t.async,t=t.src,typeof t=="string"&&l&&typeof l!="function"&&typeof l!="symbol"?(l=za(t),t=kt(n).hoistableScripts,a=t.get(l),a||(a={type:"script",instance:null,count:0,state:null},t.set(l,a)),a):{type:"void",instance:null,count:0,state:null};default:throw Error(f(444,e))}}function ja(e){return'href="'+fl(e)+'"'}function pn(e){return'link[rel="stylesheet"]['+e+"]"}function od(e){return G({},e,{"data-precedence":e.precedence,precedence:null})}function sy(e,l,t,a){e.querySelector('link[rel="preload"][as="style"]['+l+"]")?a.loading=1:(l=e.createElement("link"),a.preload=l,l.addEventListener("load",function(){return a.loading|=1}),l.addEventListener("error",function(){return a.loading|=2}),He(l,"link",t),Ce(l),e.head.appendChild(l))}function za(e){return'[src="'+fl(e)+'"]'}function xn(e){return"script[async]"+e}function rd(e,l,t){if(l.count++,l.instance===null)switch(l.type){case"style":var a=e.querySelector('style[data-href~="'+fl(t.href)+'"]');if(a)return l.instance=a,Ce(a),a;var n=G({},t,{"data-href":t.href,"data-precedence":t.precedence,href:null,precedence:null});return a=(e.ownerDocument||e).createElement("style"),Ce(a),He(a,"style",n),Bi(a,t.precedence,e),l.instance=a;case"stylesheet":n=ja(t.href);var i=e.querySelector(pn(n));if(i)return l.state.loading|=4,l.instance=i,Ce(i),i;a=od(t),(n=xl.get(n))&&ns(a,n),i=(e.ownerDocument||e).createElement("link"),Ce(i);var u=i;return u._p=new Promise(function(s,d){u.onload=s,u.onerror=d}),He(i,"link",a),l.state.loading|=4,Bi(i,t.precedence,e),l.instance=i;case"script":return i=za(t.src),(n=e.querySelector(xn(i)))?(l.instance=n,Ce(n),n):(a=t,(n=xl.get(i))&&(a=G({},t),is(a,n)),e=e.ownerDocument||e,n=e.createElement("script"),Ce(n),He(n,"link",a),e.head.appendChild(n),l.instance=n);case"void":return null;default:throw Error(f(443,l.type))}else l.type==="stylesheet"&&(l.state.loading&4)===0&&(a=l.instance,l.state.loading|=4,Bi(a,t.precedence,e));return l.instance}function Bi(e,l,t){for(var a=t.querySelectorAll('link[rel="stylesheet"][data-precedence],style[data-precedence]'),n=a.length?a[a.length-1]:null,i=n,u=0;u title"):null)}function oy(e,l,t){if(t===1||l.itemProp!=null)return!1;switch(e){case"meta":case"title":return!0;case"style":if(typeof l.precedence!="string"||typeof l.href!="string"||l.href==="")break;return!0;case"link":if(typeof l.rel!="string"||typeof l.href!="string"||l.href===""||l.onLoad||l.onError)break;return l.rel==="stylesheet"?(e=l.disabled,typeof l.precedence=="string"&&e==null):!0;case"script":if(l.async&&typeof l.async!="function"&&typeof l.async!="symbol"&&!l.onLoad&&!l.onError&&l.src&&typeof l.src=="string")return!0}return!1}function md(e){return!(e.type==="stylesheet"&&(e.state.loading&3)===0)}function ry(e,l,t,a){if(t.type==="stylesheet"&&(typeof a.media!="string"||matchMedia(a.media).matches!==!1)&&(t.state.loading&4)===0){if(t.instance===null){var n=ja(a.href),i=l.querySelector(pn(n));if(i){l=i._p,l!==null&&typeof l=="object"&&typeof l.then=="function"&&(e.count++,e=Hi.bind(e),l.then(e,e)),t.state.loading|=4,t.instance=i,Ce(i);return}i=l.ownerDocument||l,a=od(a),(n=xl.get(n))&&ns(a,n),i=i.createElement("link"),Ce(i);var u=i;u._p=new Promise(function(s,d){u.onload=s,u.onerror=d}),He(i,"link",a),t.instance=i}e.stylesheets===null&&(e.stylesheets=new Map),e.stylesheets.set(t,l),(l=t.state.preload)&&(t.state.loading&3)===0&&(e.count++,t=Hi.bind(e),l.addEventListener("load",t),l.addEventListener("error",t))}}var us=0;function fy(e,l){return e.stylesheets&&e.count===0&&Gi(e,e.stylesheets),0us?50:800)+l);return e.unsuspend=t,function(){e.unsuspend=null,clearTimeout(a),clearTimeout(n)}}:null}function Hi(){if(this.count--,this.count===0&&(this.imgCount===0||!this.waitingForImages)){if(this.stylesheets)Gi(this,this.stylesheets);else if(this.unsuspend){var e=this.unsuspend;this.unsuspend=null,e()}}}var qi=null;function Gi(e,l){e.stylesheets=null,e.unsuspend!==null&&(e.count++,qi=new Map,l.forEach(dy,e),qi=null,Hi.call(e))}function dy(e,l){if(!(l.state.loading&4)){var t=qi.get(e);if(t)var a=t.get(null);else{t=new Map,qi.set(e,t);for(var n=e.querySelectorAll("link[data-precedence],style[data-precedence]"),i=0;i"u"||typeof __REACT_DEVTOOLS_GLOBAL_HOOK__.checkDCE!="function"))try{__REACT_DEVTOOLS_GLOBAL_HOOK__.checkDCE(v)}catch(r){console.error(r)}}return v(),ys.exports=Cy(),ys.exports}var My=Oy();function Dy(){const[v,r]=ge.useState(!1);ge.useEffect(()=>{const f=()=>{r(!!document.fullscreenElement)};return document.addEventListener("fullscreenchange",f),()=>document.removeEventListener("fullscreenchange",f)},[]);const y=ge.useCallback(()=>{document.fullscreenElement?document.exitFullscreen():document.documentElement.requestFullscreen()},[]);return{isFullscreen:v,toggleFullscreen:y}}function _y({onFullscreen:v,onDownload:r}){ge.useEffect(()=>{const y=f=>{if(!(f.target instanceof HTMLInputElement||f.target instanceof HTMLTextAreaElement))switch(f.key){case"f":case"F":f.preventDefault(),v();break;case"d":case"D":f.preventDefault(),r();break;case"Escape":document.fullscreenElement&&document.exitFullscreen();break}};return window.addEventListener("keydown",y),()=>window.removeEventListener("keydown",y)},[v,r])}function Ry(v){const[r,y]=ge.useState(0);ge.useEffect(()=>{const O=[];return v.forEach((D,_)=>{const M=document.getElementById(D);if(!M)return;const C=new IntersectionObserver(([E])=>{E.isIntersecting&&y(_)},{threshold:.15,rootMargin:"-10% 0px -60% 0px"});C.observe(M),O.push(C)}),()=>O.forEach(D=>D.disconnect())},[v]);const f=ge.useCallback(O=>{const D=document.getElementById(O);D&&D.scrollIntoView({behavior:"smooth"})},[]);return{activeSection:r,scrollToSection:f}}function By(v=.15){const r=ge.useRef(null),[y,f]=ge.useState(!1);return ge.useEffect(()=>{const O=r.current;if(!O)return;const D=new IntersectionObserver(([_])=>{_.isIntersecting&&(f(!0),D.unobserve(O))},{threshold:v});return D.observe(O),()=>D.disconnect()},[v]),{ref:r,isVisible:y}}function Uy({id:v,component:r,isSticky:y}){const{ref:f,isVisible:O}=By();return c.jsx("section",{id:v,ref:f,className:`${y?"":"py-16 md:py-24"} ${O?"section-visible":""}`,children:c.jsx(r,{isVisible:O})})}function Hy({sections:v,activeSection:r,onNavigate:y}){return c.jsx("nav",{className:"fixed left-4 top-1/2 -translate-y-1/2 z-40 hidden md:flex flex-col gap-2 group",children:v.map((f,O)=>c.jsxs("button",{onClick:()=>y(f.id),className:"relative flex items-center gap-3",title:f.title,children:[c.jsx("div",{className:`rounded-full transition-all duration-300 ${O===r?"w-3 h-3 bg-primary glow-accent":f.isAppendix?"w-1.5 h-1.5 bg-text-tertiary hover:bg-text-secondary":"w-2 h-2 bg-border-medium hover:bg-text-tertiary"}`}),c.jsx("span",{className:"text-xs text-text-tertiary whitespace-nowrap opacity-0 group-hover:opacity-100 transition-opacity duration-200 pointer-events-none font-medium",children:f.title})]},f.id))})}const qy=v=>v.replace(/([a-z0-9])([A-Z])/g,"$1-$2").toLowerCase(),Gy=v=>v.replace(/^([A-Z])|[\s-_]+(\w)/g,(r,y,f)=>f?f.toUpperCase():y.toLowerCase()),qd=v=>{const r=Gy(v);return r.charAt(0).toUpperCase()+r.slice(1)},kd=(...v)=>v.filter((r,y,f)=>!!r&&r.trim()!==""&&f.indexOf(r)===y).join(" ").trim(),Yy=v=>{for(const r in v)if(r.startsWith("aria-")||r==="role"||r==="title")return!0};var Ly={xmlns:"http://www.w3.org/2000/svg",width:24,height:24,viewBox:"0 0 24 24",fill:"none",stroke:"currentColor",strokeWidth:2,strokeLinecap:"round",strokeLinejoin:"round"};const wy=ge.forwardRef(({color:v="currentColor",size:r=24,strokeWidth:y=2,absoluteStrokeWidth:f,className:O="",children:D,iconNode:_,...M},C)=>ge.createElement("svg",{ref:C,...Ly,width:r,height:r,stroke:v,strokeWidth:f?Number(y)*24/Number(r):y,className:kd("lucide",O),...!D&&!Yy(M)&&{"aria-hidden":"true"},...M},[..._.map(([E,Q])=>ge.createElement(E,Q)),...Array.isArray(D)?D:[D]]));const $d=(v,r)=>{const y=ge.forwardRef(({className:f,...O},D)=>ge.createElement(wy,{ref:D,iconNode:r,className:kd(`lucide-${qy(qd(v))}`,`lucide-${v}`,f),...O}));return y.displayName=qd(v),y};const Qy=[["path",{d:"M8 3H5a2 2 0 0 0-2 2v3",key:"1dcmit"}],["path",{d:"M21 8V5a2 2 0 0 0-2-2h-3",key:"1e4gt3"}],["path",{d:"M3 16v3a2 2 0 0 0 2 2h3",key:"wsl5sc"}],["path",{d:"M16 21h3a2 2 0 0 0 2-2v-3",key:"18trek"}]],Xy=$d("maximize",Qy);const Vy=[["path",{d:"M8 3v3a2 2 0 0 1-2 2H3",key:"hohbtr"}],["path",{d:"M21 8h-3a2 2 0 0 1-2-2V3",key:"5jw1f3"}],["path",{d:"M3 16h3a2 2 0 0 1 2 2v3",key:"198tvr"}],["path",{d:"M16 21v-3a2 2 0 0 1 2-2h3",key:"ph8mxp"}]],Zy=$d("minimize",Vy);function Ky({isFullscreen:v,onFullscreen:r}){return c.jsx("div",{className:"fixed bottom-6 right-6 z-40 flex gap-2",children:c.jsx("button",{onClick:r,title:"Fullscreen (F)",className:"p-2.5 rounded-lg bg-card-bg/90 backdrop-blur-sm border border-border-medium hover:bg-card-bg-alt transition-colors text-text-tertiary hover:text-primary",style:{boxShadow:"0px 4px 12px rgba(0, 0, 0, 0.4)"},children:v?c.jsx(Zy,{size:18}):c.jsx(Xy,{size:18})})})}function Jy(){return c.jsx("div",{className:"flex items-center justify-center py-16",children:c.jsxs("div",{className:"flex items-center gap-4 w-full max-w-2xl mx-auto px-8",children:[c.jsx("div",{className:"flex-1 h-px bg-border-medium"}),c.jsx("span",{className:"text-[10px] font-bold tracking-[0.15em] text-text-tertiary uppercase",children:"Appendix"}),c.jsx("div",{className:"flex-1 h-px bg-border-medium"})]})})}function ky({sections:v}){const{isFullscreen:r,toggleFullscreen:y}=Dy(),f=ge.useMemo(()=>v.map(C=>C.id),[v]),{activeSection:O,scrollToSection:D}=Ry(f),_=ge.useCallback(()=>{console.log("Download PPTX")},[]);_y({onFullscreen:y,onDownload:_});const M=v.findIndex(C=>C.isAppendix);return c.jsxs("div",{className:"max-w-5xl mx-auto",children:[c.jsx(Hy,{sections:v,activeSection:O,onNavigate:D}),v.map((C,E)=>c.jsxs("div",{children:[E===M&&c.jsx(Jy,{}),E>0&&E!==M&&c.jsx("div",{className:"mx-8 border-t border-border-light"}),c.jsx(Uy,{id:C.id,component:C.component,isSticky:!!C.stickyHeight})]},C.id)),c.jsx(Ky,{isFullscreen:r,onFullscreen:y,onDownload:_})]})}const o={cardBg:"#111827",cardBgAlt:"#1E293B",textPrimary:"#F1F5F9",textSecondary:"#94A3B8",textTertiary:"#64748B",borderLight:"#1E293B",borderMedium:"#334155",primary:"#319795",primaryLight:"rgba(49, 151, 149, 0.2)",success:"#22C55E",error:"#EF4444",rulesBlue:"#3B82F6",cosilicoCyan:"#06B6D4",peTeal:"#319795",accentPurple:"#7C3AED",accentOrange:"#EA580C",highlight:"#D97706",glowRules:"rgba(59, 130, 246, 0.15)",glowCosilico:"rgba(6, 182, 212, 0.15)",glowPE:"rgba(49, 151, 149, 0.15)",accentBlue:"#319795",accentTeal:"#2DD4BF",accentGreen:"#22C55E",lightGray:"#94A3B8",dimText:"#64748B"};function $y(v){return c.jsxs("div",{className:"flex flex-col items-center justify-center min-h-[80vh] px-8 md:px-16 text-center",children:[c.jsxs("div",{className:"scroll-reveal flex gap-4 mb-12 items-center",style:{transitionDelay:"0s"},children:[c.jsx("img",{src:"/assets/logos/rf-icon.svg",alt:"Rules Foundation",className:"w-6 h-6 rounded",style:{boxShadow:`0 0 12px ${o.glowRules}`}}),c.jsx("img",{src:"/assets/logos/cosilico-icon.svg",alt:"Cosilico",className:"w-6 h-6",style:{boxShadow:`0 0 12px ${o.glowCosilico}`}}),c.jsx("img",{src:"/assets/logos/pe-icon.svg",alt:"PolicyEngine",className:"w-6 h-6",style:{boxShadow:`0 0 12px ${o.glowPE}`}})]}),c.jsx("h1",{className:"scroll-reveal text-3xl md:text-5xl lg:text-6xl font-bold leading-tight tracking-tight max-w-4xl",style:{color:o.textPrimary,transitionDelay:"0.15s"},children:"What would it take to simulate the impact of every policy on every person?"}),c.jsx("p",{className:"scroll-reveal text-base md:text-lg max-w-2xl mt-8 leading-relaxed",style:{color:o.textSecondary,transitionDelay:"0.35s"},children:"The Human Genome Project cost $3B and generated $800B+ in economic value—not just a reference genome, but an entire ecosystem: Celera, Illumina, 23andMe, and an $800B biotech industry. We're building the intentional version for policy: three orgs designed from day one to encode, simulate, and analyze the rules governing American life."}),c.jsx("p",{className:"scroll-reveal text-sm md:text-base font-medium tracking-wide mt-10",style:{color:o.primary,transitionDelay:"0.55s"},children:"160,000+ pages of federal tax code · 50 state systems · 100+ benefit programs · 330M people affected"}),c.jsxs("p",{className:"scroll-reveal text-lg md:text-xl font-semibold mt-12 max-w-2xl",style:{color:o.textPrimary,transitionDelay:"0.75s"},children:["We had a hypothesis: encoding rules, running simulations, and telling the policy story each need"," ",c.jsx("span",{style:{color:o.highlight},children:"a dedicated organization."})," ","We spent 100 conversations finding out if we were right."]})]})}function Fy({color:v,width:r="w-16"}){return c.jsx("div",{className:`h-[2px] ${r} rounded-full`,style:{backgroundColor:v}})}function Me({tag:v,tagColor:r,title:y,isAppendix:f}){return c.jsxs("div",{className:"mb-5",children:[f&&c.jsx("p",{className:"text-[10px] font-semibold tracking-[0.15em] text-text-tertiary mb-1.5 uppercase",children:"Appendix"}),c.jsx("p",{className:"text-[11px] font-bold tracking-[0.12em] uppercase mb-2",style:{color:r},children:v}),c.jsx(Fy,{color:r}),y&&c.jsx("h2",{className:"text-2xl md:text-3xl font-bold text-text-primary mt-3 tracking-tight",children:y})]})}const Wy=[{name:"Max Ghenis",role:"Co-Founder & CEO",bio:["MIT M.S. Development Economics","Former Google","Founded UBI Center"],color:o.accentBlue,photo:"/assets/team/max-ghenis.png"},{name:"Pavel Makarchuk",role:"Chief of Staff",bio:["Operations & strategy lead","Led development of US state-level","tax-benefit model"],color:o.accentTeal,photo:"/assets/team/pavel-makarchuk.jpeg"},{name:"Daniel Feenberg",role:"Advisor",bio:["Princeton Ph.D. Economics","Former IT Director at NBER","Created TAXSIM"],color:o.accentPurple,photo:"/assets/team/daniel-feenberg.jpg"}],Iy=[{number:"75K+",label:"API calls in 2025",color:o.accentBlue},{number:"Complete",label:"Federal + 50 state income tax model",color:o.accentTeal},{number:"100+",label:"Benefit programs",color:o.accentGreen},{number:"50+",label:"OSS contributors",color:o.accentPurple}],Gd={line1:"10 Downing Street (policy analysis) · US Congress (distributional analysis)",line2:"Brookings · NBER · Atlanta Fed · CRFB · Niskanen Center · Yale Budget Lab · BPC"};function Py(v){return c.jsxs("div",{className:"px-8 md:px-16",children:[c.jsx(Me,{tag:"NSF POSE TEAM 4373",tagColor:o.primary,title:"Who we are"}),c.jsx("div",{className:"scroll-reveal flex items-center gap-6 mt-4 mb-2",style:{transitionDelay:"0.05s"},children:c.jsxs("div",{className:"flex items-baseline gap-2",children:[c.jsx("span",{className:"text-2xl font-bold",style:{color:o.highlight},children:"100+"}),c.jsx("span",{className:"text-sm",style:{color:o.textSecondary},children:"interviews conducted"})]})}),c.jsx("div",{className:"grid grid-cols-1 md:grid-cols-3 gap-6 mt-8",children:Wy.map((r,y)=>c.jsxs("div",{className:"scroll-reveal bg-card-bg rounded-lg border overflow-hidden card-hover",style:{borderColor:o.borderLight,boxShadow:"0px 1px 3px rgba(0, 0, 0, 0.3)",transitionDelay:`${y*.12}s`},children:[c.jsx("div",{className:"h-1",style:{backgroundColor:r.color}}),c.jsx("div",{className:"flex justify-center pt-6",children:c.jsx("img",{src:r.photo,alt:r.name,className:"w-24 h-24 rounded-full object-cover border-2",style:{borderColor:r.color}})}),c.jsxs("div",{className:"p-5 text-center",children:[c.jsx("h3",{className:"text-lg font-bold",style:{color:o.textPrimary},children:r.name}),c.jsx("p",{className:"text-sm font-medium mt-1",style:{color:r.color},children:r.role}),c.jsx("div",{className:"mt-3 space-y-0.5",children:r.bio.map(f=>c.jsx("p",{className:"text-xs",style:{color:o.textSecondary},children:f},f))})]})]},r.name))}),c.jsx("p",{className:"scroll-reveal text-base md:text-lg text-center mt-10 max-w-3xl mx-auto leading-relaxed",style:{color:o.textSecondary,transitionDelay:"0.4s"},children:"Together we've built the most widely used open-source tax-benefit microsimulation platform in the US."}),c.jsxs("div",{className:"scroll-reveal mt-8 text-center",style:{transitionDelay:"0.55s"},children:[c.jsx("p",{className:"text-[10px] font-semibold tracking-[0.15em] uppercase mb-3",style:{color:o.textTertiary},children:"Trusted by"}),c.jsx("p",{className:"text-sm font-medium",style:{color:o.textSecondary},children:Gd.line1}),c.jsx("p",{className:"text-xs mt-1.5",style:{color:o.textTertiary},children:Gd.line2})]})]})}function eg({number:v,label:r,color:y,delay:f=0}){return c.jsxs("div",{className:"scroll-reveal bg-card-bg rounded-lg border-l-4 p-6 flex flex-col items-center justify-center card-hover",style:{borderLeftColor:y,borderTopColor:"#1E293B",borderRightColor:"#1E293B",borderBottomColor:"#1E293B",boxShadow:"0px 1px 3px rgba(0, 0, 0, 0.3), 0px 1px 2px rgba(0, 0, 0, 0.2)",transitionDelay:`${f}s`},children:[c.jsx("span",{className:"text-4xl font-bold tracking-tight",style:{color:y},children:v}),c.jsx("span",{className:"text-sm text-text-secondary mt-2 font-medium",children:r})]})}function lg(v){return c.jsxs("div",{className:"px-8 md:px-16",children:[c.jsx(Me,{tag:"THESIS + IMPACT",tagColor:o.accentOrange,title:"What we do"}),c.jsx("div",{className:"grid grid-cols-2 md:grid-cols-4 gap-4 mt-8",children:Iy.map((r,y)=>c.jsx(eg,{number:r.number,label:r.label,color:r.color,delay:y*.1},r.label))}),c.jsxs("div",{className:"scroll-reveal mt-10 max-w-3xl mx-auto",style:{transitionDelay:"0.45s"},children:[c.jsxs("p",{className:"text-base md:text-lg leading-relaxed",style:{color:o.textSecondary},children:["We encode tax and benefit rules into open-source code, run microsimulations against representative household survey data, and produce the analysis that researchers, journalists, and policymakers use to understand reform impacts. Today the alternatives cost"," ",c.jsx("span",{className:"font-semibold",style:{color:o.highlight},children:"$10K+ per license"}),", take weeks to run, and can't be audited."]}),c.jsxs("p",{className:"text-base md:text-lg leading-relaxed mt-4 font-medium",style:{color:o.textPrimary},children:["Our technology already powers analysis at 10 Downing Street, US congressional offices, and leading think tanks."," ",c.jsx("span",{style:{color:o.primary},children:"Free and open."})]})]})]})}function zn({quote:v,name:r,title:y,color:f,delay:O=0}){return c.jsxs("div",{className:"scroll-reveal bg-card-bg rounded-lg border-l-4 p-5 card-hover",style:{borderLeftColor:f,borderTopColor:"#1E293B",borderRightColor:"#1E293B",borderBottomColor:"#1E293B",boxShadow:"0px 1px 3px rgba(0, 0, 0, 0.3), 0px 1px 2px rgba(0, 0, 0, 0.2)",transitionDelay:`${O}s`},children:[c.jsx("span",{className:"text-2xl font-bold leading-none",style:{color:f},children:"“"}),c.jsx("p",{className:"text-sm text-text-secondary mt-1 leading-relaxed italic",children:v}),c.jsxs("p",{className:"text-sm font-semibold mt-3",style:{color:f},children:["—"," ",r]}),c.jsx("p",{className:"text-xs text-text-tertiary",children:y})]})}const Es=[{week:1,date:"Jan 23",cumulative:8,quote:"Speed + open source + prototyping is our edge, but encoding is fast while review/debugging is the bottleneck.",quoteSource:"Nikhil Woodruff, CTO",insight:"We brought a hypothesis to POSE: PolicyEngine should become an ecosystem of specialized organizations. We’d already pitched a three-org vision to investors that same week. Now we had to pressure-test it.",ecosystemPhase:"Center node (PE unified) + PE Team light up"},{week:2,date:"Jan 30",cumulative:28,quote:"Fast, open tools are especially valuable for quick turnaround vs. slow official scores.",quoteSource:"Andrew Lautz, BPC",insight:"Think tanks and researchers confirmed demand. The week before, we’d published our 10 Downing Street work—PolicyEngine was already in government.",ecosystemPhase:"Ring 1 nodes light up (researchers, think tanks, gov economists)"},{week:3,date:"Feb 6",cumulative:44,quote:"Most leverage is upstream: getting legislative drafters to author executable rules early.",quoteSource:"Jason Morris, Thomson Reuters",insight:"Government standards bodies and AI + econ researchers kept surfacing. Each needed something different from us.",ecosystemPhase:"Ring 2 nodes appear (AI + econ researchers, gov standards, funders)"},{week:4,date:"Feb 13",cumulative:62,quote:"Institutions like the Fed face strong IT/security barriers to external APIs.",quoteSource:"Jacob Walker, Atlanta Fed",insight:"Every conversation reinforced the pattern: different audiences need different governance, funding models, and technical architecture.",ecosystemPhase:"All Ring 1+2 nodes visible, tangled connections"},{week:5,date:"Feb 20",cumulative:75,quote:"You want this fresh start with clean governance from day one.",quoteSource:"Foundation governance advisor",insight:"Our hypothesis was validated. One organization genuinely cannot serve all these segments well.",ecosystemPhase:"The hypothesis confirmed across the map"},{week:6,date:"Feb 27",cumulative:87,quote:"Data and rules complexity create big gaps where better microsim tools are still missing.",quoteSource:"Jack Landry, Jane Family Institute",insight:"The ecosystem vision was resonating beyond our interviews. Funders and foundations were engaging.",ecosystemPhase:"Transition: preparing for the split"},{week:7,date:"Mar 6",cumulative:100,quote:"Programs and tax rules in silos create severe unintended consequences.",quoteSource:"Ray Packer, Georgia Center for Opportunity",insight:"The Ballmer Group engaged on a major Rules as Code investment. 100 interviews validated three organizations.",ecosystemPhase:"Full ecosystem revealed"}];function tg(v){const r=Es.slice(0,3);return c.jsxs("div",{className:"px-8 md:px-16",children:[c.jsx(Me,{tag:"THE JOURNEY",tagColor:o.primary,title:"100 conversations"}),c.jsx("div",{className:"mt-8 space-y-10",children:r.map((y,f)=>c.jsxs("div",{className:"scroll-reveal-left grid grid-cols-1 md:grid-cols-[160px_1fr] gap-6 items-start",style:{transitionDelay:`${f*.15}s`},children:[c.jsxs("div",{className:"flex md:flex-col items-center md:items-end gap-3 md:gap-1 md:text-right",children:[c.jsxs("div",{className:"flex items-center gap-2 md:flex-row-reverse",children:[c.jsx("div",{className:"w-3 h-3 rounded-full shrink-0",style:{backgroundColor:o.primary,boxShadow:`0 0 8px ${o.glowPE}`}}),c.jsxs("span",{className:"text-xs font-semibold tracking-wider uppercase",style:{color:o.textTertiary},children:["Week ",y.week]})]}),c.jsx("span",{className:"text-2xl font-bold",style:{color:o.primary},children:y.cumulative}),c.jsx("span",{className:"text-[10px] uppercase tracking-wider",style:{color:o.textTertiary},children:"interviews"})]}),c.jsxs("div",{children:[c.jsx("p",{className:"text-sm font-medium mb-3",style:{color:o.textPrimary},children:y.insight}),c.jsx(zn,{quote:y.quote,name:y.quoteSource.split(",")[0],title:y.quoteSource.split(",").slice(1).join(",").trim(),color:o.primary}),y.week===3&&c.jsx("p",{className:"text-sm mt-4 italic leading-relaxed",style:{color:o.textSecondary},children:"Government standards bodies and AI + econ researchers kept surfacing—adjacent ecosystems with parallel needs, just as we had hypothesized."})]})]},y.week))})]})}const ag=[{status:"✓ CONFIRMED",statusType:"confirmed",title:`Researchers adopt OSS +if accessible`,learning:"But they also need validation against official sources before they'll cite it.",quote:"“Fast, open tools are especially valuable for quick turnaround vs. slow official scores.”",source:"— Andrew Lautz, BPC",color:o.accentGreen},{status:"✓ CONFIRMED",statusType:"confirmed",title:`Funders value transparency +enough to fund OSS`,learning:"One grant funds infrastructure used by multiple orgs — leverage argument works.",quote:"“Think tanks want auditable methodology they can cite in publications.”",source:"— Think tank interviewees",color:o.accentGreen},{status:"≡ PARTIALLY",statusType:"partial",title:`Developers contribute for +policy impact alone`,learning:"They also need portfolio value, learning opportunities, and community.",quote:"“AI is transforming developer onboarding, enabling faster ramp-up.”",source:"— Anthony Volk, PolicyEngine",color:o.accentOrange},{status:"✓ VALIDATED",statusType:"rejected",title:`One organization cannot +serve all segments`,learning:"Our pre-POSE hypothesis confirmed: infrastructure, standards, and research need different governance and funding.",quote:"“You want this fresh start with clean governance from day one.”",source:"— Foundation governance advisor",color:o.highlight}];function ng(v){const r=Es[3];return c.jsxs("div",{className:"px-8 md:px-16",children:[c.jsx(Me,{tag:"VALIDATION",tagColor:o.error,title:"Testing the hypothesis"}),c.jsxs("div",{className:"mt-8",children:[c.jsxs("div",{className:"scroll-reveal-left flex items-center gap-3 mb-4",children:[c.jsx("div",{className:"w-3 h-3 rounded-full shrink-0",style:{backgroundColor:o.error,boxShadow:"0 0 8px rgba(239, 68, 68, 0.3)"}}),c.jsx("span",{className:"text-xs font-semibold tracking-wider uppercase",style:{color:o.textTertiary},children:"Week 4"}),c.jsx("span",{className:"text-xl font-bold",style:{color:o.error},children:r.cumulative}),c.jsx("span",{className:"text-[10px] uppercase tracking-wider",style:{color:o.textTertiary},children:"interviews"})]}),c.jsx("p",{className:"scroll-reveal text-sm font-medium mb-4",style:{color:o.textPrimary,transitionDelay:"0.1s"},children:r.insight}),c.jsxs("div",{className:"grid grid-cols-1 md:grid-cols-2 gap-4",children:[c.jsx(zn,{quote:"Institutions like the Fed face strong IT/security barriers to external APIs — installable, low-dependency tools fit much better than cloud services.",name:"Jacob Walker",title:"Sr. Research Analyst, Atlanta Fed",color:o.rulesBlue,delay:.2}),c.jsx(zn,{quote:"PE-style tools are ready for deployment; the blocker is institutional slowness, not technology.",name:"Martin Perron",title:"Rules as Code, Canadian Digital Services",color:o.cosilicoCyan,delay:.3})]}),c.jsx("p",{className:"scroll-reveal text-sm italic mt-4 leading-relaxed max-w-2xl",style:{color:o.textSecondary,transitionDelay:"0.4s"},children:"Government agencies needed one thing. AI + econ researchers needed another. Funders wanted a third. Every interview confirmed the pattern we hypothesized."})]})]})}function ig(v){const r=Es[5];return c.jsxs("div",{className:"px-8 md:px-16",children:[c.jsx(Me,{tag:"VALIDATION",tagColor:o.highlight,title:"Hypothesis validated"}),c.jsxs("div",{className:"mt-8",children:[c.jsxs("div",{className:"scroll-reveal-left flex items-center gap-3 mb-4",children:[c.jsx("div",{className:"w-3 h-3 rounded-full shrink-0",style:{backgroundColor:o.highlight,boxShadow:"0 0 8px rgba(217, 119, 6, 0.3)"}}),c.jsx("span",{className:"text-xs font-semibold tracking-wider uppercase",style:{color:o.textTertiary},children:"Week 6"}),c.jsx("span",{className:"text-xl font-bold",style:{color:o.highlight},children:r.cumulative}),c.jsx("span",{className:"text-[10px] uppercase tracking-wider",style:{color:o.textTertiary},children:"interviews"})]}),c.jsx("p",{className:"scroll-reveal text-sm font-medium mb-5",style:{color:o.textPrimary,transitionDelay:"0.1s"},children:r.insight}),c.jsx("div",{className:"grid grid-cols-1 md:grid-cols-2 gap-4",children:ag.map((y,f)=>{const O=y.statusType==="rejected";return c.jsxs("div",{className:`scroll-reveal bg-card-bg rounded-lg border p-5 ${O?"glow-highlight":""}`,style:{borderColor:O?o.highlight:o.borderLight,borderWidth:O?"2px":"1px",boxShadow:"0px 1px 3px rgba(0, 0, 0, 0.3)",transitionDelay:`${.2+f*.1}s`},children:[c.jsx("span",{className:"inline-block text-[10px] font-bold tracking-wider uppercase px-2 py-0.5 rounded",style:{color:y.color,backgroundColor:y.statusType==="confirmed"?"rgba(34, 197, 94, 0.12)":y.statusType==="partial"?"rgba(234, 88, 12, 0.12)":"rgba(217, 119, 6, 0.15)"},children:y.status}),c.jsx("p",{className:"text-sm font-semibold mt-2 whitespace-pre-line",style:{color:o.textPrimary},children:y.title}),c.jsx("p",{className:"text-xs mt-2 leading-relaxed",style:{color:o.textSecondary},children:y.learning})]},y.title)})}),c.jsx("div",{className:"mt-6",children:c.jsx(zn,{quote:r.quote,name:r.quoteSource.split(",")[0],title:r.quoteSource.split(",").slice(1).join(",").trim()||"",color:o.highlight,delay:.6})})]})]})}const Fd=[0,200,330,440,540],ki={x:900,y:470},Ki=[{id:"pe-unified",label:"PolicyEngine",ring:0,angle:270,color:o.peTeal,org:"all",description:"Unified organization",visibleAtStep:1},{id:"rules",label:`Rules +Foundation`,ring:0,angle:150,color:o.rulesBlue,org:"rules",description:"501(c)(3) - Encode the law",visibleAtStep:2},{id:"cosilico",label:"Cosilico",ring:0,angle:270,color:o.cosilicoCyan,org:"cosilico",description:"PBC - Run the infrastructure",visibleAtStep:2},{id:"pe",label:"PolicyEngine",ring:0,angle:30,color:o.peTeal,org:"pe",description:"501(c)(3) - Tell the story",visibleAtStep:2},{id:"researchers",label:`Academic +Researchers`,ring:1,angle:355,color:o.accentBlue,org:"pe",count:18,description:"Empirical policy questions",visibleAtStep:1},{id:"think-tanks",label:`Think Tank +Analysts`,ring:1,angle:50,color:o.accentTeal,org:"pe",count:12,description:"Policy reports & analysis",visibleAtStep:1},{id:"gov-econ",label:`Government +Economists`,ring:1,angle:105,color:o.accentGreen,org:"rules",count:7,description:"Validate estimates",visibleAtStep:1},{id:"journalists",label:`Data +Journalists`,ring:1,angle:155,color:o.lightGray,org:"pe",count:5,description:"Fact-check & interactives",visibleAtStep:1},{id:"advocates",label:`Policy +Advocates`,ring:1,angle:205,color:o.accentPurple,org:"pe",count:6,description:"Shape policy narrative",visibleAtStep:1},{id:"contributors",label:`OSS +Contributors`,ring:1,angle:255,color:o.accentGreen,org:"rules",count:4,description:"Code & fix bugs",visibleAtStep:1},{id:"pe-team",label:"PE Team",ring:1,angle:310,color:o.peTeal,org:"all",count:10,description:"Build core models",visibleAtStep:1},{id:"ai-labs",label:`AI + Econ +Researchers`,ring:2,angle:20,color:o.cosilicoCyan,org:"cosilico",count:10,description:"AI + policy research",visibleAtStep:1},{id:"gov-standards",label:`Gov Standards +Bodies`,ring:2,angle:92,color:o.rulesBlue,org:"rules",count:7,description:"Interoperability",visibleAtStep:1},{id:"funders",label:"Funders",ring:2,angle:164,color:o.accentOrange,org:"all",count:10,description:"Fund development",visibleAtStep:1},{id:"non-users",label:"Non-Users",ring:2,angle:236,color:o.highlight,org:"all",count:8,description:"Understand barriers",visibleAtStep:1},{id:"competitors",label:"Competitors",ring:2,angle:308,color:o.dimText,org:"all",count:3,description:"Ecosystem mapping",visibleAtStep:1},{id:"tax-calc",label:`Tax +Calculation`,ring:3,angle:5,color:o.cosilicoCyan,org:"cosilico",description:"API endpoints",visibleAtStep:3},{id:"benefit-sim",label:`Benefit +Simulation`,ring:3,angle:65,color:o.cosilicoCyan,org:"cosilico",description:"Household analysis",visibleAtStep:3},{id:"law-encoding",label:`Law +Encoding`,ring:3,angle:125,color:o.rulesBlue,org:"rules",description:"Open statute code",visibleAtStep:3},{id:"research-tools",label:`Research +Tools`,ring:3,angle:185,color:o.peTeal,org:"pe",description:"Analysis platform",visibleAtStep:3},{id:"ai-training",label:`AI Training +Data`,ring:3,angle:245,color:o.cosilicoCyan,org:"cosilico",description:"RLVR benchmarks",visibleAtStep:3},{id:"data-enrichment",label:`Data +Enrichment`,ring:3,angle:305,color:o.cosilicoCyan,org:"cosilico",description:"$0.10-1.00/record",visibleAtStep:3},{id:"state-rev",label:`State Revenue +Depts`,ring:4,angle:35,color:o.cosilicoCyan,org:"cosilico",description:"$1B+ TAM",visibleAtStep:3},{id:"tax-software",label:`Tax Software +Vendors`,ring:4,angle:95,color:o.cosilicoCyan,org:"cosilico",description:"$90B+ TAM",visibleAtStep:3},{id:"fin-planners",label:`Financial +Planners`,ring:4,angle:155,color:o.cosilicoCyan,org:"cosilico",description:"$5B+ TAM",visibleAtStep:3},{id:"enterprise",label:`Enterprise +Clients`,ring:4,angle:215,color:o.cosilicoCyan,org:"cosilico",description:"$100K-1M+/year",visibleAtStep:3},{id:"nsf-grants",label:`NSF & +Grants`,ring:4,angle:275,color:o.accentOrange,org:"all",description:"Government funding",visibleAtStep:3},{id:"foundation-grants",label:`Foundation +Grants`,ring:4,angle:335,color:o.accentOrange,org:"pe",description:"Arnold, Pritzker, etc.",visibleAtStep:3}],ug=[{from:"pe-unified",to:"researchers",label:"serves",color:o.accentBlue,type:"solid",visibleAtStep:1},{from:"pe-unified",to:"think-tanks",label:"serves",color:o.accentTeal,type:"solid",visibleAtStep:1},{from:"pe-unified",to:"gov-econ",label:"serves",color:o.accentGreen,type:"solid",visibleAtStep:1},{from:"pe-unified",to:"journalists",color:o.lightGray,type:"solid",visibleAtStep:1},{from:"pe-unified",to:"advocates",color:o.accentPurple,type:"solid",visibleAtStep:1},{from:"pe-unified",to:"ai-labs",label:"partners",color:o.cosilicoCyan,type:"dashed",visibleAtStep:1},{from:"funders",to:"pe-unified",label:"funds",color:o.accentOrange,type:"solid",visibleAtStep:1},{from:"contributors",to:"pe-unified",label:"contributes",color:o.accentGreen,type:"solid",visibleAtStep:1},{from:"rules",to:"gov-standards",label:"standards",color:o.rulesBlue,type:"solid",visibleAtStep:3},{from:"rules",to:"contributors",label:"open code",color:o.rulesBlue,type:"solid",visibleAtStep:3},{from:"rules",to:"gov-econ",label:"validates",color:o.rulesBlue,type:"solid",visibleAtStep:3},{from:"rules",to:"law-encoding",color:o.rulesBlue,type:"solid",visibleAtStep:3},{from:"cosilico",to:"ai-labs",label:"API",color:o.cosilicoCyan,type:"solid",visibleAtStep:3},{from:"cosilico",to:"tax-calc",color:o.cosilicoCyan,type:"solid",visibleAtStep:3},{from:"cosilico",to:"benefit-sim",color:o.cosilicoCyan,type:"solid",visibleAtStep:3},{from:"cosilico",to:"ai-training",color:o.cosilicoCyan,type:"solid",visibleAtStep:3},{from:"cosilico",to:"data-enrichment",color:o.cosilicoCyan,type:"solid",visibleAtStep:3},{from:"cosilico",to:"state-rev",color:o.cosilicoCyan,type:"dashed",visibleAtStep:3},{from:"cosilico",to:"tax-software",color:o.cosilicoCyan,type:"dashed",visibleAtStep:3},{from:"cosilico",to:"fin-planners",color:o.cosilicoCyan,type:"dashed",visibleAtStep:3},{from:"cosilico",to:"enterprise",color:o.cosilicoCyan,type:"dashed",visibleAtStep:3},{from:"pe",to:"researchers",label:"research",color:o.peTeal,type:"solid",visibleAtStep:3},{from:"pe",to:"think-tanks",label:"analysis",color:o.peTeal,type:"solid",visibleAtStep:3},{from:"pe",to:"journalists",color:o.peTeal,type:"solid",visibleAtStep:3},{from:"pe",to:"advocates",color:o.peTeal,type:"solid",visibleAtStep:3},{from:"pe",to:"research-tools",color:o.peTeal,type:"solid",visibleAtStep:3},{from:"pe",to:"foundation-grants",color:o.accentOrange,type:"dashed",visibleAtStep:3},{from:"nsf-grants",to:"rules",color:o.accentOrange,type:"dashed",visibleAtStep:3},{from:"nsf-grants",to:"pe",color:o.accentOrange,type:"dashed",visibleAtStep:3},{from:"rules",to:"cosilico",label:`code feeds +infra`,color:o.highlight,type:"solid",visibleAtStep:3},{from:"cosilico",to:"pe",label:`API powers +research`,color:o.highlight,type:"solid",visibleAtStep:3}],Yd=[{step:1,title:"Unified Ecosystem",description:"PolicyEngine serves all user segments as one organization"},{step:2,title:"The Split",description:"Three specialized organizations with distinct missions"},{step:3,title:"Full Ecosystem",description:"Three orgs with capabilities and revenue streams"}],Ld={rules:"#1E293B",cosilico:"#1E293B",pe:"#1E293B",all:"#1E293B"},wd={rules:"#3B82F6",cosilico:"#06B6D4",pe:"#319795",all:"#64748B"},cg=new Set(["rules","cosilico","pe","pe-unified"]);function sg({node:v,x:r,y,visible:f,highlighted:O}){const D=v.label.split(` +`),_=cg.has(v.id),M=_?160:150,C=_?D.length>1?72:52:D.length>1?64:46,E=_?v.color:Ld[v.org]||Ld.all,Q=_?v.color:wd[v.org]||wd.all,G=_?"#FFFFFF":"#F1F5F9";return c.jsxs("g",{style:{opacity:f?O?1:.4:0,transform:f?"scale(1)":"scale(0.5)",transformOrigin:`${r}px ${y}px`,transition:"opacity 0.4s ease, transform 0.4s ease",pointerEvents:f?"auto":"none"},children:[c.jsx("rect",{x:r-M/2+2,y:y-C/2+2,width:M,height:C,rx:_?12:8,fill:"rgba(0, 0, 0, 0.3)"}),c.jsx("rect",{x:r-M/2,y:y-C/2,width:M,height:C,rx:_?12:8,fill:E,stroke:Q,strokeWidth:_?2.5:O?2:1.5}),!_&&c.jsx("rect",{x:r-M/2,y:y-C/2+4,width:4,height:C-8,rx:2,fill:Q}),D.map((ee,ze)=>c.jsx("text",{x:r+(_?0:2),y:y+(ze-(D.length-1)/2)*18+(_?0:2),textAnchor:"middle",dominantBaseline:"central",fill:G,fontSize:_?17:14,fontFamily:"Inter, sans-serif",fontWeight:_?700:600,children:ee},ze)),v.count&&c.jsxs("g",{children:[c.jsx("circle",{cx:r+M/2-4,cy:y-C/2+4,r:14,fill:_?"#FFFFFF":v.color}),c.jsx("text",{x:r+M/2-4,y:y-C/2+4,textAnchor:"middle",dominantBaseline:"central",fill:_?v.color:"#FFFFFF",fontSize:12,fontWeight:700,children:v.count})]})]})}function og({edge:v,fromPos:r,toPos:y,visible:f}){const O=(r.x+y.x)/2,D=(r.y+y.y)/2,_=y.x-r.x,M=y.y-r.y,C=25,E=Math.sqrt(_*_+M*M+1),Q=O-M*C/E,G=D+_*C/E,ee=`M ${r.x} ${r.y} Q ${Q} ${G} ${y.x} ${y.y}`;return c.jsxs("g",{style:{opacity:f?.45:0,transition:"opacity 0.4s ease",pointerEvents:f?"auto":"none"},children:[c.jsx("path",{d:ee,fill:"none",stroke:v.color,strokeWidth:2,strokeDasharray:v.type==="dashed"?"8 5":void 0,markerEnd:`url(#arrow-${v.color.replace("#","")})`}),v.label&&c.jsx("text",{x:Q,y:G-8,textAnchor:"middle",fill:v.color,fontSize:12,fontFamily:"Inter, sans-serif",fontWeight:600,opacity:.9,children:v.label.split(` +`).map((ze,De)=>c.jsx("tspan",{x:Q,dy:De===0?0:13,children:ze},De))})]})}function rg({cx:v,cy:r,radius:y,label:f,visible:O,delay:D=0}){return y===0?null:c.jsxs("g",{style:{opacity:O?1:0,transform:O?"scale(1)":"scale(0.8)",transformOrigin:`${v}px ${r}px`,transition:`opacity 0.5s ease ${D}s, transform 0.5s ease ${D}s`},children:[c.jsx("circle",{cx:v,cy:r,r:y,fill:"none",stroke:"#334155",strokeWidth:1,strokeDasharray:"6 4",opacity:.5}),c.jsx("text",{x:v+y+8,y:r-y+18,fill:"#64748B",fontSize:14,fontFamily:"Inter, sans-serif",fontWeight:500,children:f})]})}const Wd=new Set(["rules","cosilico","pe"]),fg=130,dg=["Core","Direct Users","Channel Partners","Capabilities","Revenue"];function mg(v,r,y){const f=y*Math.PI/180,O=r===0&&Wd.has(v)?fg:Fd[r]||0;return{x:ki.x+O*Math.cos(f),y:ki.y+O*Math.sin(f)}}const hg=[...new Set([o.accentBlue,o.accentTeal,o.accentGreen,o.accentPurple,o.accentOrange,o.rulesBlue,o.cosilicoCyan,o.peTeal,o.highlight,o.lightGray,o.dimText])];function yg({step:v,filterOrg:r}){const y=ge.useMemo(()=>{const M={};return Ki.forEach(C=>{M[C.id]=mg(C.id,C.ring,C.angle)}),M},[]),f=M=>M.id==="pe-unified"?v===1:Wd.has(M.id)?v>=2:!(v===2||M.visibleAtStep>v||r&&r!=="all"&&M.org!==r&&M.org!=="all"),O=M=>!r||r==="all"?!0:M.org===r||M.org==="all",D=M=>{if(M.visibleAtStep===1)return v===1;if(vee.id===M.from),E=Ki.find(ee=>ee.id===M.to),Q=!!C&&(C.org===r||C.org==="all"),G=!!E&&(E.org===r||E.org==="all");return Q||G}return!0},_=v===1?[1,2]:v===3?[1,2,3,4]:[];return c.jsxs("svg",{viewBox:"0 0 1800 900",className:"w-full h-full",children:[c.jsx("defs",{children:hg.map(M=>c.jsx("marker",{id:`arrow-${M.replace("#","")}`,viewBox:"0 0 10 10",refX:9,refY:5,markerWidth:8,markerHeight:8,orient:"auto",children:c.jsx("path",{d:"M 0 0 L 10 5 L 0 10 z",fill:M})},M))}),[1,2,3,4].map((M,C)=>c.jsx(rg,{cx:ki.x,cy:ki.y,radius:Fd[M],label:dg[M],visible:_.includes(M),delay:C*.1},M)),ug.map((M,C)=>{const E=y[M.from],Q=y[M.to];return!E||!Q?null:c.jsx(og,{edge:M,fromPos:E,toPos:Q,visible:D(M)},`${M.from}-${M.to}-${C}`)}),Ki.map(M=>{const C=y[M.id];return c.jsx(sg,{node:M,x:C.x,y:C.y,visible:f(M),highlighted:O(M)},M.id)})]})}function gg(v){const r=ge.useRef(null),[y,f]=ge.useState(1);return ge.useEffect(()=>{const O=r.current;if(!O)return;const D=()=>{const _=O.getBoundingClientRect(),M=O.offsetHeight,C=window.innerHeight,E=-_.top,Q=M-C;if(Q<=0){f(1);return}const G=Math.max(0,Math.min(1,E/Q)),ee=Math.min(v,Math.floor(G*v)+1);f(ee)};return window.addEventListener("scroll",D,{passive:!0}),D(),()=>window.removeEventListener("scroll",D)},[v]),{containerRef:r,currentStep:y}}const vg=[{label:"Rules Foundation",org:"rules",color:o.rulesBlue,bg:"rgba(59, 130, 246, 0.1)"},{label:"Cosilico",org:"cosilico",color:o.cosilicoCyan,bg:"rgba(6, 182, 212, 0.1)"},{label:"PolicyEngine",org:"pe",color:o.peTeal,bg:"rgba(49, 151, 149, 0.1)"},{label:"Shared",org:"all",color:"#64748B",bg:"rgba(100, 116, 139, 0.1)"}],pg=["This was us going in. One organization serving researchers, government agencies, AI + econ researchers, and funders. We hypothesized this couldn't scale.","100 interviews confirmed it: each audience needs fundamentally different governance, different funding models, different technical architecture.","Three organizations. Each specialized. Each stronger for the separation. Connected by shared open-source code flowing between them."];function xg(v){const{containerRef:r,currentStep:y}=gg(3),f=Yd[y-1],[O,D]=ge.useState("all");return c.jsx("div",{ref:r,style:{height:"300vh"},children:c.jsxs("div",{className:"sticky top-0 h-screen flex flex-col px-8 md:px-16 py-4 bg-page-bg",children:[c.jsx(Me,{tag:"THE ECOSYSTEM",tagColor:o.highlight,title:"One became three"}),c.jsxs("div",{className:"flex items-center gap-4 mt-2",children:[c.jsx("div",{className:"flex gap-1 flex-1",children:Yd.map(_=>c.jsxs("div",{className:`flex-1 py-1.5 px-2 rounded-md text-xs font-medium transition-all border ${y===_.step?"bg-primary text-white border-primary":"bg-card-bg text-text-secondary border-border-medium"}`,children:[_.step,". ",_.title]},_.step))}),c.jsx("div",{className:"flex gap-2 shrink-0",children:vg.map(_=>{const M=O===_.org;return c.jsxs("button",{onClick:()=>D(M?"all":_.org),className:"flex items-center gap-1.5 px-2 py-1 rounded-md transition-all cursor-pointer",style:{backgroundColor:M?_.bg:"transparent",border:`1.5px solid ${M?_.color:"transparent"}`,opacity:O==="all"||M?1:.4},children:[c.jsx("div",{className:"w-3.5 h-3.5 rounded",style:{backgroundColor:_.bg,border:`2px solid ${_.color}`}}),c.jsx("span",{className:"text-[11px] font-medium",style:{color:M?_.color:"#94A3B8"},children:_.label})]},_.label)})})]}),c.jsx("p",{className:"text-sm md:text-base text-text-secondary mt-3 text-center italic leading-relaxed max-w-3xl mx-auto transition-opacity duration-500",children:pg[y-1]},`narrative-${y}`),c.jsx("p",{className:"text-xs text-text-tertiary mt-1 text-center transition-opacity duration-300",children:f.description},`desc-${y}`),c.jsx("div",{className:"flex-1 min-h-0 mt-2",children:c.jsx(yg,{step:y,filterOrg:O})})]})})}const Oa=[{name:"Rules Foundation",color:o.rulesBlue,budget:"~$300K/year",items:["Government grants","Foundation grants","AI lab in-kind (compute)","Downstream contributions"]},{name:"Cosilico",color:o.cosilicoCyan,budget:"$500K → $75M ARR (5yr)",items:["Open source (free, Apache 2.0)","API: $0.001–0.01/call","Data enrichment: $0.10–1.00/record","Enterprise: $100K–1M+/year"]},{name:"PolicyEngine",color:o.peTeal,budget:"~$500K/year",items:["Foundation grants","Government grants (NSF)","Earned revenue"]}];function Wl({children:v,borderColor:r,className:y="",delay:f=0}){return c.jsx("div",{className:`scroll-reveal bg-card-bg rounded-lg border card-hover ${y}`,style:{borderColor:r||"#1E293B",boxShadow:"0px 1px 3px rgba(0, 0, 0, 0.3), 0px 1px 2px rgba(0, 0, 0, 0.2)",transitionDelay:`${f}s`},children:v})}const bg=[{name:"Rules Foundation",tagline:"Encoding the world’s rules",entity:"501(c)(3)",analogy:"The HGP for rules · Open reference layer",color:o.rulesBlue,glow:o.glowRules,logo:"/assets/logos/rf-icon.svg",budget:Oa[0].budget,revenueItems:Oa[0].items,quote:"Programs and tax rules in silos create severe unintended consequences — cliffs, penalties. Modeling these is influencing legislators.",quoteName:"Ray Packer",quoteTitle:"Georgia Center for Opportunity"},{name:"Cosilico",tagline:"Society in silico",entity:"Public Benefit Corp",analogy:"Society in silico · Like Schrödinger for policy",color:o.cosilicoCyan,glow:o.glowCosilico,logo:"/assets/logos/cosilico-icon.svg",budget:Oa[1].budget,revenueItems:Oa[1].items,quote:"Data and rules complexity create big gaps where better microsim tools and infrastructure are still missing.",quoteName:"Jack Landry",quoteTitle:"Jane Family Institute"},{name:"PolicyEngine",tagline:"Policy meets evidence",entity:"501(c)(3) / UK Charity",analogy:"Like IHME for economic policy · Open source",color:o.peTeal,glow:o.glowPE,logo:"/assets/logos/pe-icon.svg",budget:Oa[2].budget,revenueItems:Oa[2].items,quote:"Think tanks want auditable methodology they can cite in publications.",quoteName:"Think tank interviewees",quoteTitle:""}];function Sg(v){return c.jsxs("div",{className:"px-8 md:px-16",children:[c.jsx(Me,{tag:"THE THREE ORGS",tagColor:o.peTeal,title:"Meet the three"}),c.jsx("div",{className:"grid grid-cols-1 md:grid-cols-3 gap-6 mt-4",children:bg.map((r,y)=>c.jsxs(Wl,{delay:y*.15,children:[c.jsx("div",{className:"h-1 rounded-t-lg",style:{backgroundColor:r.color}}),c.jsxs("div",{className:"p-5",children:[c.jsxs("div",{className:"flex items-center gap-2 mb-1",children:[c.jsx("img",{src:r.logo,alt:r.name,className:"w-5 h-5 rounded-sm"}),c.jsx("h3",{className:"text-lg font-bold text-text-primary",children:r.name})]}),c.jsx("p",{className:"text-sm font-semibold italic",style:{color:r.color},children:r.tagline}),c.jsxs("div",{className:"mt-3 flex flex-col gap-1",children:[c.jsx("span",{className:"inline-block text-[10px] font-bold tracking-wider uppercase px-2 py-0.5 rounded-full w-fit",style:{color:r.color,backgroundColor:`${r.color}15`,border:`1px solid ${r.color}30`},children:r.entity}),c.jsx("p",{className:"text-xs text-text-tertiary italic",children:r.analogy})]}),c.jsxs("div",{className:"mt-4",children:[c.jsx("p",{className:"text-[10px] font-bold tracking-wider uppercase text-text-tertiary mb-1",children:"Revenue"}),c.jsx("ul",{className:"mt-1.5 space-y-0.5",children:r.revenueItems.map(f=>c.jsxs("li",{className:"text-xs text-text-secondary flex items-start gap-1.5",children:[c.jsx("span",{className:"mt-1.5 w-1 h-1 rounded-full shrink-0",style:{backgroundColor:r.color}}),f]},f))})]}),c.jsxs("div",{className:"mt-4 pt-3",style:{borderTop:`1px solid ${r.color}20`},children:[c.jsx("span",{className:"text-lg font-bold leading-none",style:{color:r.color},children:"“"}),c.jsx("p",{className:"text-xs text-text-secondary italic leading-relaxed",children:r.quote}),c.jsxs("p",{className:"text-xs font-semibold mt-2",style:{color:r.color},children:["—"," ",r.quoteName]}),r.quoteTitle&&c.jsx("p",{className:"text-[10px] text-text-tertiary",children:r.quoteTitle})]})]})]},r.name))})]})}const Qd={title:"BDFL model",items:["Founder makes all strategic decisions","Single 501(c)(3) owns everything","AGPL-3.0 license, informal governance"]},Xd={title:"Three orgs, tailored governance",items:[{text:"Rules Foundation: multi-stakeholder 501(c)(3)",color:o.rulesBlue},{text:"Cosilico: Public Benefit Corp, board mandate",color:o.cosilicoCyan},{text:"PolicyEngine: 501(c)(3) + advisory board",color:o.peTeal}]},Ji={label:"WHAT INTERVIEWS TOLD US",quote:"“Fresh entity strongly recommended — you want this fresh start with clean governance from day one.”",source:"— Foundation governance advisor",detail:"Jason Morris, Martin Perron, and foundation advisors all pointed to separation of concerns."},Ag=[{name:"Rules Foundation",color:o.rulesBlue,details:["Multi-stakeholder 501(c)(3)","Technical steering committee + encoding standards board","Partisan neutrality · Mandatory statute citations · Multi-reviewer validation","Historical versioning of all encodings"]},{name:"Cosilico",color:o.cosilicoCyan,details:["Public Benefit Corp (mission-locked by charter)","Board with public benefit mandate","Open-source core (Apache 2.0) · Enterprise services layer","Certified partner program (Salesforce model)"]},{name:"PolicyEngine",color:o.peTeal,details:["501(c)(3) / UK Charity (AGPL licensed)","Founder-led → Technical steering committee + Advisory board","Contributor guidelines · Formal research partnership agreements","Open roadmap with community input"]}];function Eg(v){return c.jsxs("div",{className:"px-8 md:px-16",children:[c.jsx(Me,{tag:"GOVERNANCE",tagColor:o.accentPurple,title:"How we'll govern it"}),c.jsxs("div",{className:"grid grid-cols-1 md:grid-cols-2 gap-6 mt-4",children:[c.jsx(Wl,{delay:0,children:c.jsxs("div",{className:"p-5",children:[c.jsxs("div",{className:"flex items-center gap-2 mb-3",children:[c.jsx("div",{className:"w-2 h-2 rounded-full bg-text-tertiary"}),c.jsx("p",{className:"text-[10px] font-bold tracking-wider uppercase text-text-tertiary",children:"Before"})]}),c.jsx("h3",{className:"text-base font-bold text-text-primary mb-3",children:Qd.title}),c.jsx("ul",{className:"space-y-2",children:Qd.items.map(r=>c.jsxs("li",{className:"text-sm text-text-secondary flex items-start gap-2",children:[c.jsx("span",{className:"mt-1.5 w-1.5 h-1.5 rounded-full bg-text-tertiary shrink-0"}),r]},r))})]})}),c.jsx(Wl,{delay:.15,children:c.jsxs("div",{className:"p-5",children:[c.jsxs("div",{className:"flex items-center gap-2 mb-3",children:[c.jsx("div",{className:"w-2 h-2 rounded-full",style:{backgroundColor:o.success}}),c.jsx("p",{className:"text-[10px] font-bold tracking-wider uppercase",style:{color:o.success},children:"After"})]}),c.jsx("h3",{className:"text-base font-bold text-text-primary mb-3",children:Xd.title}),c.jsx("ul",{className:"space-y-2",children:Xd.items.map(r=>c.jsxs("li",{className:"text-sm flex items-start gap-2",style:{color:o.textSecondary},children:[c.jsx("span",{className:"mt-1.5 w-1.5 h-1.5 rounded-full shrink-0",style:{backgroundColor:r.color}}),r.text]},r.text))})]})})]}),c.jsx("div",{className:"grid grid-cols-1 md:grid-cols-3 gap-4 mt-5",children:Ag.map((r,y)=>c.jsxs(Wl,{delay:.3+y*.1,children:[c.jsx("div",{className:"h-0.5",style:{backgroundColor:r.color}}),c.jsxs("div",{className:"p-4",children:[c.jsxs("div",{className:"flex items-center gap-2 mb-2",children:[c.jsx("div",{className:"w-2.5 h-2.5 rounded-full",style:{backgroundColor:r.color,boxShadow:`0 0 6px ${r.color}`}}),c.jsx("h4",{className:"text-sm font-bold text-text-primary",children:r.name})]}),c.jsx("ul",{className:"space-y-1.5",children:r.details.map(f=>c.jsxs("li",{className:"text-xs text-text-secondary flex items-start gap-1.5",children:[c.jsx("span",{className:"mt-1 w-1 h-1 rounded-full shrink-0",style:{backgroundColor:r.color}}),f]},f))})]})]},r.name))}),c.jsx("p",{className:"text-sm text-text-secondary italic text-center mt-5 scroll-reveal max-w-2xl mx-auto",children:"Each org has governance designed for its mission. A standards body needs neutrality. A company needs speed. A research org needs independence."}),c.jsxs("div",{className:"scroll-reveal mt-4 bg-card-bg rounded-lg border-l-4 p-5 max-w-2xl mx-auto",style:{borderLeftColor:o.accentPurple,borderTopColor:o.borderLight,borderRightColor:o.borderLight,borderBottomColor:o.borderLight,boxShadow:"0px 1px 3px rgba(0, 0, 0, 0.3)",transitionDelay:"0.5s"},children:[c.jsx("p",{className:"text-[10px] font-bold tracking-wider uppercase mb-2",style:{color:o.accentPurple},children:Ji.label}),c.jsx("p",{className:"text-sm text-text-secondary italic leading-relaxed",children:Ji.quote}),c.jsx("p",{className:"text-sm font-semibold mt-2",style:{color:o.accentPurple},children:Ji.source}),c.jsx("p",{className:"text-xs text-text-tertiary mt-1",children:Ji.detail})]})]})}const Tg=[{period:"Q1 2026",label:"NOW",description:["POSE complete","100 interviews validated 3-org structure","Ballmer Group engaged"],color:o.highlight},{period:"Q2-Q3 2026",label:"LAUNCH",description:[],color:o.accentBlue},{period:"Q4 2026",label:"GROW",description:[],color:o.accentTeal},{period:"2027",label:"SCALE",description:[],color:o.accentGreen},{period:"2028",label:"SUSTAIN",description:[],color:o.accentPurple}],Vd=[{org:"Rules Foundation",color:o.rulesBlue,milestones:[{period:"Q2-Q3 2026",items:["Incorporate"]},{period:"Q4 2026",items:["First agency encodings"]},{period:"2027",items:["5+ agency partnerships"]},{period:"2028",items:["Self-sustaining operations"]}]},{org:"Cosilico",color:o.cosilicoCyan,milestones:[{period:"Q4 2026",items:["Beta launch","First certified partners"]},{period:"2027",items:["First paying customers"]},{period:"2028",items:["$3M ARR"]}]},{org:"PolicyEngine",subtitle:"(continuation of existing operations)",color:o.peTeal,milestones:[{period:"Q2-Q3 2026",items:["Full TAXSIM → PolicyEngine transition"]},{period:"Q4 2026",items:["Research partnerships live"]},{period:"2027",items:["10+ institutional partners"]},{period:"2028",items:["40%+ earned revenue"]}]}],Ss=["Q1 2026","Q2-Q3 2026","Q4 2026","2027","2028"],jn=[o.highlight,o.accentBlue,o.accentTeal,o.accentGreen,o.accentPurple],Ng=Ss.slice(1);function jg(v){const r=Tg[0];return c.jsxs("div",{className:"px-8 md:px-16",children:[c.jsx(Me,{tag:"TIMELINE",tagColor:o.primary,title:"The road ahead"}),c.jsxs("div",{className:"mt-8 grid gap-x-3 gap-y-2",style:{gridTemplateColumns:"auto repeat(5, 1fr)"},children:[c.jsx("div",{style:{gridColumn:"1",gridRow:"1"}}),c.jsxs("div",{className:"relative col-span-5",style:{gridColumn:"2 / 7",gridRow:"1"},children:[c.jsx("div",{className:"absolute top-5 left-0 right-0 h-0.5",style:{backgroundColor:o.borderMedium},children:c.jsx("div",{className:"h-full rounded-full",style:{background:`linear-gradient(90deg, ${o.highlight}, ${o.accentBlue}, ${o.accentTeal}, ${o.accentGreen}, ${o.accentPurple})`,boxShadow:`0 0 12px ${o.primary}40`}})}),c.jsx("div",{className:"grid grid-cols-5 gap-3 relative",children:Ss.map((y,f)=>c.jsx("div",{className:"flex justify-center",children:c.jsx("div",{className:"w-10 h-10 rounded-full flex items-center justify-center relative z-10",style:{backgroundColor:`${jn[f]}20`,border:`2px solid ${jn[f]}`,boxShadow:`0 0 16px ${jn[f]}40`},children:c.jsx("div",{className:"w-3 h-3 rounded-full",style:{backgroundColor:jn[f]}})})},f))})]}),c.jsx("div",{style:{gridColumn:"1",gridRow:"2"}}),Ss.map((y,f)=>c.jsx("div",{className:"scroll-reveal text-center",style:{gridColumn:f+2,gridRow:"2",transitionDelay:`${f*.1}s`},children:c.jsx("p",{className:"text-xs font-bold",style:{color:jn[f]},children:y})},y)),Vd.map((y,f)=>c.jsx("div",{className:"scroll-reveal flex items-center pr-3",style:{gridColumn:1,gridRow:f+3,transitionDelay:`${f*.1}s`},children:c.jsxs("div",{children:[c.jsx("p",{className:"text-xs font-bold tracking-wider uppercase whitespace-nowrap",style:{color:y.color},children:y.org}),y.subtitle&&c.jsx("p",{className:"text-[9px] text-text-tertiary whitespace-nowrap",children:y.subtitle})]})},`label-${y.org}`)),c.jsx("div",{className:"scroll-reveal rounded-lg border p-3 flex flex-col justify-center",style:{gridColumn:2,gridRow:"3 / 6",borderColor:`${r.color}50`,backgroundColor:`${r.color}10`,boxShadow:`0 0 20px ${r.color}15`},children:c.jsx("ul",{className:"space-y-1",children:r.description.map(y=>c.jsxs("li",{className:"text-xs text-text-secondary flex items-start gap-1.5",children:[c.jsx("span",{className:"mt-1 w-1 h-1 rounded-full shrink-0",style:{backgroundColor:r.color}}),y]},y))})}),Vd.map((y,f)=>Ng.map((O,D)=>{const _=y.milestones.find(M=>M.period===O);return c.jsx("div",{className:"scroll-reveal rounded-md border p-2.5 min-h-[48px]",style:{gridColumn:D+3,gridRow:f+3,transitionDelay:`${(f*4+D)*.05}s`,borderColor:_?`${y.color}30`:o.borderLight,backgroundColor:_?`${y.color}08`:"transparent"},children:_&&c.jsx("ul",{className:"space-y-0.5",children:_.items.map(M=>c.jsxs("li",{className:"text-xs text-text-secondary flex items-start gap-1.5",children:[c.jsx("span",{className:"mt-1 w-1 h-1 rounded-full shrink-0",style:{backgroundColor:y.color}}),M]},M))})},`${y.org}-${O}`)}))]})]})}const xs=[{name:"Rules Foundation",tagline:"Encoding the world’s rules",color:o.rulesBlue,logo:"/assets/logos/rf-icon.svg"},{name:"Cosilico",tagline:"Society in silico",color:o.cosilicoCyan,logo:"/assets/logos/cosilico-icon.svg"},{name:"PolicyEngine",tagline:"Policy meets evidence",color:o.peTeal,logo:"/assets/logos/pe-icon.svg"}],zg=["Foundation partners","Agency pilot programs","Investor conversations underway"],Cg=[{label:"pose-ecosystem.vercel.app",url:"https://pose-ecosystem.vercel.app"},{label:"github.com/PolicyEngine/pose",url:"https://github.com/PolicyEngine/pose"},{label:"policyengine.org",url:"https://policyengine.org"}];function Og(v){return c.jsxs("div",{className:"px-8 md:px-16 flex flex-col items-center justify-center min-h-[80vh] text-center",children:[c.jsx("p",{className:"scroll-reveal text-base md:text-lg text-text-secondary italic leading-relaxed max-w-3xl",children:"The Human Genome Project didn't just map DNA. It created an ecosystem—Schrödinger built computational simulation on open molecular data, IHME built the Global Burden of Disease on open health data. Cosilico and PolicyEngine do the same for economic policy—simulation and research on Rules Foundation's open rules."}),c.jsx("p",{className:"scroll-reveal text-base md:text-lg text-text-secondary italic leading-relaxed max-w-3xl mt-4",style:{transitionDelay:"0.15s"},children:"We're building the same thing for the rules that govern American life. Our technology is already in use at 10 Downing Street. Major foundations are engaging. 100 interviews confirmed the vision. Now we're ready to build."}),c.jsx("div",{className:"scroll-reveal mt-10 flex items-center justify-center gap-6 md:gap-10",style:{transitionDelay:"0.3s"},children:xs.map((r,y)=>c.jsxs("div",{className:"flex flex-col items-center",children:[c.jsxs("div",{className:"relative",children:[c.jsx("div",{className:"w-20 h-20 md:w-24 md:h-24 rounded-2xl flex items-center justify-center",style:{backgroundColor:`${r.color}15`,border:`2px solid ${r.color}`,boxShadow:`0 0 24px ${r.color}30, 0 0 48px ${r.color}15`},children:c.jsx("img",{src:r.logo,alt:r.name,className:"w-10 h-10 md:w-12 md:h-12 rounded"})}),yc.jsx("span",{className:"text-sm px-4 py-1.5 rounded-full font-medium",style:{color:o.primary,backgroundColor:o.primaryLight,border:`1px solid ${o.primary}30`},children:r},r))})]}),c.jsx("div",{className:"scroll-reveal mt-6 flex flex-wrap justify-center gap-4",style:{transitionDelay:"0.7s"},children:Cg.map(r=>c.jsx("a",{href:r.url,target:"_blank",rel:"noopener noreferrer",className:"text-xs text-text-tertiary hover:text-text-secondary transition-colors",children:r.label},r.label))})]})}const Mg=[{text:"Institutions like the Fed face strong IT/security barriers to external APIs — installable, low-dependency tools fit much better than cloud services.",name:"Jacob Walker",title:"Sr. Research Analyst, Atlanta Fed",color:o.rulesBlue},{text:"PolicyEngine-style tools are ready for deployment; the blocker is institutional slowness, not technology.",name:"Martin Perron",title:"Rules as Code, Canadian Digital Services",color:o.cosilicoCyan},{text:"Programs and tax rules in silos create severe unintended consequences — cliffs, penalties. Modeling these is influencing legislators.",name:"Ray Packer",title:"Georgia Center for Opportunity",color:o.peTeal},{text:"Data and rules complexity create big gaps where better microsim tools and infrastructure are still missing.",name:"Jack Landry",title:"Jane Family Institute",color:o.accentOrange}],Zd={week2:"If this 1 Senate Bill cites PolicyEngine → unlock direct government contracting",week3:"If 10 congressional bills cite PolicyEngine → public deserves open policy estimates"},Dg=[{name:"Rules Foundation",color:o.rulesBlue,condition:"If one AI lab evaluates its models against Rules Foundation benchmarks",impact:"It will provide society a shared, verifiable standard for legal code interpretation"},{name:"Cosilico",color:o.cosilicoCyan,condition:"If one state agency replaces a proprietary vendor with Cosilico Rules",impact:"It will prove that government will invest in open-source rules infrastructure"},{name:"PolicyEngine",color:o.peTeal,condition:"If 20 researchers use PolicyEngine in published papers",impact:"It will prove that open-source tools can replace proprietary licenses in policy research"}],_g=[{name:"AI + Econ Researchers",orgs:"AI-economics researchers across institutions",type:"Research + Validation",value:["Verifiable ground truth for AI policy reasoning"],risk:"May build bespoke tools internally",color:o.accentBlue},{name:"Policy Foundations",orgs:"Arnold Ventures, Pritzker",type:"Funding + Community Support",value:["Higher-quality policy research","Full transparency","One grant funds infra used by many orgs"],risk:"Foundation priorities shift with leadership cycles",color:o.accentGreen},{name:"Major Think Tanks",orgs:"Brookings, CRFB, Niskanen, Urban",type:"Distribution + Funding",value:["Expert modeling without internal capacity","Auditable methodology for publications","Fast turnaround"],risk:"Could build in-house from open-source",color:o.accentPurple}],bs={community:{title:"Community Members (56 interviews)",color:o.accentBlue,items:["PE Team: 10 | Build core models","Academic Researchers: 18 | Empirical questions","Government Economists: 7 | Validate estimates","Think Tank Analysts: 12 | Policy reports","OSS Contributors: 4 | Code, fix bugs","Data Journalists: 5 | Fact-check, interactives"]},stakeholders:{title:"Other Stakeholders (44 interviews)",color:o.accentTeal,items:["AI + Econ Researchers: 10 | AI + policy research","Funders: 10 | Fund development","Non-Users: 8 | Understand barriers","Gov Standards Bodies: 7 | Interoperability","Policy Advocates: 6 | Shape narrative","Competitors: 3 | Ecosystem mapping"]},valueProps:{title:"Value Propositions",color:o.accentGreen,items:["Transparency: Audit every calculation","Speed: Seconds vs. weeks","Cost: Free vs. $10K+ licenses","Integration: API for existing workflows","Credibility: Validated vs. IRS, SSA, CBO"]}},Rg=[{name:"Column Tax",metric:"$26.8M raised",focus:"Filing, not calculation"},{name:"Symmetry",metric:"64M+ employees/yr",focus:"Payroll tax only"},{name:"Benefit Kitchen",metric:"7 states",focus:"18 programs, healthcare focus"},{name:"Avalara",metric:"Acquired $8.4B",focus:"Sales tax only"},{name:"IMPLAN",metric:"Acquired $100M+",focus:"I-O multipliers, no household rules"}],Kd=[{name:"State Revenue Depts",tam:"$1B+"},{name:"Benefits Agencies",tam:"$500M+"},{name:"Tax Software Vendors",tam:"$90B+"},{name:"Financial Planners",tam:"$5B+"},{name:"Banks & Lenders",tam:"$100B+"},{name:"Insurance/Actuaries",tam:"$50B+"},{name:"AI + Econ Researchers",tam:"Strategic"},{name:"AI Agent Builders",tam:"$10B+"},{name:"Marketing/Data",tam:"$2.4B+"},{name:"Economic Analysts",tam:"$50-100M+"},{name:"Quant Finance",tam:"$500B+"},{name:"VC/Impact",tam:"Growing"}],Bg=[{name:"Nikhil Woodruff, CTO, PE",insight:"Speed + open source + prototyping; encoding fast but review/debugging bottleneck"},{name:"Jason Morris, Thomson Reuters",insight:"Most leverage is upstream: getting legislative drafters to author executable rules early"},{name:"Jacob Walker, Atlanta Fed",insight:"Fed faces IT/security barriers to external APIs; installable tools fit better"},{name:"Martin Perron, Canadian Digital Services",insight:"PE-style tools ready for deployment; blocker is institutional slowness"},{name:"Ray Packer, GA Center for Opportunity",insight:"Programs in silos create cliffs/penalties; modeling these influences legislators"},{name:"Paul Huntsberger, Amplifi",insight:"DMN-style rule engines were overkill; PE needs faster staged responses"},{name:"Andrew Lautz, BPC",insight:"Fast open tools especially valuable vs. slow official scores; state-level data priority"},{name:"Kavya Vaghul, Living Wage Calculator",insight:"Users want more granular local data; demand for 'thriving wage' concept"},{name:"John Ricco, Yale Budget Lab",insight:"Strong demand for AI research; humans no longer writing code; tariffs + childcare focus"},{name:"Alejandro Basalo, MSNBC",insight:"Timing and momentum matter; household examples anchor reporting"},{name:"Jack Landry, Jane Family Institute",insight:"Custom microsims for deep accuracy; PE for quick first-pass analyses"},{name:"Thomas Cintra, Outtake",insight:"AI compresses dev cycles; ship to learn, not to perfect"}];function Ug(v){return c.jsxs("div",{className:"px-8 md:px-16",children:[c.jsx(Me,{tag:"VOICES FROM THE FIELD",tagColor:o.primary,title:"What practitioners told us",isAppendix:!0}),c.jsx("div",{className:"grid grid-cols-1 md:grid-cols-2 gap-6 mt-8",children:Mg.map((r,y)=>c.jsx(zn,{quote:r.text,name:r.name,title:r.title,color:r.color,delay:y*.12},r.name))})]})}function Hg(v){return c.jsxs("div",{className:"px-8 md:px-16",children:[c.jsx(Me,{tag:"IMPACT GOALS",tagColor:o.highlight,title:"IF/THEN: how we'll know it's working",isAppendix:!0}),c.jsxs("div",{className:"scroll-reveal mb-8 p-4 rounded-lg border",style:{backgroundColor:o.cardBgAlt,borderColor:o.borderLight,transitionDelay:"0s"},children:[c.jsx("p",{className:"text-xs font-semibold tracking-wider uppercase mb-2",style:{color:o.textTertiary},children:"How our thesis evolved"}),c.jsxs("p",{className:"text-sm",style:{color:o.textSecondary},children:[c.jsx("span",{className:"font-medium",style:{color:o.highlight},children:"Week 2:"})," ",Zd.week2]}),c.jsxs("p",{className:"text-sm mt-1",style:{color:o.textSecondary},children:[c.jsx("span",{className:"font-medium",style:{color:o.highlight},children:"Week 3:"})," ",Zd.week3]})]}),c.jsx("div",{className:"grid grid-cols-1 md:grid-cols-3 gap-6",children:Dg.map((r,y)=>c.jsxs(Wl,{borderColor:r.color,delay:y*.15,children:[c.jsx("div",{className:"h-1 rounded-t-lg",style:{backgroundColor:r.color}}),c.jsxs("div",{className:"p-5",children:[c.jsx("h3",{className:"text-sm font-bold",style:{color:r.color},children:r.name}),c.jsxs("div",{className:"mt-4",children:[c.jsx("p",{className:"text-[10px] font-semibold tracking-wider uppercase",style:{color:o.textTertiary},children:"IF"}),c.jsx("p",{className:"text-sm mt-1 leading-relaxed",style:{color:o.textPrimary},children:r.condition})]}),c.jsxs("div",{className:"mt-4",children:[c.jsx("p",{className:"text-[10px] font-semibold tracking-wider uppercase",style:{color:o.textTertiary},children:"THEN"}),c.jsx("p",{className:"text-sm mt-1 leading-relaxed",style:{color:o.textSecondary},children:r.impact})]})]})]},r.name))})]})}function qg(v){return c.jsxs("div",{className:"px-8 md:px-16",children:[c.jsx(Me,{tag:"STRATEGIC PARTNERS",tagColor:o.accentPurple,title:"Who we need and why",isAppendix:!0}),c.jsx("div",{className:"grid grid-cols-1 md:grid-cols-3 gap-6 mt-8",children:_g.map((r,y)=>c.jsxs(Wl,{borderColor:r.color,delay:y*.15,children:[c.jsx("div",{className:"h-1 rounded-t-lg",style:{backgroundColor:r.color}}),c.jsxs("div",{className:"p-5",children:[c.jsx("h3",{className:"text-base font-bold",style:{color:r.color},children:r.name}),c.jsx("p",{className:"text-xs mt-1",style:{color:o.textTertiary},children:r.type}),c.jsx("p",{className:"text-sm font-medium mt-3",style:{color:o.textPrimary},children:r.orgs}),c.jsxs("div",{className:"mt-4",children:[c.jsx("p",{className:"text-[10px] font-semibold tracking-wider uppercase mb-2",style:{color:o.textTertiary},children:"Value"}),c.jsx("ul",{className:"space-y-1",children:r.value.map(f=>c.jsxs("li",{className:"text-xs leading-relaxed",style:{color:o.textSecondary},children:["• ",f]},f))})]}),c.jsxs("div",{className:"mt-4 p-2 rounded",style:{backgroundColor:"rgba(239, 68, 68, 0.08)"},children:[c.jsx("p",{className:"text-[10px] font-semibold tracking-wider uppercase mb-1",style:{color:o.error},children:"Risk"}),c.jsx("p",{className:"text-xs",style:{color:o.textSecondary},children:r.risk})]})]})]},r.name))})]})}function Gg(v){const r=[bs.community,bs.stakeholders,bs.valueProps];return c.jsxs("div",{className:"px-8 md:px-16",children:[c.jsx(Me,{tag:"ECOSYSTEM CANVAS",tagColor:o.primary,title:"Who we talked to and what they value",isAppendix:!0}),c.jsx("div",{className:"grid grid-cols-1 md:grid-cols-3 gap-6 mt-8",children:r.map((y,f)=>c.jsxs(Wl,{borderColor:y.color,delay:f*.15,children:[c.jsx("div",{className:"h-1 rounded-t-lg",style:{backgroundColor:y.color}}),c.jsxs("div",{className:"p-5",children:[c.jsx("h3",{className:"text-sm font-bold",style:{color:y.color},children:y.title}),c.jsx("ul",{className:"mt-4 space-y-2",children:y.items.map(O=>{const[D,_]=O.split(" | ");return c.jsxs("li",{className:"text-sm leading-relaxed",children:[c.jsx("span",{style:{color:o.textPrimary},children:D}),_&&c.jsxs("span",{style:{color:o.textTertiary},children:[" — ",_]})]},O)})})]})]},y.title))})]})}const Yg=[{name:"Rules Foundation",color:o.rulesBlue,entity:"501(c)(3)",budget:"~$300K/year",streams:[{label:"Government grants",pct:"40%"},{label:"Foundation grants",pct:"30%"},{label:"AI lab in-kind (compute)",pct:"20%"},{label:"Downstream contributions",pct:"10%"}]},{name:"Cosilico",color:o.cosilicoCyan,entity:"Public Benefit Corp",budget:"$500K → $75M ARR over 5yr",streams:[{label:"Open source (free, Apache 2.0)",pct:"Free"},{label:"API calls",pct:"$0.001–0.01/call"},{label:"Data enrichment",pct:"$0.10–1.00/record"},{label:"Enterprise",pct:"$100K–1M+/yr"}]},{name:"PolicyEngine",color:o.peTeal,entity:"501(c)(3) / Charity",budget:"~$500K/year",streams:[{label:"Foundation grants",pct:"60%"},{label:"Government grants (NSF)",pct:"20%"},{label:"Earned revenue",pct:"20%"},{label:"Path to 40%+ earned",pct:"Goal"}]}];function Lg(v){return c.jsxs("div",{className:"px-8 md:px-16",children:[c.jsx(Me,{tag:"BUSINESS MODEL",tagColor:o.cosilicoCyan,title:"Revenue models per organization",isAppendix:!0}),c.jsx("div",{className:"grid grid-cols-1 md:grid-cols-3 gap-6 mt-8",children:Yg.map((r,y)=>c.jsxs(Wl,{borderColor:r.color,delay:y*.15,children:[c.jsx("div",{className:"h-1 rounded-t-lg",style:{backgroundColor:r.color}}),c.jsxs("div",{className:"p-5",children:[c.jsx("h3",{className:"text-base font-bold",style:{color:r.color},children:r.name}),c.jsx("p",{className:"text-xs mt-1",style:{color:o.textTertiary},children:r.entity}),c.jsx("p",{className:"text-sm font-medium mt-2",style:{color:o.textPrimary},children:r.budget}),c.jsx("div",{className:"mt-4 space-y-2",children:r.streams.map(f=>c.jsxs("div",{className:"flex justify-between items-baseline",children:[c.jsx("span",{className:"text-xs",style:{color:o.textSecondary},children:f.label}),c.jsx("span",{className:"text-xs font-semibold ml-2 shrink-0",style:{color:r.color},children:f.pct})]},f.label))})]})]},r.name))})]})}const wg=[{name:"Rules Foundation",color:o.rulesBlue,entity:"Multi-stakeholder 501(c)(3)",details:["Technical steering committee","Encoding standards board","Partisan neutrality requirement","Mandatory statute citations","Multi-reviewer validation","Historical versioning of all encodings"]},{name:"Cosilico",color:o.cosilicoCyan,entity:"Public Benefit Corp (mission-locked)",details:["Board with public benefit mandate","Open-source core (Apache 2.0)","Enterprise services layer","Certified partner program (Salesforce model)","Mission locked by charter"]},{name:"PolicyEngine",color:o.peTeal,entity:"501(c)(3) / UK Charity (AGPL)",details:["Founder-led → Technical steering committee","Advisory board from interview network","Contributor guidelines","Formal research partnership agreements","Open roadmap with community input"]}];function Qg(v){return c.jsxs("div",{className:"px-8 md:px-16",children:[c.jsx(Me,{tag:"GOVERNANCE DETAIL",tagColor:o.rulesBlue,title:"How each organization is governed",isAppendix:!0}),c.jsx("div",{className:"grid grid-cols-1 md:grid-cols-3 gap-6 mt-8",children:wg.map((r,y)=>c.jsxs(Wl,{borderColor:r.color,delay:y*.15,children:[c.jsx("div",{className:"h-1 rounded-t-lg",style:{backgroundColor:r.color}}),c.jsxs("div",{className:"p-5",children:[c.jsx("h3",{className:"text-base font-bold",style:{color:r.color},children:r.name}),c.jsx("p",{className:"text-xs font-medium mt-1",style:{color:o.textTertiary},children:r.entity}),c.jsx("ul",{className:"mt-4 space-y-2",children:r.details.map(f=>c.jsxs("li",{className:"flex items-start gap-2",children:[c.jsx("span",{className:"mt-1.5 w-1.5 h-1.5 rounded-full shrink-0",style:{backgroundColor:r.color}}),c.jsx("span",{className:"text-sm leading-relaxed",style:{color:o.textSecondary},children:f})]},f))})]})]},r.name))})]})}function Xg(v){return c.jsxs("div",{className:"px-8 md:px-16",children:[c.jsx(Me,{tag:"COMPETITIVE LANDSCAPE",tagColor:o.accentOrange,title:"How we compare",isAppendix:!0}),c.jsx("div",{className:"scroll-reveal mt-8 rounded-lg border overflow-hidden",style:{borderColor:o.borderLight,boxShadow:"0px 1px 3px rgba(0, 0, 0, 0.3)",transitionDelay:"0s"},children:c.jsxs("table",{className:"w-full",children:[c.jsx("thead",{children:c.jsxs("tr",{style:{backgroundColor:o.cardBgAlt},children:[c.jsx("th",{className:"text-left text-xs font-semibold tracking-wider uppercase px-5 py-3",style:{color:o.textTertiary},children:"Competitor"}),c.jsx("th",{className:"text-left text-xs font-semibold tracking-wider uppercase px-5 py-3",style:{color:o.textTertiary},children:"Key metric"}),c.jsx("th",{className:"text-left text-xs font-semibold tracking-wider uppercase px-5 py-3",style:{color:o.textTertiary},children:"Limitation"})]})}),c.jsx("tbody",{children:Rg.map((r,y)=>c.jsxs("tr",{className:"scroll-reveal",style:{backgroundColor:y%2===0?o.cardBg:o.cardBgAlt,transitionDelay:`${(y+1)*.08}s`},children:[c.jsx("td",{className:"px-5 py-3 text-sm font-semibold",style:{color:o.textPrimary},children:r.name}),c.jsx("td",{className:"px-5 py-3 text-sm",style:{color:o.accentOrange},children:r.metric}),c.jsx("td",{className:"px-5 py-3 text-sm",style:{color:o.textSecondary},children:r.focus})]},r.name))})]})}),c.jsxs("div",{className:"scroll-reveal mt-6 p-5 rounded-lg border-l-4",style:{backgroundColor:o.cardBg,borderLeftColor:o.peTeal,borderTopColor:o.borderLight,borderRightColor:o.borderLight,borderBottomColor:o.borderLight,boxShadow:"0px 1px 3px rgba(0, 0, 0, 0.3)",transitionDelay:"0.5s"},children:[c.jsx("h3",{className:"text-sm font-bold",style:{color:o.peTeal},children:"PolicyEngine's differentiation"}),c.jsx("div",{className:"flex flex-wrap gap-4 mt-3",children:["Open-source","Comprehensive (taxes + benefits)","Free for researchers","50+ state systems","100+ benefit programs"].map(r=>c.jsx("span",{className:"text-xs font-medium px-3 py-1.5 rounded-full",style:{backgroundColor:"rgba(49, 151, 149, 0.12)",color:o.peTeal},children:r},r))})]})]})}function Vg(v){return c.jsxs("div",{className:"px-8 md:px-16",children:[c.jsx(Me,{tag:"INTERVIEW HIGHLIGHTS",tagColor:o.primary,title:"Key insights from 100+ conversations",isAppendix:!0}),c.jsx("div",{className:"grid grid-cols-1 md:grid-cols-2 lg:grid-cols-3 gap-4 mt-8",children:Bg.map((r,y)=>{const[f,...O]=r.name.split(", "),D=O.join(", ");return c.jsxs("div",{className:"scroll-reveal bg-card-bg rounded-lg border p-4 card-hover",style:{borderColor:o.borderLight,boxShadow:"0px 1px 3px rgba(0, 0, 0, 0.3)",transitionDelay:`${y%6*.08}s`},children:[c.jsx("p",{className:"text-sm font-semibold",style:{color:o.textPrimary},children:f}),D&&c.jsx("p",{className:"text-xs mt-0.5",style:{color:o.textTertiary},children:D}),c.jsx("p",{className:"text-xs mt-2 leading-relaxed",style:{color:o.textSecondary},children:r.insight})]},r.name)})})]})}function Jd(v){if(v==="Strategic"||v==="Growing")return 5;const r=v.match(/([\d.]+)/);if(!r)return 5;const y=parseFloat(r[1]);return v.includes("B")?y:v.includes("M")?y/1e3:y}function Zg(v){const r=Math.max(...Kd.map(y=>Jd(y.tam)));return c.jsxs("div",{className:"px-8 md:px-16",children:[c.jsx(Me,{tag:"MARKET SEGMENTS",tagColor:o.cosilicoCyan,title:"$250B+ total addressable market",isAppendix:!0}),c.jsx("div",{className:"mt-8 space-y-2",children:Kd.map((y,f)=>{const O=Jd(y.tam),D=Math.max(O/r*100,4),_=y.tam==="Strategic"||y.tam==="Growing";return c.jsxs("div",{className:"scroll-reveal flex items-center gap-4",style:{transitionDelay:`${f*.06}s`},children:[c.jsx("span",{className:"text-xs font-medium w-40 shrink-0 text-right",style:{color:o.textSecondary},children:y.name}),c.jsx("div",{className:"flex-1 h-7 rounded-md overflow-hidden",style:{backgroundColor:o.cardBgAlt},children:c.jsx("div",{className:"h-full rounded-md flex items-center pl-3 transition-all duration-700",style:{width:`${D}%`,backgroundColor:_?"rgba(6, 182, 212, 0.3)":"rgba(6, 182, 212, 0.6)",minWidth:"3rem"},children:c.jsx("span",{className:"text-xs font-bold whitespace-nowrap",style:{color:o.textPrimary},children:y.tam})})})]},y.name)})}),c.jsxs("div",{className:"scroll-reveal mt-8 text-center",style:{transitionDelay:"0.8s"},children:[c.jsx("p",{className:"text-3xl font-bold",style:{color:o.cosilicoCyan},children:"$250B+"}),c.jsx("p",{className:"text-sm mt-1",style:{color:o.textTertiary},children:"Total addressable market (Cosilico)"})]})]})}const Kg=[{id:"who-we-are",title:"Who we are",tag:"THE TEAM",component:Py},{id:"cold-open",title:"The question",tag:"COLD OPEN",component:$y},{id:"what-we-do",title:"What we do",tag:"THESIS + IMPACT",component:lg},{id:"journey-begins",title:"100 conversations",tag:"THE JOURNEY",component:tg},{id:"tension-week4",title:"Week 4",tag:"VALIDATION",component:ng},{id:"tension-week5",title:"Week 5",tag:"VALIDATION",component:ig},{id:"meet-the-three",title:"Meet the three",tag:"THREE ORGS",component:Sg},{id:"aha-moment",title:"One became three",tag:"THE ECOSYSTEM",component:xg,stickyHeight:3},{id:"road-ahead",title:"Road ahead",tag:"TIMELINE",component:jg},{id:"the-close",title:"The close",tag:"THE CLOSE",component:Og},{id:"voices",title:"Voices",component:Ug,isAppendix:!0},{id:"impact-goals",title:"Impact goals",component:Hg,isAppendix:!0},{id:"partners",title:"Partners",component:qg,isAppendix:!0},{id:"canvas",title:"Canvas",component:Gg,isAppendix:!0},{id:"canvas-detail",title:"Canvas detail",component:Lg,isAppendix:!0},{id:"governance",title:"Governance",component:Eg,isAppendix:!0},{id:"gov-detail",title:"Gov detail",component:Qg,isAppendix:!0},{id:"competitive",title:"Competitive",component:Xg,isAppendix:!0},{id:"highlights",title:"Highlights",component:Vg,isAppendix:!0},{id:"market",title:"Market",component:Zg,isAppendix:!0}];function Jg(){return c.jsx(ky,{sections:Kg})}My.createRoot(document.getElementById("root")).render(c.jsx(ge.StrictMode,{children:c.jsx(Jg,{})})); diff --git a/app/dist/assets/index-DtoK_MeA.css b/app/dist/assets/index-DtoK_MeA.css new file mode 100644 index 0000000..285fdc9 --- /dev/null +++ b/app/dist/assets/index-DtoK_MeA.css @@ -0,0 +1 @@ +@import"https://fonts.googleapis.com/css2?family=Inter:wght@300;400;500;600;700&display=swap";*,:before,:after{--tw-border-spacing-x: 0;--tw-border-spacing-y: 0;--tw-translate-x: 0;--tw-translate-y: 0;--tw-rotate: 0;--tw-skew-x: 0;--tw-skew-y: 0;--tw-scale-x: 1;--tw-scale-y: 1;--tw-pan-x: ;--tw-pan-y: ;--tw-pinch-zoom: ;--tw-scroll-snap-strictness: proximity;--tw-gradient-from-position: ;--tw-gradient-via-position: ;--tw-gradient-to-position: ;--tw-ordinal: ;--tw-slashed-zero: ;--tw-numeric-figure: ;--tw-numeric-spacing: ;--tw-numeric-fraction: ;--tw-ring-inset: ;--tw-ring-offset-width: 0px;--tw-ring-offset-color: #fff;--tw-ring-color: rgb(59 130 246 / .5);--tw-ring-offset-shadow: 0 0 #0000;--tw-ring-shadow: 0 0 #0000;--tw-shadow: 0 0 #0000;--tw-shadow-colored: 0 0 #0000;--tw-blur: ;--tw-brightness: ;--tw-contrast: ;--tw-grayscale: ;--tw-hue-rotate: ;--tw-invert: ;--tw-saturate: ;--tw-sepia: ;--tw-drop-shadow: ;--tw-backdrop-blur: ;--tw-backdrop-brightness: ;--tw-backdrop-contrast: ;--tw-backdrop-grayscale: ;--tw-backdrop-hue-rotate: ;--tw-backdrop-invert: ;--tw-backdrop-opacity: ;--tw-backdrop-saturate: ;--tw-backdrop-sepia: ;--tw-contain-size: ;--tw-contain-layout: ;--tw-contain-paint: ;--tw-contain-style: }::backdrop{--tw-border-spacing-x: 0;--tw-border-spacing-y: 0;--tw-translate-x: 0;--tw-translate-y: 0;--tw-rotate: 0;--tw-skew-x: 0;--tw-skew-y: 0;--tw-scale-x: 1;--tw-scale-y: 1;--tw-pan-x: ;--tw-pan-y: ;--tw-pinch-zoom: ;--tw-scroll-snap-strictness: proximity;--tw-gradient-from-position: ;--tw-gradient-via-position: ;--tw-gradient-to-position: ;--tw-ordinal: ;--tw-slashed-zero: ;--tw-numeric-figure: ;--tw-numeric-spacing: ;--tw-numeric-fraction: ;--tw-ring-inset: ;--tw-ring-offset-width: 0px;--tw-ring-offset-color: #fff;--tw-ring-color: rgb(59 130 246 / .5);--tw-ring-offset-shadow: 0 0 #0000;--tw-ring-shadow: 0 0 #0000;--tw-shadow: 0 0 #0000;--tw-shadow-colored: 0 0 #0000;--tw-blur: ;--tw-brightness: ;--tw-contrast: ;--tw-grayscale: ;--tw-hue-rotate: ;--tw-invert: ;--tw-saturate: ;--tw-sepia: ;--tw-drop-shadow: ;--tw-backdrop-blur: ;--tw-backdrop-brightness: ;--tw-backdrop-contrast: ;--tw-backdrop-grayscale: ;--tw-backdrop-hue-rotate: ;--tw-backdrop-invert: ;--tw-backdrop-opacity: ;--tw-backdrop-saturate: ;--tw-backdrop-sepia: ;--tw-contain-size: ;--tw-contain-layout: ;--tw-contain-paint: ;--tw-contain-style: }*,:before,:after{box-sizing:border-box;border-width:0;border-style:solid;border-color:#e5e7eb}:before,:after{--tw-content: ""}html,:host{line-height:1.5;-webkit-text-size-adjust:100%;-moz-tab-size:4;-o-tab-size:4;tab-size:4;font-family:Inter,system-ui,sans-serif;font-feature-settings:normal;font-variation-settings:normal;-webkit-tap-highlight-color:transparent}body{margin:0;line-height:inherit}hr{height:0;color:inherit;border-top-width:1px}abbr:where([title]){-webkit-text-decoration:underline dotted;text-decoration:underline dotted}h1,h2,h3,h4,h5,h6{font-size:inherit;font-weight:inherit}a{color:inherit;text-decoration:inherit}b,strong{font-weight:bolder}code,kbd,samp,pre{font-family:ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,Liberation Mono,Courier New,monospace;font-feature-settings:normal;font-variation-settings:normal;font-size:1em}small{font-size:80%}sub,sup{font-size:75%;line-height:0;position:relative;vertical-align:baseline}sub{bottom:-.25em}sup{top:-.5em}table{text-indent:0;border-color:inherit;border-collapse:collapse}button,input,optgroup,select,textarea{font-family:inherit;font-feature-settings:inherit;font-variation-settings:inherit;font-size:100%;font-weight:inherit;line-height:inherit;letter-spacing:inherit;color:inherit;margin:0;padding:0}button,select{text-transform:none}button,input:where([type=button]),input:where([type=reset]),input:where([type=submit]){-webkit-appearance:button;background-color:transparent;background-image:none}:-moz-focusring{outline:auto}:-moz-ui-invalid{box-shadow:none}progress{vertical-align:baseline}::-webkit-inner-spin-button,::-webkit-outer-spin-button{height:auto}[type=search]{-webkit-appearance:textfield;outline-offset:-2px}::-webkit-search-decoration{-webkit-appearance:none}::-webkit-file-upload-button{-webkit-appearance:button;font:inherit}summary{display:list-item}blockquote,dl,dd,h1,h2,h3,h4,h5,h6,hr,figure,p,pre{margin:0}fieldset{margin:0;padding:0}legend{padding:0}ol,ul,menu{list-style:none;margin:0;padding:0}dialog{padding:0}textarea{resize:vertical}input::-moz-placeholder,textarea::-moz-placeholder{opacity:1;color:#9ca3af}input::placeholder,textarea::placeholder{opacity:1;color:#9ca3af}button,[role=button]{cursor:pointer}:disabled{cursor:default}img,svg,video,canvas,audio,iframe,embed,object{display:block;vertical-align:middle}img,video{max-width:100%;height:auto}[hidden]:where(:not([hidden=until-found])){display:none}.\!container{width:100%!important}.container{width:100%}@media(min-width:640px){.\!container{max-width:640px!important}.container{max-width:640px}}@media(min-width:768px){.\!container{max-width:768px!important}.container{max-width:768px}}@media(min-width:1024px){.\!container{max-width:1024px!important}.container{max-width:1024px}}@media(min-width:1280px){.\!container{max-width:1280px!important}.container{max-width:1280px}}@media(min-width:1536px){.\!container{max-width:1536px!important}.container{max-width:1536px}}.pointer-events-none{pointer-events:none}.visible{visibility:visible}.fixed{position:fixed}.absolute{position:absolute}.relative{position:relative}.sticky{position:sticky}.inset-0{inset:0}.-right-6{right:-1.5rem}.bottom-4{bottom:1rem}.bottom-6{bottom:1.5rem}.left-0{left:0}.left-3{left:.75rem}.left-4{left:1rem}.left-\[11px\]{left:11px}.right-0{right:0}.right-4{right:1rem}.right-6{right:1.5rem}.top-0{top:0}.top-1\/2{top:50%}.top-4{top:1rem}.top-5{top:1.25rem}.top-8{top:2rem}.z-10{z-index:10}.z-20{z-index:20}.z-40{z-index:40}.z-50{z-index:50}.col-span-5{grid-column:span 5 / span 5}.-mx-3{margin-left:-.75rem;margin-right:-.75rem}.mx-8{margin-left:2rem;margin-right:2rem}.mx-auto{margin-left:auto;margin-right:auto}.-mb-px{margin-bottom:-1px}.mb-1{margin-bottom:.25rem}.mb-1\.5{margin-bottom:.375rem}.mb-12{margin-bottom:3rem}.mb-2{margin-bottom:.5rem}.mb-3{margin-bottom:.75rem}.mb-4{margin-bottom:1rem}.mb-5{margin-bottom:1.25rem}.mb-6{margin-bottom:1.5rem}.mb-8{margin-bottom:2rem}.ml-1{margin-left:.25rem}.ml-2{margin-left:.5rem}.mr-1{margin-right:.25rem}.mr-4{margin-right:1rem}.mt-0\.5{margin-top:.125rem}.mt-1{margin-top:.25rem}.mt-1\.5{margin-top:.375rem}.mt-10{margin-top:2.5rem}.mt-12{margin-top:3rem}.mt-2{margin-top:.5rem}.mt-3{margin-top:.75rem}.mt-4{margin-top:1rem}.mt-5{margin-top:1.25rem}.mt-6{margin-top:1.5rem}.mt-8{margin-top:2rem}.line-clamp-2{overflow:hidden;display:-webkit-box;-webkit-box-orient:vertical;-webkit-line-clamp:2}.block{display:block}.inline-block{display:inline-block}.inline{display:inline}.flex{display:flex}.inline-flex{display:inline-flex}.table{display:table}.grid{display:grid}.hidden{display:none}.aspect-\[16\/9\]{aspect-ratio:16/9}.h-0\.5{height:.125rem}.h-1{height:.25rem}.h-1\.5{height:.375rem}.h-10{height:2.5rem}.h-12{height:3rem}.h-16{height:4rem}.h-2{height:.5rem}.h-2\.5{height:.625rem}.h-20{height:5rem}.h-24{height:6rem}.h-3{height:.75rem}.h-3\.5{height:.875rem}.h-32{height:8rem}.h-4{height:1rem}.h-48{height:12rem}.h-5{height:1.25rem}.h-6{height:1.5rem}.h-7{height:1.75rem}.h-8{height:2rem}.h-\[2px\]{height:2px}.h-full{height:100%}.h-px{height:1px}.h-screen{height:100vh}.max-h-64{max-height:16rem}.max-h-96{max-height:24rem}.min-h-0{min-height:0px}.min-h-\[200px\]{min-height:200px}.min-h-\[48px\]{min-height:48px}.min-h-\[80vh\]{min-height:80vh}.w-0\.5{width:.125rem}.w-1{width:.25rem}.w-1\.5{width:.375rem}.w-10{width:2.5rem}.w-12{width:3rem}.w-16{width:4rem}.w-2{width:.5rem}.w-2\.5{width:.625rem}.w-20{width:5rem}.w-24{width:6rem}.w-28{width:7rem}.w-3{width:.75rem}.w-3\.5{width:.875rem}.w-32{width:8rem}.w-4{width:1rem}.w-40{width:10rem}.w-48{width:12rem}.w-5{width:1.25rem}.w-6{width:1.5rem}.w-8{width:2rem}.w-fit{width:-moz-fit-content;width:fit-content}.w-full{width:100%}.min-w-0{min-width:0px}.max-w-2xl{max-width:42rem}.max-w-3xl{max-width:48rem}.max-w-4xl{max-width:56rem}.max-w-5xl{max-width:64rem}.max-w-lg{max-width:32rem}.flex-1{flex:1 1 0%}.flex-shrink-0,.shrink-0{flex-shrink:0}.-translate-y-1\/2{--tw-translate-y: -50%;transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skew(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}.-rotate-90{--tw-rotate: -90deg;transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skew(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}.transform{transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skew(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}@keyframes spin{to{transform:rotate(360deg)}}.animate-spin{animation:spin 1s linear infinite}.cursor-not-allowed{cursor:not-allowed}.cursor-pointer{cursor:pointer}.list-inside{list-style-position:inside}.list-disc{list-style-type:disc}.grid-cols-1{grid-template-columns:repeat(1,minmax(0,1fr))}.grid-cols-2{grid-template-columns:repeat(2,minmax(0,1fr))}.grid-cols-3{grid-template-columns:repeat(3,minmax(0,1fr))}.grid-cols-5{grid-template-columns:repeat(5,minmax(0,1fr))}.flex-col{flex-direction:column}.flex-wrap{flex-wrap:wrap}.items-start{align-items:flex-start}.items-center{align-items:center}.items-baseline{align-items:baseline}.justify-end{justify-content:flex-end}.justify-center{justify-content:center}.justify-between{justify-content:space-between}.gap-1{gap:.25rem}.gap-1\.5{gap:.375rem}.gap-2{gap:.5rem}.gap-3{gap:.75rem}.gap-4{gap:1rem}.gap-6{gap:1.5rem}.gap-8{gap:2rem}.gap-x-3{-moz-column-gap:.75rem;column-gap:.75rem}.gap-y-2{row-gap:.5rem}.space-y-0\.5>:not([hidden])~:not([hidden]){--tw-space-y-reverse: 0;margin-top:calc(.125rem * calc(1 - var(--tw-space-y-reverse)));margin-bottom:calc(.125rem * var(--tw-space-y-reverse))}.space-y-1>:not([hidden])~:not([hidden]){--tw-space-y-reverse: 0;margin-top:calc(.25rem * calc(1 - var(--tw-space-y-reverse)));margin-bottom:calc(.25rem * var(--tw-space-y-reverse))}.space-y-1\.5>:not([hidden])~:not([hidden]){--tw-space-y-reverse: 0;margin-top:calc(.375rem * calc(1 - var(--tw-space-y-reverse)));margin-bottom:calc(.375rem * var(--tw-space-y-reverse))}.space-y-10>:not([hidden])~:not([hidden]){--tw-space-y-reverse: 0;margin-top:calc(2.5rem * calc(1 - var(--tw-space-y-reverse)));margin-bottom:calc(2.5rem * var(--tw-space-y-reverse))}.space-y-2>:not([hidden])~:not([hidden]){--tw-space-y-reverse: 0;margin-top:calc(.5rem * calc(1 - var(--tw-space-y-reverse)));margin-bottom:calc(.5rem * var(--tw-space-y-reverse))}.space-y-3>:not([hidden])~:not([hidden]){--tw-space-y-reverse: 0;margin-top:calc(.75rem * calc(1 - var(--tw-space-y-reverse)));margin-bottom:calc(.75rem * var(--tw-space-y-reverse))}.space-y-4>:not([hidden])~:not([hidden]){--tw-space-y-reverse: 0;margin-top:calc(1rem * calc(1 - var(--tw-space-y-reverse)));margin-bottom:calc(1rem * var(--tw-space-y-reverse))}.space-y-5>:not([hidden])~:not([hidden]){--tw-space-y-reverse: 0;margin-top:calc(1.25rem * calc(1 - var(--tw-space-y-reverse)));margin-bottom:calc(1.25rem * var(--tw-space-y-reverse))}.space-y-6>:not([hidden])~:not([hidden]){--tw-space-y-reverse: 0;margin-top:calc(1.5rem * calc(1 - var(--tw-space-y-reverse)));margin-bottom:calc(1.5rem * var(--tw-space-y-reverse))}.overflow-hidden{overflow:hidden}.overflow-visible{overflow:visible}.overflow-x-auto{overflow-x:auto}.overflow-y-auto{overflow-y:auto}.truncate{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.whitespace-nowrap{white-space:nowrap}.whitespace-pre-line{white-space:pre-line}.whitespace-pre-wrap{white-space:pre-wrap}.rounded{border-radius:.25rem}.rounded-2xl{border-radius:1rem}.rounded-full{border-radius:9999px}.rounded-lg{border-radius:.5rem}.rounded-md{border-radius:.375rem}.rounded-sm{border-radius:.125rem}.rounded-xl{border-radius:.75rem}.rounded-t-lg{border-top-left-radius:.5rem;border-top-right-radius:.5rem}.border{border-width:1px}.border-2{border-width:2px}.border-4{border-width:4px}.border-b{border-bottom-width:1px}.border-b-2{border-bottom-width:2px}.border-l-4{border-left-width:4px}.border-t{border-top-width:1px}.border-dashed{border-style:dashed}.border-amber-200{--tw-border-opacity: 1;border-color:rgb(253 230 138 / var(--tw-border-opacity, 1))}.border-blue-200{--tw-border-opacity: 1;border-color:rgb(191 219 254 / var(--tw-border-opacity, 1))}.border-border-light{--tw-border-opacity: 1;border-color:rgb(30 41 59 / var(--tw-border-opacity, 1))}.border-border-medium{--tw-border-opacity: 1;border-color:rgb(51 65 85 / var(--tw-border-opacity, 1))}.border-gray-100{--tw-border-opacity: 1;border-color:rgb(243 244 246 / var(--tw-border-opacity, 1))}.border-gray-200{--tw-border-opacity: 1;border-color:rgb(229 231 235 / var(--tw-border-opacity, 1))}.border-gray-300{--tw-border-opacity: 1;border-color:rgb(209 213 219 / var(--tw-border-opacity, 1))}.border-green-200{--tw-border-opacity: 1;border-color:rgb(187 247 208 / var(--tw-border-opacity, 1))}.border-orange-200{--tw-border-opacity: 1;border-color:rgb(254 215 170 / var(--tw-border-opacity, 1))}.border-primary{--tw-border-opacity: 1;border-color:rgb(49 151 149 / var(--tw-border-opacity, 1))}.border-purple-200{--tw-border-opacity: 1;border-color:rgb(233 213 255 / var(--tw-border-opacity, 1))}.border-red-200{--tw-border-opacity: 1;border-color:rgb(254 202 202 / var(--tw-border-opacity, 1))}.border-teal-200{--tw-border-opacity: 1;border-color:rgb(153 246 228 / var(--tw-border-opacity, 1))}.border-teal-500{--tw-border-opacity: 1;border-color:rgb(49 151 149 / var(--tw-border-opacity, 1))}.border-teal-600{--tw-border-opacity: 1;border-color:rgb(13 148 136 / var(--tw-border-opacity, 1))}.border-b-white{--tw-border-opacity: 1;border-bottom-color:rgb(255 255 255 / var(--tw-border-opacity, 1))}.bg-amber-100{--tw-bg-opacity: 1;background-color:rgb(254 243 199 / var(--tw-bg-opacity, 1))}.bg-amber-50{--tw-bg-opacity: 1;background-color:rgb(255 251 235 / var(--tw-bg-opacity, 1))}.bg-black\/50{background-color:#00000080}.bg-blue-100{--tw-bg-opacity: 1;background-color:rgb(219 234 254 / var(--tw-bg-opacity, 1))}.bg-blue-50{--tw-bg-opacity: 1;background-color:rgb(239 246 255 / var(--tw-bg-opacity, 1))}.bg-border-medium{--tw-bg-opacity: 1;background-color:rgb(51 65 85 / var(--tw-bg-opacity, 1))}.bg-card-bg{--tw-bg-opacity: 1;background-color:rgb(17 24 39 / var(--tw-bg-opacity, 1))}.bg-card-bg-alt{--tw-bg-opacity: 1;background-color:rgb(30 41 59 / var(--tw-bg-opacity, 1))}.bg-card-bg\/50{background-color:#11182780}.bg-card-bg\/90{background-color:#111827e6}.bg-gray-100{--tw-bg-opacity: 1;background-color:rgb(243 244 246 / var(--tw-bg-opacity, 1))}.bg-gray-200{--tw-bg-opacity: 1;background-color:rgb(229 231 235 / var(--tw-bg-opacity, 1))}.bg-gray-300{--tw-bg-opacity: 1;background-color:rgb(209 213 219 / var(--tw-bg-opacity, 1))}.bg-gray-50{--tw-bg-opacity: 1;background-color:rgb(249 250 251 / var(--tw-bg-opacity, 1))}.bg-green-100{--tw-bg-opacity: 1;background-color:rgb(220 252 231 / var(--tw-bg-opacity, 1))}.bg-green-50{--tw-bg-opacity: 1;background-color:rgb(240 253 244 / var(--tw-bg-opacity, 1))}.bg-green-500{--tw-bg-opacity: 1;background-color:rgb(34 197 94 / var(--tw-bg-opacity, 1))}.bg-orange-100{--tw-bg-opacity: 1;background-color:rgb(255 237 213 / var(--tw-bg-opacity, 1))}.bg-orange-50{--tw-bg-opacity: 1;background-color:rgb(255 247 237 / var(--tw-bg-opacity, 1))}.bg-page-bg{--tw-bg-opacity: 1;background-color:rgb(10 15 28 / var(--tw-bg-opacity, 1))}.bg-primary{--tw-bg-opacity: 1;background-color:rgb(49 151 149 / var(--tw-bg-opacity, 1))}.bg-purple-100{--tw-bg-opacity: 1;background-color:rgb(243 232 255 / var(--tw-bg-opacity, 1))}.bg-purple-50{--tw-bg-opacity: 1;background-color:rgb(250 245 255 / var(--tw-bg-opacity, 1))}.bg-red-100{--tw-bg-opacity: 1;background-color:rgb(254 226 226 / var(--tw-bg-opacity, 1))}.bg-red-50{--tw-bg-opacity: 1;background-color:rgb(254 242 242 / var(--tw-bg-opacity, 1))}.bg-teal-100{--tw-bg-opacity: 1;background-color:rgb(204 251 241 / var(--tw-bg-opacity, 1))}.bg-teal-50{--tw-bg-opacity: 1;background-color:rgb(240 253 250 / var(--tw-bg-opacity, 1))}.bg-teal-500{--tw-bg-opacity: 1;background-color:rgb(49 151 149 / var(--tw-bg-opacity, 1))}.bg-teal-600{--tw-bg-opacity: 1;background-color:rgb(13 148 136 / var(--tw-bg-opacity, 1))}.bg-text-tertiary{--tw-bg-opacity: 1;background-color:rgb(100 116 139 / var(--tw-bg-opacity, 1))}.bg-white{--tw-bg-opacity: 1;background-color:rgb(255 255 255 / var(--tw-bg-opacity, 1))}.bg-gradient-to-br{background-image:linear-gradient(to bottom right,var(--tw-gradient-stops))}.from-teal-50{--tw-gradient-from: #f0fdfa var(--tw-gradient-from-position);--tw-gradient-to: rgb(240 253 250 / 0) var(--tw-gradient-to-position);--tw-gradient-stops: var(--tw-gradient-from), var(--tw-gradient-to)}.to-white{--tw-gradient-to: #fff var(--tw-gradient-to-position)}.object-cover{-o-object-fit:cover;object-fit:cover}.p-1{padding:.25rem}.p-12{padding:3rem}.p-2{padding:.5rem}.p-2\.5{padding:.625rem}.p-3{padding:.75rem}.p-4{padding:1rem}.p-5{padding:1.25rem}.p-6{padding:1.5rem}.p-8{padding:2rem}.px-2{padding-left:.5rem;padding-right:.5rem}.px-3{padding-left:.75rem;padding-right:.75rem}.px-4{padding-left:1rem;padding-right:1rem}.px-5{padding-left:1.25rem;padding-right:1.25rem}.px-6{padding-left:1.5rem;padding-right:1.5rem}.px-8{padding-left:2rem;padding-right:2rem}.py-0\.5{padding-top:.125rem;padding-bottom:.125rem}.py-1{padding-top:.25rem;padding-bottom:.25rem}.py-1\.5{padding-top:.375rem;padding-bottom:.375rem}.py-12{padding-top:3rem;padding-bottom:3rem}.py-16{padding-top:4rem;padding-bottom:4rem}.py-2{padding-top:.5rem;padding-bottom:.5rem}.py-3{padding-top:.75rem;padding-bottom:.75rem}.py-4{padding-top:1rem;padding-bottom:1rem}.pb-2{padding-bottom:.5rem}.pb-3{padding-bottom:.75rem}.pl-10{padding-left:2.5rem}.pl-3{padding-left:.75rem}.pl-8{padding-left:2rem}.pr-3{padding-right:.75rem}.pr-4{padding-right:1rem}.pt-3{padding-top:.75rem}.pt-4{padding-top:1rem}.pt-5{padding-top:1.25rem}.pt-6{padding-top:1.5rem}.text-left{text-align:left}.text-center{text-align:center}.text-right{text-align:right}.font-mono{font-family:ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,Liberation Mono,Courier New,monospace}.text-2xl{font-size:1.5rem;line-height:2rem}.text-3xl{font-size:1.875rem;line-height:2.25rem}.text-4xl{font-size:2.25rem;line-height:2.5rem}.text-\[10px\]{font-size:10px}.text-\[11px\]{font-size:11px}.text-\[9px\]{font-size:9px}.text-base{font-size:1rem;line-height:1.5rem}.text-lg{font-size:1.125rem;line-height:1.75rem}.text-sm{font-size:.875rem;line-height:1.25rem}.text-xl{font-size:1.25rem;line-height:1.75rem}.text-xs{font-size:.75rem;line-height:1rem}.font-bold{font-weight:700}.font-medium{font-weight:500}.font-normal{font-weight:400}.font-semibold{font-weight:600}.uppercase{text-transform:uppercase}.italic{font-style:italic}.leading-none{line-height:1}.leading-relaxed{line-height:1.625}.leading-tight{line-height:1.25}.tracking-\[0\.12em\]{letter-spacing:.12em}.tracking-\[0\.15em\]{letter-spacing:.15em}.tracking-tight{letter-spacing:-.025em}.tracking-wide{letter-spacing:.025em}.tracking-wider{letter-spacing:.05em}.text-amber-500{--tw-text-opacity: 1;color:rgb(245 158 11 / var(--tw-text-opacity, 1))}.text-amber-600{--tw-text-opacity: 1;color:rgb(217 119 6 / var(--tw-text-opacity, 1))}.text-blue-600{--tw-text-opacity: 1;color:rgb(37 99 235 / var(--tw-text-opacity, 1))}.text-blue-700{--tw-text-opacity: 1;color:rgb(29 78 216 / var(--tw-text-opacity, 1))}.text-blue-800{--tw-text-opacity: 1;color:rgb(30 64 175 / var(--tw-text-opacity, 1))}.text-gray-300{--tw-text-opacity: 1;color:rgb(209 213 219 / var(--tw-text-opacity, 1))}.text-gray-400{--tw-text-opacity: 1;color:rgb(156 163 175 / var(--tw-text-opacity, 1))}.text-gray-500{--tw-text-opacity: 1;color:rgb(107 114 128 / var(--tw-text-opacity, 1))}.text-gray-600{--tw-text-opacity: 1;color:rgb(75 85 99 / var(--tw-text-opacity, 1))}.text-gray-700{--tw-text-opacity: 1;color:rgb(52 64 84 / var(--tw-text-opacity, 1))}.text-gray-900{--tw-text-opacity: 1;color:rgb(17 24 39 / var(--tw-text-opacity, 1))}.text-green-600{--tw-text-opacity: 1;color:rgb(22 163 74 / var(--tw-text-opacity, 1))}.text-green-800{--tw-text-opacity: 1;color:rgb(22 101 52 / var(--tw-text-opacity, 1))}.text-orange-400{--tw-text-opacity: 1;color:rgb(251 146 60 / var(--tw-text-opacity, 1))}.text-orange-600{--tw-text-opacity: 1;color:rgb(234 88 12 / var(--tw-text-opacity, 1))}.text-purple-600{--tw-text-opacity: 1;color:rgb(147 51 234 / var(--tw-text-opacity, 1))}.text-purple-700{--tw-text-opacity: 1;color:rgb(126 34 206 / var(--tw-text-opacity, 1))}.text-purple-800{--tw-text-opacity: 1;color:rgb(107 33 168 / var(--tw-text-opacity, 1))}.text-red-500{--tw-text-opacity: 1;color:rgb(239 68 68 / var(--tw-text-opacity, 1))}.text-red-600{--tw-text-opacity: 1;color:rgb(220 38 38 / var(--tw-text-opacity, 1))}.text-teal-500{--tw-text-opacity: 1;color:rgb(49 151 149 / var(--tw-text-opacity, 1))}.text-teal-600{--tw-text-opacity: 1;color:rgb(13 148 136 / var(--tw-text-opacity, 1))}.text-teal-700{--tw-text-opacity: 1;color:rgb(15 118 110 / var(--tw-text-opacity, 1))}.text-teal-800{--tw-text-opacity: 1;color:rgb(17 94 89 / var(--tw-text-opacity, 1))}.text-teal-900{--tw-text-opacity: 1;color:rgb(19 78 74 / var(--tw-text-opacity, 1))}.text-text-primary{--tw-text-opacity: 1;color:rgb(241 245 249 / var(--tw-text-opacity, 1))}.text-text-secondary{--tw-text-opacity: 1;color:rgb(148 163 184 / var(--tw-text-opacity, 1))}.text-text-tertiary{--tw-text-opacity: 1;color:rgb(100 116 139 / var(--tw-text-opacity, 1))}.text-white{--tw-text-opacity: 1;color:rgb(255 255 255 / var(--tw-text-opacity, 1))}.line-through{text-decoration-line:line-through}.opacity-0{opacity:0}.opacity-30{opacity:.3}.shadow{--tw-shadow: 0 1px 3px 0 rgb(0 0 0 / .1), 0 1px 2px -1px rgb(0 0 0 / .1);--tw-shadow-colored: 0 1px 3px 0 var(--tw-shadow-color), 0 1px 2px -1px var(--tw-shadow-color);box-shadow:var(--tw-ring-offset-shadow, 0 0 #0000),var(--tw-ring-shadow, 0 0 #0000),var(--tw-shadow)}.shadow-2xl{--tw-shadow: 0 25px 50px -12px rgb(0 0 0 / .25);--tw-shadow-colored: 0 25px 50px -12px var(--tw-shadow-color);box-shadow:var(--tw-ring-offset-shadow, 0 0 #0000),var(--tw-ring-shadow, 0 0 #0000),var(--tw-shadow)}.shadow-lg{--tw-shadow: 0 10px 15px -3px rgb(0 0 0 / .1), 0 4px 6px -4px rgb(0 0 0 / .1);--tw-shadow-colored: 0 10px 15px -3px var(--tw-shadow-color), 0 4px 6px -4px var(--tw-shadow-color);box-shadow:var(--tw-ring-offset-shadow, 0 0 #0000),var(--tw-ring-shadow, 0 0 #0000),var(--tw-shadow)}.shadow-md{--tw-shadow: 0 4px 6px -1px rgb(0 0 0 / .1), 0 2px 4px -2px rgb(0 0 0 / .1);--tw-shadow-colored: 0 4px 6px -1px var(--tw-shadow-color), 0 2px 4px -2px var(--tw-shadow-color);box-shadow:var(--tw-ring-offset-shadow, 0 0 #0000),var(--tw-ring-shadow, 0 0 #0000),var(--tw-shadow)}.shadow-sm{--tw-shadow: 0 1px 2px 0 rgb(0 0 0 / .05);--tw-shadow-colored: 0 1px 2px 0 var(--tw-shadow-color);box-shadow:var(--tw-ring-offset-shadow, 0 0 #0000),var(--tw-ring-shadow, 0 0 #0000),var(--tw-shadow)}.ring{--tw-ring-offset-shadow: var(--tw-ring-inset) 0 0 0 var(--tw-ring-offset-width) var(--tw-ring-offset-color);--tw-ring-shadow: var(--tw-ring-inset) 0 0 0 calc(3px + var(--tw-ring-offset-width)) var(--tw-ring-color);box-shadow:var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow, 0 0 #0000)}.filter{filter:var(--tw-blur) var(--tw-brightness) var(--tw-contrast) var(--tw-grayscale) var(--tw-hue-rotate) var(--tw-invert) var(--tw-saturate) var(--tw-sepia) var(--tw-drop-shadow)}.backdrop-blur-sm{--tw-backdrop-blur: blur(4px);-webkit-backdrop-filter:var(--tw-backdrop-blur) var(--tw-backdrop-brightness) var(--tw-backdrop-contrast) var(--tw-backdrop-grayscale) var(--tw-backdrop-hue-rotate) var(--tw-backdrop-invert) var(--tw-backdrop-opacity) var(--tw-backdrop-saturate) var(--tw-backdrop-sepia);backdrop-filter:var(--tw-backdrop-blur) var(--tw-backdrop-brightness) var(--tw-backdrop-contrast) var(--tw-backdrop-grayscale) var(--tw-backdrop-hue-rotate) var(--tw-backdrop-invert) var(--tw-backdrop-opacity) var(--tw-backdrop-saturate) var(--tw-backdrop-sepia)}.transition{transition-property:color,background-color,border-color,text-decoration-color,fill,stroke,opacity,box-shadow,transform,filter,backdrop-filter;transition-timing-function:cubic-bezier(.4,0,.2,1);transition-duration:.15s}.transition-all{transition-property:all;transition-timing-function:cubic-bezier(.4,0,.2,1);transition-duration:.15s}.transition-colors{transition-property:color,background-color,border-color,text-decoration-color,fill,stroke;transition-timing-function:cubic-bezier(.4,0,.2,1);transition-duration:.15s}.transition-opacity{transition-property:opacity;transition-timing-function:cubic-bezier(.4,0,.2,1);transition-duration:.15s}.duration-200{transition-duration:.2s}.duration-300{transition-duration:.3s}.duration-500{transition-duration:.5s}.duration-700{transition-duration:.7s}.ease-out{transition-timing-function:cubic-bezier(0,0,.2,1)}:root{--color-page-bg: #0A0F1C;--color-card-bg: #111827;--color-card-bg-alt: #1E293B;--color-text-primary: #F1F5F9;--color-text-secondary: #94A3B8;--color-text-tertiary: #64748B;--color-border-light: #1E293B;--color-border-medium: #334155;--color-primary: #319795;--color-primary-light: rgba(49, 151, 149, .2);--color-success: #22C55E;--color-warning: #FEC601;--color-error: #EF4444;--color-rules-blue: #3B82F6;--color-cosilico-cyan: #06B6D4;--color-pe-teal: #319795;--color-accent-purple: #7C3AED;--color-accent-orange: #EA580C;--color-highlight: #D97706}html{scroll-behavior:smooth}html,body,#root{margin:0;padding:0;background-color:#0a0f1c;color:#f1f5f9;font-family:Inter,system-ui,sans-serif;-webkit-font-smoothing:antialiased}.scroll-reveal{opacity:0;transform:translateY(16px);transition:opacity .5s cubic-bezier(.16,1,.3,1),transform .5s cubic-bezier(.16,1,.3,1)}.section-visible .scroll-reveal{opacity:1;transform:translateY(0)}.scroll-reveal-left{opacity:0;transform:translate(-16px);transition:opacity .5s cubic-bezier(.16,1,.3,1),transform .5s cubic-bezier(.16,1,.3,1)}.section-visible .scroll-reveal-left{opacity:1;transform:translate(0)}.scroll-reveal-scale{opacity:0;transform:scale(.85);transition:opacity .5s cubic-bezier(.16,1,.3,1),transform .5s cubic-bezier(.16,1,.3,1)}.section-visible .scroll-reveal-scale{opacity:1;transform:scale(1)}.scroll-reveal-width{transform:scaleX(0);transition:transform .6s cubic-bezier(.16,1,.3,1)}.section-visible .scroll-reveal-width{transform:scaleX(1)}.glow-rules{box-shadow:0 0 20px #3b82f626,0 0 40px #3b82f60d}.glow-cosilico{box-shadow:0 0 20px #06b6d426,0 0 40px #06b6d40d}.glow-pe{box-shadow:0 0 20px #31979526,0 0 40px #3197950d}.glow-highlight{box-shadow:0 0 20px #d9770626,0 0 40px #d977060d}.glow-accent{box-shadow:0 0 15px #3197951f}::-webkit-scrollbar{width:6px}::-webkit-scrollbar-track{background:#0a0f1c}::-webkit-scrollbar-thumb{background:#334155;border-radius:3px}::-webkit-scrollbar-thumb:hover{background:#475569}.card-hover{transition:box-shadow .2s ease,transform .2s ease}.card-hover:hover{box-shadow:0 4px 12px #0000004d,0 2px 6px #0003;transform:translateY(-1px)}.hover\:border-gray-300:hover{--tw-border-opacity: 1;border-color:rgb(209 213 219 / var(--tw-border-opacity, 1))}.hover\:border-teal-300:hover{--tw-border-opacity: 1;border-color:rgb(94 234 212 / var(--tw-border-opacity, 1))}.hover\:bg-card-bg-alt:hover{--tw-bg-opacity: 1;background-color:rgb(30 41 59 / var(--tw-bg-opacity, 1))}.hover\:bg-gray-100:hover{--tw-bg-opacity: 1;background-color:rgb(243 244 246 / var(--tw-bg-opacity, 1))}.hover\:bg-gray-200:hover{--tw-bg-opacity: 1;background-color:rgb(229 231 235 / var(--tw-bg-opacity, 1))}.hover\:bg-gray-400:hover{--tw-bg-opacity: 1;background-color:rgb(156 163 175 / var(--tw-bg-opacity, 1))}.hover\:bg-gray-50:hover{--tw-bg-opacity: 1;background-color:rgb(249 250 251 / var(--tw-bg-opacity, 1))}.hover\:bg-red-50:hover{--tw-bg-opacity: 1;background-color:rgb(254 242 242 / var(--tw-bg-opacity, 1))}.hover\:bg-teal-50\/50:hover{background-color:#f0fdfa80}.hover\:bg-teal-700:hover{--tw-bg-opacity: 1;background-color:rgb(15 118 110 / var(--tw-bg-opacity, 1))}.hover\:bg-text-secondary:hover{--tw-bg-opacity: 1;background-color:rgb(148 163 184 / var(--tw-bg-opacity, 1))}.hover\:bg-text-tertiary:hover{--tw-bg-opacity: 1;background-color:rgb(100 116 139 / var(--tw-bg-opacity, 1))}.hover\:text-gray-700:hover{--tw-text-opacity: 1;color:rgb(52 64 84 / var(--tw-text-opacity, 1))}.hover\:text-gray-900:hover{--tw-text-opacity: 1;color:rgb(17 24 39 / var(--tw-text-opacity, 1))}.hover\:text-primary:hover{--tw-text-opacity: 1;color:rgb(49 151 149 / var(--tw-text-opacity, 1))}.hover\:text-teal-400:hover{--tw-text-opacity: 1;color:rgb(45 212 191 / var(--tw-text-opacity, 1))}.hover\:text-teal-600:hover{--tw-text-opacity: 1;color:rgb(13 148 136 / var(--tw-text-opacity, 1))}.hover\:text-teal-700:hover{--tw-text-opacity: 1;color:rgb(15 118 110 / var(--tw-text-opacity, 1))}.hover\:text-teal-900:hover{--tw-text-opacity: 1;color:rgb(19 78 74 / var(--tw-text-opacity, 1))}.hover\:text-text-secondary:hover{--tw-text-opacity: 1;color:rgb(148 163 184 / var(--tw-text-opacity, 1))}.hover\:shadow-md:hover{--tw-shadow: 0 4px 6px -1px rgb(0 0 0 / .1), 0 2px 4px -2px rgb(0 0 0 / .1);--tw-shadow-colored: 0 4px 6px -1px var(--tw-shadow-color), 0 2px 4px -2px var(--tw-shadow-color);box-shadow:var(--tw-ring-offset-shadow, 0 0 #0000),var(--tw-ring-shadow, 0 0 #0000),var(--tw-shadow)}.hover\:shadow-sm:hover{--tw-shadow: 0 1px 2px 0 rgb(0 0 0 / .05);--tw-shadow-colored: 0 1px 2px 0 var(--tw-shadow-color);box-shadow:var(--tw-ring-offset-shadow, 0 0 #0000),var(--tw-ring-shadow, 0 0 #0000),var(--tw-shadow)}.focus\:border-teal-500:focus{--tw-border-opacity: 1;border-color:rgb(49 151 149 / var(--tw-border-opacity, 1))}.focus\:border-transparent:focus{border-color:transparent}.focus\:outline-none:focus{outline:2px solid transparent;outline-offset:2px}.focus\:ring-2:focus{--tw-ring-offset-shadow: var(--tw-ring-inset) 0 0 0 var(--tw-ring-offset-width) var(--tw-ring-offset-color);--tw-ring-shadow: var(--tw-ring-inset) 0 0 0 calc(2px + var(--tw-ring-offset-width)) var(--tw-ring-color);box-shadow:var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow, 0 0 #0000)}.focus\:ring-teal-500:focus{--tw-ring-opacity: 1;--tw-ring-color: rgb(49 151 149 / var(--tw-ring-opacity, 1))}.group:hover .group-hover\:text-teal-600{--tw-text-opacity: 1;color:rgb(13 148 136 / var(--tw-text-opacity, 1))}.group:hover .group-hover\:opacity-100{opacity:1}@media(min-width:768px){.md\:-right-10{right:-2.5rem}.md\:bottom-auto{bottom:auto}.md\:left-1\/2{left:50%}.md\:right-auto{right:auto}.md\:top-8{top:2rem}.md\:block{display:block}.md\:flex{display:flex}.md\:h-12{height:3rem}.md\:h-24{height:6rem}.md\:max-h-\[calc\(100vh-4rem\)\]{max-height:calc(100vh - 4rem)}.md\:w-10{width:2.5rem}.md\:w-12{width:3rem}.md\:w-24{width:6rem}.md\:w-full{width:100%}.md\:max-w-2xl{max-width:42rem}.md\:-translate-x-1\/2{--tw-translate-x: -50%;transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skew(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}.md\:grid-cols-2{grid-template-columns:repeat(2,minmax(0,1fr))}.md\:grid-cols-3{grid-template-columns:repeat(3,minmax(0,1fr))}.md\:grid-cols-4{grid-template-columns:repeat(4,minmax(0,1fr))}.md\:grid-cols-\[160px_1fr\]{grid-template-columns:160px 1fr}.md\:flex-row-reverse{flex-direction:row-reverse}.md\:flex-col{flex-direction:column}.md\:items-end{align-items:flex-end}.md\:gap-1{gap:.25rem}.md\:gap-10{gap:2.5rem}.md\:px-16{padding-left:4rem;padding-right:4rem}.md\:py-24{padding-top:6rem;padding-bottom:6rem}.md\:text-right{text-align:right}.md\:text-3xl{font-size:1.875rem;line-height:2.25rem}.md\:text-4xl{font-size:2.25rem;line-height:2.5rem}.md\:text-5xl{font-size:3rem;line-height:1}.md\:text-base{font-size:1rem;line-height:1.5rem}.md\:text-lg{font-size:1.125rem;line-height:1.75rem}.md\:text-xl{font-size:1.25rem;line-height:1.75rem}}@media(min-width:1024px){.lg\:grid-cols-2{grid-template-columns:repeat(2,minmax(0,1fr))}.lg\:grid-cols-3{grid-template-columns:repeat(3,minmax(0,1fr))}.lg\:text-6xl{font-size:3.75rem;line-height:1}} diff --git a/app/dist/assets/logos/cosilico-icon.svg b/app/dist/assets/logos/cosilico-icon.svg new file mode 100644 index 0000000..da2cdc4 --- /dev/null +++ b/app/dist/assets/logos/cosilico-icon.svg @@ -0,0 +1,28 @@ + + + + + + + + + + + + + + diff --git a/app/dist/assets/logos/pe-icon.svg b/app/dist/assets/logos/pe-icon.svg new file mode 100644 index 0000000..c6d967c --- /dev/null +++ b/app/dist/assets/logos/pe-icon.svg @@ -0,0 +1,9 @@ + + + + + + + + + diff --git a/app/dist/assets/logos/rf-icon.svg b/app/dist/assets/logos/rf-icon.svg new file mode 100644 index 0000000..6bad155 --- /dev/null +++ b/app/dist/assets/logos/rf-icon.svg @@ -0,0 +1,13 @@ + + + + + + + + + + + + + diff --git a/app/dist/assets/team/daniel-feenberg.jpg b/app/dist/assets/team/daniel-feenberg.jpg new file mode 100644 index 0000000..7ac6dc3 Binary files /dev/null and b/app/dist/assets/team/daniel-feenberg.jpg differ diff --git a/app/dist/assets/team/max-ghenis.png b/app/dist/assets/team/max-ghenis.png new file mode 100644 index 0000000..867df32 Binary files /dev/null and b/app/dist/assets/team/max-ghenis.png differ diff --git a/app/dist/assets/team/pavel-makarchuk.jpeg b/app/dist/assets/team/pavel-makarchuk.jpeg new file mode 100644 index 0000000..cb4af1b Binary files /dev/null and b/app/dist/assets/team/pavel-makarchuk.jpeg differ diff --git a/app/dist/ecosystem-map-cosilico.html b/app/dist/ecosystem-map-cosilico.html new file mode 100644 index 0000000..b4ac6e5 --- /dev/null +++ b/app/dist/ecosystem-map-cosilico.html @@ -0,0 +1,586 @@ + + + + + + Cosilico Ecosystem Map | POSE Winter 2026 + + + + +
+
+

Cosilico ecosystem map

+ NSF POSE · Winter 2026 +
+ +
+ + + + + + + + + + + + + + + + + + + + + + + + + + Arrow types + + revenue + + ideas / feedback + + technical / API + + data / analysis + + influence + + + + + + Government + + + + Commercial / Financial + + + + AI / Tech + + + + Data / Platforms + + + + Funding + + + + + + + Implement tax rules accurately + Calculate eligibility + (vs Chainbridge, Deloitte) + + + + + Tax calcs, imputation, + ACA subsidies + ($0.02/household API) + + + + + RLVR signals, function calling + (verifiable policy ground truth) + + + + + 200+ attributes from minimal input + (Microplex enrichment) + + + + + + Cosilico + Public Benefit Corp — production infrastructure + + + + Cosilico Rules + Deterministic calculations + + + Rules API + + + Verifier API (RLVR) + + + Eligibility engines + + + + Cosilico Simulate + Statistical modeling + + + Microsim API + + + Imputation + + + Microplex + + + Open source core (AGPL) · Hosted API (paid) + + + + + + + + + + + 3 + AI labs + Research Scientist, Product Lead + (Anthropic, OpenAI, DeepMind) + compute + revenue + + + + + + + 2 + AI agent builders + Engineer, PM at enterprise AI + (Enterprise AI vendors) + $10B+ enterprise AI mkt + + + + + + + + + 3 + State revenue departments + IT Director, Tax Administrator + (State tax agencies) + $1B+ state IT contracts + vs Chainbridge, Corticon + + + + + + + 3 + Benefits agencies + Program Dir, Systems Mgr + (SNAP, TANF, Medicaid) + $500M+ eligibility contracts + vs Deloitte, Accenture + + + + + + + + + 3 + Tax software vendors + PM, Engineer + (TurboTax, H&R Block, TaxAct) + $90B+ tax software mkt + + + + + + + 2 + Financial planners + CFP, Wealth Mgr, Robo-advisor PM + (Betterment, Wealthfront) + $5B+ wealth tech mkt + + + + + + + 2 + Banks / lenders + CDO, Underwriting Lead + (Banks, mortgage, fintechs) + $100B+ consumer lending + + + + + + + 2 + Insurance / actuaries + Actuary, Compliance Officer + (Health insurers, ACA mktplace) + $50B+ health ins admin + + + + + + + + + 2 + Marketing / data platforms + Data Science Lead, Audience PM + (LiveRamp, Acxiom) + $2.4B+ data enrichment mkt + + + + + + + 2 + Benefit platform builders + PM, Engineer at screeners + (Benefits screeners, fintech) + API + feedback + + + + + + + + + 2 + VC / Impact investors + VC Partner, Impact Investor + (Impact VCs, ESG funds) + investment capital + + + + + + + 2 + Quant finance / Econ sim + Quant Researcher, Economist + (Barclays, hedge funds, QURI) + $500B+ quant finance + + + + + + + compute + $ + + + + Verifier API + + + + API $ + + + + citations + + + + paid contracts + + + + auditable rules + + + + contracts + + + + eligibility engine + + + + $0.02/hh + + + + Rules API + + + + API $ + + + + tax calcs + + + + API $ + + + + Microplex + + + + API $ + + + + ACA rules + + + + API $ + + + + Microplex data + + + + $ + feedback + + + + eligibility API + + + + investment $ + + + + impact metrics + + + + API $ + + + + microsim + + + + + Assumptions to test + 1. Gov agencies buy OSS rules? + 2. $0.02/hh beats internal build? + 3. AI labs pay for verifier? + 4. Microplex accurate enough? + + + + + Business model + Open source core (AGPL) + Hosted API: pay-per-call + Enterprise: contract pricing + + + + + Two product lines + Rules: statute → code (9 segments) + Simulate: data → inference (3 segments) + Most segments touch Rules + + + +
+ +
+ + + + +
+ Cosilico PBC + · NSF Award #4373 +
+
+
+ + diff --git a/app/dist/ecosystem-map-policyengine.html b/app/dist/ecosystem-map-policyengine.html new file mode 100644 index 0000000..e5229fa --- /dev/null +++ b/app/dist/ecosystem-map-policyengine.html @@ -0,0 +1,604 @@ + + + + + + PolicyEngine Ecosystem Map | POSE Winter 2026 + + + + +
+
+
+

PolicyEngine ecosystem map

+
"Tell the story" — certified Cosilico partner, focused research org
+
+ NSF POSE · Winter 2026 +
+ +
+ + + + + + + + + + + + + + + + + + + + + + + Arrow types + + ideas / feedback + + funding + + technical / code + + data / analysis + + influence + + + + + + Gov / Validation + + + + Funding + + + + Users / Research + + + + Influence + + + + Contributors / Team + + + + Risks + + + + + + Publish research papers + (citations, tenure) + + + + + Score reforms quickly + (faster than competitors) + + + + + Cite credible analysis + (back advocacy) + + + + + Validate against CBO/JCT + (transparency) + + + + + Foundations: policy research + Clients: custom analysis + NSF: infrastructure + (different value exchanges) + + + + + Fact-check policy claims + (embeddable interactives) + + + + + PolicyEngine + 501(c)(3) / UK Charity — "Tell the story" + + + + policyengine-us + + + policyengine-uk + + + policyengine-core + + + + CPS microdata + + + FRS microdata + + enhanced data + + + + policyengine.org (web app) + + + custom interactives / dashboards + + + + REST API / policyengine.py + + + + NBER, Atlanta Fed, Brookings + + + + Policy analysis and reports (quantitative storytelling) + + + Models · Data · Apps · API · Research + Open source (AGPL) — uses Cosilico infrastructure + + + + + + + + + 7 + Government Economists + Budget Analyst, Policy Economist + (CBO, JCT, Treasury, SSA) + Validate, inform scoring + + + + + + + 3 + Policymakers / Staffers + Legislative Dir, Committee Staff + (Hill offices, state leg) + Quick what-if, constituent Qs + + + + + + + 5 + Policy Foundations + (Arnold Ventures, Pritzker) + Grants for research output + + + + + + + 3 + Research Clients + (CRFB, Niskanen, think tanks) + Paid analysis / custom tools + + + + + + + 2 + Government Grants + (NSF POSE) + Infrastructure funding + + + + + + + 3 + Data Journalists + Reporter, Data Editor (NYT, WaPo) + Fact-check, build interactives + + + + + + + 7 + Academic Researchers + Professor, PhD, Postdoc + (Econ, Public Policy depts) + Publications, grants, teaching + + + + + + + 10 + Think Tank Analysts + Policy Analyst, Fellow, Director + (CRFB, Niskanen, Urban, AEI) + Fast, credible methodology + + + + + + + 5 + Policy Advocates + Exec Director, Comms Dir + (CBPP, advocacy orgs) + Credible backing, media reach + + + + + + + 2 + Policymakers (reach) + Leg. Directors, Committee Staff + (Congress, state legislatures) + Legitimacy, use cases + + + + + + + 2 + OSS Contributors + Software Eng, Data Scientist + (External volunteers) + Portfolio, impact, learning + + + + + + + 2 + PolicyEngine Team + Analyst, Engineer (Core team) + Build models, demo via research + + + + + + + 1 + Data/Tool Partners + CTO, Product Lead (Census, IRS) + Data sharing, co-develop + + + + + + + 2 + Non-Users (Potential) + Using alternatives (TRIM3, etc) + Why not? Cost? Trust? + + + + + + + 1 + Competitors + CEO/CTO of rival tools + Collaborate? + + + + + + + 0 + Misusers + Bad-faith analysts + Cherry-pick results + + + + + + + $ grants + + + + research + + + + fees + + + + NSF $ + + + + validate + + + methodology + + + + what-if + + + + legitimacy + + + + ideas + + + tools, docs + + + + reports + + + feedback + + + + analysis + + + amplify + + + + influence + + + + PRs, fixes + + + + + + + data + + + + embeds + + + + barriers? + + + + + Partnership model + Certified Cosilico partner + (Salesforce-style accreditation) + Differentiates via research + + + + + Assumptions to test: + Think tanks want OSS? + Gov economists engage? + Clients pay for analysis? + Contributors exist? + + + +
+ +
+ + + +
+ policyengine.org + · NSF Award #4373 +
+
+
+ + diff --git a/app/dist/ecosystem-map-rules-foundation.html b/app/dist/ecosystem-map-rules-foundation.html new file mode 100644 index 0000000..8c77bdf --- /dev/null +++ b/app/dist/ecosystem-map-rules-foundation.html @@ -0,0 +1,484 @@ + + + + + + Rules Foundation Ecosystem Map | POSE Winter 2026 + + + + +
+
+
+

Rules Foundation ecosystem map

+
501(c)(3) — "Encode the law"
+
+ NSF POSE · Winter 2026 +
+ +
+ + + + + + + + + + + + + + + + + + + + + + + Arrow types + + ideas / feedback + + funding + + technical / code + + data / analysis + + influence + + + + + + Gov / Validation + + + + Funding + + + + Technical partners + + + + Research + + + + Contributors + + + + Integrators + + + + + + Validate statute encodings + against official interpretations + (transparency, auditability) + + + + + RLVR training signals + Policy reasoning benchmarks + (verifiable ground truth) + + + + + Computational law research + Legal formalization papers + (citations, datasets) + + + + + Fund public legal infra + Open-source civic tech + (measurable coverage) + + + + + + + + Rules Foundation + + + + Source document archive + Statutes, regulations → Akoma Ntoso XML + + + + .rac DSL + Encoding format for law + + + Reference compiler + Open-source spec impl + + + + AutoRAC validation harness + 3-tier: CI tests → Oracle checks → LLM reviewers + Statute-linked test suites with citation chains + + + + Ground truth test data + Open benchmarks for AI evaluation / RLVR + + + Archive · DSL · Validation · Benchmarks + All open source · Multi-stakeholder governance + + + + + + + + + 5 + Gov standards bodies + Tax Law Specialist, Reg. Counsel + (IRS, SSA, CMS, Treasury OTA) + Validate statute interpretations + Give: official guidance + + + + + + + 3 + AI labs + Research Scientist, Product Lead + (Anthropic, OpenAI, DeepMind) + Policy-aware AI, no hallucination + Give: compute, research collab + + + + + + + 3 + Academic researchers + Law Prof, Legal Informatics + (Stanford CodeX, MIT, law schools) + Computational law research + Give: validation, citations + + + + + + + 2 + Encoding community + Lawyer, Policy Analyst, Engineer + (Volunteers, pro bono, civic tech) + Review and improve encodings + Give: encoding review, interpretation + + + + + + + 2 + Downstream consumers + CTO, Product Lead, Eng Manager + (Cosilico, PolicyEngine, others) + Build on tested rule encodings + Give: feedback, bug reports + + + + + + + 2 + Grants / Foundations + Program Manager, Foundation Dir + (NSF, Sloan, Knight, Ford) + Fund public legal infrastructure + Give: grant funding + + + + + + + interpretations + + + + audit trail + + + + compute + + + + ground truth + + + + validation + + + datasets + + + + encoding PRs + + + + recognition + + + + encodings + + + + feedback + + + + $ grants + + + + impact reports + + + + + + + + + Assumptions to test + 1. Agencies share interpretations? + 2. AI labs invest in ground truth? + 3. Multi-stakeholder governance? + 4. Automation vs community? + + + + + + + + + Analogy + "OpenStreetMap for law" + Neutral, community-maintained + + + + + Scope: literal and bounded + Encode the law as written + Tooling/products → Cosilico + + + + + Downstream value chain + Cosilico: production compiler + PolicyEngine: policy analysis + AI agents: grounded reasoning + All consume RF encodings + + + +
+ +
+ + + +
+ Rules Foundation + · NSF POSE · Winter 2026 +
+
+
+ + diff --git a/app/dist/ecosystem-map.html b/app/dist/ecosystem-map.html new file mode 100644 index 0000000..b93a7af --- /dev/null +++ b/app/dist/ecosystem-map.html @@ -0,0 +1,576 @@ + + + + + + PolicyEngine Ecosystem Map | POSE Winter 2026 + + + + +
+
+

PolicyEngine ecosystem map

+ NSF POSE · Winter 2026 +
+ +
+ + + + + + + + + + + + + + + + + + + + + + + Arrow types + + ideas / feedback + + funding + + technical / code + + data / analysis + + influence + + + + + + Gov / Validation + + + + Funding + + + + Users / Research + + + + Integrators + + + + Contributors / Team + + + + Risks + + + + + + Publish research papers + (citations, tenure) + + + + + Score reforms quickly + (faster than competitors) + + + + + Embed eligibility calcs + (no rules engine needed) + + + + + Validate against CBO/JCT + (transparency) + + + + + Foundations: policy research + Clients: custom analysis + NSF: infrastructure + (different value exchanges) + + + + + Fact-check policy claims + (interactives) + + + + + PolicyEngine + + + + policyengine-us + + + policyengine-uk + + + policyengine-core + + + + us-data + + + uk-data + + microdata + + + + policyengine.org (web app) + + + custom interactives + + + + REST API / policyengine.py + + + Models · Data · Apps · API + All open source (AGPL) + + + + + + + + + 10 + Government Economists + Budget Analyst, Policy Economist + (CBO, JCT, Treasury, SSA) + Validate, inform scoring + + + + + + + 5 + Policymakers / Staffers + Legislative Dir, Committee Staff + (Hill offices, state leg) + Quick what-if, constituent Qs + + + + + + + 10 + Policy Foundations + (Arnold, Pritzker) + Big grants → research back + + + + + + + 5 + Research Clients + (CRFB, Niskanen, think tanks) + Paid analysis / custom tools + + + + + + + 5 + Government Grants + (NSF POSE) + Infrastructure funding + + + + + + + 5 + Data Journalists + Reporter, Data Editor (NYT, WaPo) + Fact-check, build interactives + + + + + + + 10 + Academic Researchers + Professor, PhD, Postdoc + (Econ, Public Policy depts) + Publications, grants, teaching + + + + + + + 15 + Think Tank Analysts + Policy Analyst, Fellow, Director + (CRFB, Niskanen, Urban, AEI) + Fast, credible methodology + + + + + + + 5 + Benefit Platform Builders + Product Manager, Engineer + (Benefits screeners, fintech) + API integration, auto-updates + + + + + + + 10 + Policy Advocates + Exec Director, Comms Dir + (CBPP, advocacy orgs) + Credible backing, media reach + + + + + + + 5 + OSS Contributors + Software Eng, Data Scientist + (External volunteers) + Portfolio, impact, learning + + + + + + + 10 + PolicyEngine Team + Analyst, Engineer (Core team) + Build models, demo usage + + + + + + + 5 + Data/Tool Partners + CTO, Product Lead (Census, IRS) + Data sharing, co-develop + + + + + + + 10 + Non-Users (Potential) + Using alternatives (TRIM3, etc) + Why not? Cost? Trust? + + + + + + + 3 + Competitors + CEO/CTO of rival tools + Collaborate? + + + + + + + 0 + Misusers + Bad-faith analysts + Cherry-pick results + + + + + + + $ grants + + + research + + + NSF $ + + + + validate + + + methodology + + + + what-if analysis + + + + ideas + + + docs + + + + reports + + + feedback + + + + API + + + + analysis + + + amplify + + + + PRs, fixes + + + + + + + data + + + + embeds + + + + barriers? + + + + + How can we scale? + • Champions / Evangelists + • Citations as validation + • Training workshops + + + + + Assumptions to test: + • Think tanks want OSS? + • Platforms will use API? + • Gov economists engage? + • Contributors exist? + + + +
+ +
+ + + +
+ policyengine.org + · NSF Award #4373 +
+
+
+ + diff --git a/app/dist/ecosystem-maps.html b/app/dist/ecosystem-maps.html new file mode 100644 index 0000000..e354169 --- /dev/null +++ b/app/dist/ecosystem-maps.html @@ -0,0 +1,127 @@ + + + + + + Ecosystem maps | POSE Winter 2026 + + + + + + + diff --git a/app/index.html b/app/dist/index.html similarity index 65% rename from app/index.html rename to app/dist/index.html index 0c4f36d..06cc6ab 100644 --- a/app/index.html +++ b/app/dist/index.html @@ -5,9 +5,10 @@ app + +
- diff --git a/app/public/vite.svg b/app/dist/vite.svg similarity index 100% rename from app/public/vite.svg rename to app/dist/vite.svg diff --git a/app/eslint.config.js b/app/eslint.config.js index 5e6b472..a1a333c 100644 --- a/app/eslint.config.js +++ b/app/eslint.config.js @@ -1,19 +1,17 @@ import js from '@eslint/js' import globals from 'globals' import reactHooks from 'eslint-plugin-react-hooks' -import reactRefresh from 'eslint-plugin-react-refresh' import tseslint from 'typescript-eslint' import { defineConfig, globalIgnores } from 'eslint/config' export default defineConfig([ - globalIgnores(['dist']), + globalIgnores(['.next']), { files: ['**/*.{ts,tsx}'], extends: [ js.configs.recommended, tseslint.configs.recommended, reactHooks.configs.flat.recommended, - reactRefresh.configs.vite, ], languageOptions: { ecmaVersion: 2020, diff --git a/app/generate-pptx.mjs b/app/generate-pptx.mjs index d3aabc5..c08379d 100644 --- a/app/generate-pptx.mjs +++ b/app/generate-pptx.mjs @@ -1,159 +1,184 @@ import pptxgen from 'pptxgenjs'; - -// Colors -const teal = '319795'; -const purple = '7C3AED'; -const blue = '2563EB'; -const orange = 'EA580C'; -const green = '16A34A'; - -// Team photos -const teamPhotos = { - 'Max Ghenis': '/tmp/max-ghenis.png', - 'Pavel Makarchuk': '/tmp/pavel-makarchuk.jpeg', - 'Daniel Feenberg': '/tmp/daniel-feenberg.jpg', -}; - -// Common slide generators -function addTeamSlide(pptx) { - const slide = pptx.addSlide(); - slide.addText('PolicyEngine POSE Team', { x: 0.5, y: 0.3, w: '90%', fontSize: 32, bold: true, color: '1F2937' }); - - const teamData = [ - { name: 'Max Ghenis', role: 'Co-Founder & CEO', bio: 'MS Economics' }, - { name: 'Pavel Makarchuk', role: 'Chief of Staff', bio: 'Led development of PolicyEngine US state-level tax-benefit model' }, - { name: 'Daniel Feenberg', role: 'Advisor', bio: 'PhD Economics, created TAXSIM' }, - ]; - - teamData.forEach((member, i) => { - const xPos = 0.8 + i * 3.0; - // Add photo - slide.addImage({ - path: teamPhotos[member.name], - x: xPos + 0.5, - y: 1.2, - w: 1.5, - h: 1.5, - rounding: true +import puppeteer from 'puppeteer'; +import { spawn } from 'child_process'; +import { mkdirSync, rmSync, existsSync } from 'fs'; +import { setTimeout as sleep } from 'timers/promises'; + +const SCREENSHOT_DIR = '/tmp/pose-slides'; +const OUTPUT_FILE = new URL('./PolicyEngine_POSE_Presentation.pptx', import.meta.url).pathname; +const VIEWPORT = { width: 1440, height: 900, deviceScaleFactor: 2 }; + +// Section IDs matching page.tsx order +const SECTIONS = [ + 'who-we-are', 'problem', 'fourth-option', 'cold-open', 'how-we-operate', + 'what-we-do', 'journey-begins', 'tension-week4', 'tension-week5', + 'stack-reprise', 'three-org-stack', 'meet-the-three', + 'aha-moment', // ecosystem — will capture 3 steps separately + 'road-ahead', 'the-close', + 'voices', 'impact-goals', 'partners', 'canvas', 'canvas-detail', + 'governance', 'gov-detail', 'competitive', 'highlights', 'market', +]; + +// Port: use existing dev server or start one +const DEV_PORT = process.env.PORT || '5174'; +const DEV_URL = `http://localhost:${DEV_PORT}`; + +function startDevServer() { + return new Promise((resolve, reject) => { + const proc = spawn('bunx', ['next', 'dev', '--port', DEV_PORT], { + cwd: new URL('.', import.meta.url).pathname, + stdio: ['ignore', 'pipe', 'pipe'], }); - slide.addText(member.name, { x: xPos, y: 2.9, w: 2.5, fontSize: 16, bold: true, color: '1F2937', align: 'center' }); - slide.addText(member.role, { x: xPos, y: 3.3, w: 2.5, fontSize: 12, color: teal, align: 'center' }); - slide.addText(member.bio, { x: xPos, y: 3.7, w: 2.5, fontSize: 9, color: '6B7280', align: 'center', wrap: true }); + let started = false; + const onData = (chunk) => { + const text = chunk.toString(); + if (!started && (text.includes('Local:') || text.includes('Ready'))) { + started = true; + resolve(proc); + } + }; + proc.stdout.on('data', onData); + proc.stderr.on('data', onData); + proc.on('error', reject); + setTimeout(() => { if (!started) reject(new Error('Dev server timeout')); }, 30000); }); - return slide; } -function addThesisSlide(pptx) { - const slide = pptx.addSlide(); - slide.addText('4373 PolicyEngine | OSE Thesis', { x: 0.5, y: 0.2, w: '90%', fontSize: 24, bold: true, color: '1F2937' }); - const thesisLines = [ - { prefix: 'FOR', text: 'economists, policy researchers, think tanks, journalists, advocates, and developers building benefit access tools', color: teal }, - { prefix: 'WHO NEED TO', text: 'understand taxes and benefits for households or analyze policy impacts on populations', color: purple }, - { prefix: 'THE STATUS QUO', text: 'proprietary microsimulation tools', color: 'DC2626', suffix: 'FAILS DUE TO high cost, limited accessibility, and restrictions in government/secure environments, CAUSING policy decisions without rigorous distributional analysis.' }, - { prefix: 'WE WILL ESTABLISH A MANAGING ORGANIZATION FOR', text: 'open-source fiscal policy simulation', color: blue }, - { prefix: 'TO DELIVER', text: 'PolicyEngine models, web apps, and APIs', color: blue, suffix: 'WITH AGPL license and transparent governance.' }, - { prefix: 'WE WILL GROW THE COMMUNITY THROUGH', text: 'documentation and partnerships with universities and think tanks', color: green }, - { prefix: 'WE WILL ACHIEVE', text: 'democratized access to sophisticated policy analysis', color: green }, - { prefix: 'MEASURE SUCCESS BY', text: 'citations, applications built on PolicyEngine, their users, contributors, and funding', color: orange }, - { prefix: 'AND SUSTAIN THE ECOSYSTEM VIA', text: 'diversified foundation grants, government funding, and SaaS offerings', color: orange }, - ]; - thesisLines.forEach((line, i) => { - const yPos = 0.7 + i * 0.48; - slide.addText([ - { text: line.prefix + ' ', options: { bold: true, color: '374151' } }, - { text: line.text, options: { color: line.color } }, - ...(line.suffix ? [{ text: ' ' + line.suffix, options: { color: '374151' } }] : []), - ], { x: 0.5, y: yPos, w: 9, fontSize: 11 }); - }); - return slide; +async function checkServer(url) { + try { + const res = await fetch(url, { signal: AbortSignal.timeout(2000) }); + return res.ok; + } catch { return false; } } -function addAssumptionsSlide(pptx) { - const slide = pptx.addSlide(); - slide.addText('Assumptions', { x: 0.5, y: 0.3, w: '90%', fontSize: 32, bold: true, color: '1F2937' }); - const goalsAndAssumptions = [ - { goal: 'Grow adoption among policy analysts', assumption: 'Policy researchers will adopt open-source tools if they are accessible without programming expertise', color: teal }, - { goal: 'Achieve sustainable, diversified funding', assumption: 'Funders value transparency and reproducibility enough to fund open-source over proprietary alternatives', color: purple }, - { goal: 'Build active contributor community', assumption: 'Developers will contribute for policy impact without requiring competitive compensation', color: blue }, - ]; - goalsAndAssumptions.forEach((item, i) => { - const yPos = 1.0 + i * 1.3; - slide.addShape('rect', { x: 0.5, y: yPos, w: 9, h: 1.1, fill: { color: item.color, transparency: 90 }, line: { color: item.color } }); - slide.addText([{ text: 'Goal: ', options: { color: '6B7280' } }, { text: item.goal, options: { bold: true, color: item.color } }], { x: 0.7, y: yPos + 0.15, w: 8.5, fontSize: 12 }); - slide.addText([{ text: 'Assumption: ', options: { color: '6B7280' } }, { text: item.assumption, options: { color: item.color } }], { x: 0.7, y: yPos + 0.55, w: 8.5, fontSize: 10 }); +// ── Screenshot logic ── +async function captureSlides() { + // Prep + if (existsSync(SCREENSHOT_DIR)) rmSync(SCREENSHOT_DIR, { recursive: true }); + mkdirSync(SCREENSHOT_DIR, { recursive: true }); + + let server = null; + const alreadyRunning = await checkServer(DEV_URL); + if (alreadyRunning) { + console.log(`Using existing dev server at ${DEV_URL}`); + } else { + console.log('Starting dev server...'); + server = await startDevServer(); + console.log('Dev server ready.'); + } + + const browser = await puppeteer.launch({ headless: true, args: ['--no-sandbox'] }); + const page = await browser.newPage(); + await page.setViewport(VIEWPORT); + await page.goto(DEV_URL, { waitUntil: 'networkidle2', timeout: 30000 }); + + // Force all sections visible (bypass scroll-reveal animations) + await page.evaluate(() => { + document.querySelectorAll('section').forEach(s => s.classList.add('section-visible')); + // Also force all scroll-reveal elements visible + document.querySelectorAll('.scroll-reveal, .scroll-reveal-left, .scroll-reveal-scale').forEach(el => { + el.style.opacity = '1'; + el.style.transform = 'none'; + }); }); - return slide; + await sleep(500); + + const screenshots = []; + let slideNum = 0; + + for (const sectionId of SECTIONS) { + if (sectionId === 'aha-moment') { + // Ecosystem: capture 3 scroll steps + for (let step = 1; step <= 3; step++) { + slideNum++; + const fileName = `${SCREENSHOT_DIR}/slide-${String(slideNum).padStart(2, '0')}.png`; + + await page.evaluate((id, stepNum) => { + const section = document.getElementById(id); + if (!section) return; + const sectionRect = section.getBoundingClientRect(); + const sectionTop = window.scrollY + sectionRect.top; + const sectionHeight = section.scrollHeight; + // Scroll to appropriate fraction of the 300vh container + const scrollTarget = sectionTop + (sectionHeight * (stepNum - 1)) / 3 + 10; + window.scrollTo(0, scrollTarget); + }, sectionId, step); + + await sleep(800); // Let sticky + transitions settle + + // Force visibility again after scroll + await page.evaluate(() => { + document.querySelectorAll('section').forEach(s => s.classList.add('section-visible')); + document.querySelectorAll('.scroll-reveal, .scroll-reveal-left, .scroll-reveal-scale').forEach(el => { + el.style.opacity = '1'; + el.style.transform = 'none'; + }); + }); + await sleep(300); + + await page.screenshot({ path: fileName, fullPage: false }); + screenshots.push(fileName); + console.log(` [${slideNum}] ${sectionId} step ${step}`); + } + } else { + slideNum++; + const fileName = `${SCREENSHOT_DIR}/slide-${String(slideNum).padStart(2, '0')}.png`; + + await page.evaluate((id) => { + const section = document.getElementById(id); + if (section) section.scrollIntoView({ behavior: 'instant', block: 'start' }); + }, sectionId); + + await sleep(500); + + // Force visibility after scroll + await page.evaluate(() => { + document.querySelectorAll('section').forEach(s => s.classList.add('section-visible')); + document.querySelectorAll('.scroll-reveal, .scroll-reveal-left, .scroll-reveal-scale').forEach(el => { + el.style.opacity = '1'; + el.style.transform = 'none'; + }); + }); + await sleep(300); + + await page.screenshot({ path: fileName, fullPage: false }); + screenshots.push(fileName); + console.log(` [${slideNum}] ${sectionId}`); + } + } + + await browser.close(); + if (server) server.kill(); + return screenshots; } -function addInterviewLogSlide(pptx) { - const slide = pptx.addSlide(); - slide.addText('Interview log', { x: 0.5, y: 0.2, w: '90%', fontSize: 28, bold: true, color: '1F2937' }); - - // Add screenshot of the POSE Tracker app (preserve aspect ratio 2208x1948) - slide.addImage({ - path: '/tmp/interview-log.png', - x: 2.5, - y: 0.55, - w: 5.0, - h: 4.4, - }); - - return slide; -} +// ── Build PPTX from screenshots ── +async function buildPptx(screenshots) { + const pptx = new pptxgen(); + pptx.layout = 'LAYOUT_16x9'; + pptx.title = 'PolicyEngine POSE Presentation'; + pptx.author = 'PolicyEngine'; -function addGoalsCharterSlide(pptx) { - const slide = pptx.addSlide(); - slide.addText('Team goals and charter', { x: 0.5, y: 0.3, w: '90%', fontSize: 32, bold: true, color: '1F2937' }); - - slide.addText('Goals', { x: 0.5, y: 1.0, w: 4, fontSize: 16, bold: true, color: '1F2937' }); - const goals = [ - 'Complete 100 ecosystem discovery interviews across all 6 stakeholder segments', - 'Identify 3+ sustainable funding models beyond traditional grants', - 'Establish partnerships with 5+ policy think tanks and media organizations', - 'Develop community governance structure with clear decision rights', - ]; - goals.forEach((goal, i) => { - slide.addShape('rect', { x: 0.5, y: 1.4 + i * 0.38, w: 4.3, h: 0.33, fill: { color: green, transparency: 90 }, line: { color: green } }); - slide.addText(`${i + 1}. ${goal}`, { x: 0.6, y: 1.45 + i * 0.38, w: 4.1, fontSize: 8, color: green }); - }); + for (const imgPath of screenshots) { + const slide = pptx.addSlide(); + slide.background = { color: '0A0F1C' }; + slide.addImage({ + path: imgPath, + x: 0, + y: 0, + w: '100%', + h: '100%', + }); + } - slide.addText('Working agreements', { x: 5.2, y: 1.0, w: 4, fontSize: 16, bold: true, color: '1F2937' }); - const agreements = [ - 'Weekly team sync (Mondays)', - '24-hour response time on Slack', - 'Share interview notes within 24 hours', - 'Consensus on strategic decisions, CEO decides operational matters', - ]; - agreements.forEach((agreement, i) => { - slide.addShape('rect', { x: 5.2, y: 1.4 + i * 0.38, w: 4.3, h: 0.33, fill: { color: teal, transparency: 90 }, line: { color: teal } }); - slide.addText(`• ${agreement}`, { x: 5.3, y: 1.45 + i * 0.38, w: 4.1, fontSize: 8, color: teal }); - }); - return slide; + await pptx.writeFile({ fileName: OUTPUT_FILE }); + console.log(`\nCreated: ${OUTPUT_FILE}`); } -// Generate PPTX 1: Team, Thesis, Assumptions, Interview Log -const pptx1 = new pptxgen(); -pptx1.layout = 'LAYOUT_16x9'; -pptx1.title = 'PolicyEngine POSE - Weekly Session'; -pptx1.author = 'PolicyEngine'; - -addTeamSlide(pptx1); -addThesisSlide(pptx1); -addAssumptionsSlide(pptx1); -addInterviewLogSlide(pptx1); - -await pptx1.writeFile({ fileName: '/Users/maxghenis/Downloads/4373_PolicyEngine_01202026.pptx' }); -console.log('Created: 4373_PolicyEngine_01202026.pptx'); - -// Generate PPTX 2: Team, Thesis, Goals & Charter -const pptx2 = new pptxgen(); -pptx2.layout = 'LAYOUT_16x9'; -pptx2.title = 'PolicyEngine POSE - Kickoff'; -pptx2.author = 'PolicyEngine'; - -addTeamSlide(pptx2); -addThesisSlide(pptx2); -addGoalsCharterSlide(pptx2); +// ── Main ── +const screenshots = await captureSlides(); +console.log(`\nCaptured ${screenshots.length} screenshots.`); +await buildPptx(screenshots); -await pptx2.writeFile({ fileName: '/Users/maxghenis/Downloads/4373_PolicyEngine_01202026_OfficeHours.pptx' }); -console.log('Created: 4373_PolicyEngine_01202026_OfficeHours.pptx'); +// Cleanup +rmSync(SCREENSHOT_DIR, { recursive: true }); diff --git a/app/next-env.d.ts b/app/next-env.d.ts new file mode 100644 index 0000000..830fb59 --- /dev/null +++ b/app/next-env.d.ts @@ -0,0 +1,6 @@ +/// +/// +/// + +// NOTE: This file should not be edited +// see https://nextjs.org/docs/app/api-reference/config/typescript for more information. diff --git a/app/next.config.ts b/app/next.config.ts new file mode 100644 index 0000000..34bbc0c --- /dev/null +++ b/app/next.config.ts @@ -0,0 +1,12 @@ +import type { NextConfig } from "next"; + +import path from "path"; + +const nextConfig: NextConfig = { + output: "standalone", + turbopack: { + root: path.resolve(import.meta.dirname), + }, +}; + +export default nextConfig; diff --git a/app/package.json b/app/package.json index 819ae34..856e2e2 100644 --- a/app/package.json +++ b/app/package.json @@ -1,13 +1,13 @@ { - "name": "app", + "name": "pose-app", "private": true, "version": "0.0.0", "type": "module", "scripts": { - "dev": "vite", - "build": "tsc -b && vite build", + "dev": "next dev --turbopack", + "build": "next build", + "start": "next start", "lint": "eslint .", - "preview": "vite preview", "test": "vitest", "test:run": "vitest run" }, @@ -17,6 +17,7 @@ "date-fns": "^4.1.0", "framer-motion": "^12.27.1", "lucide-react": "^0.562.0", + "next": "^15.3.4", "pptxgenjs": "^4.0.1", "react": "^19.2.0", "react-dom": "^19.2.0", @@ -24,25 +25,22 @@ }, "devDependencies": { "@eslint/js": "^9.39.1", - "@tailwindcss/forms": "0.5", + "@tailwindcss/postcss": "^4.1.8", "@testing-library/jest-dom": "^6.9.1", "@testing-library/react": "^16.3.2", "@testing-library/user-event": "^14.6.1", "@types/node": "^24.10.1", "@types/react": "^19.2.5", "@types/react-dom": "^19.2.3", - "@vitejs/plugin-react": "^5.1.1", - "autoprefixer": "^10.4.23", + "@vitejs/plugin-react": "^5.1.4", "eslint": "^9.39.1", "eslint-plugin-react-hooks": "^7.0.1", - "eslint-plugin-react-refresh": "^0.4.24", "globals": "^16.5.0", "jsdom": "^27.4.0", - "postcss": "^8.5.6", - "tailwindcss": "3", + "puppeteer": "^24.38.0", + "tailwindcss": "^4.1.8", "typescript": "~5.9.3", "typescript-eslint": "^8.46.4", - "vite": "^7.2.4", "vitest": "^4.0.17" } } diff --git a/app/postcss.config.js b/app/postcss.config.js deleted file mode 100644 index 2e7af2b..0000000 --- a/app/postcss.config.js +++ /dev/null @@ -1,6 +0,0 @@ -export default { - plugins: { - tailwindcss: {}, - autoprefixer: {}, - }, -} diff --git a/app/postcss.config.mjs b/app/postcss.config.mjs new file mode 100644 index 0000000..79bcf13 --- /dev/null +++ b/app/postcss.config.mjs @@ -0,0 +1,8 @@ +/** @type {import('postcss-load-config').Config} */ +const config = { + plugins: { + "@tailwindcss/postcss": {}, + }, +}; + +export default config; diff --git a/app/public/assets/logos/cosilico-full-white.svg b/app/public/assets/logos/cosilico-full-white.svg new file mode 100644 index 0000000..6d13351 --- /dev/null +++ b/app/public/assets/logos/cosilico-full-white.svg @@ -0,0 +1,10 @@ + + + + + + + + + COSILICO + diff --git a/app/public/assets/logos/cosilico-full.svg b/app/public/assets/logos/cosilico-full.svg new file mode 100644 index 0000000..9f6d20b --- /dev/null +++ b/app/public/assets/logos/cosilico-full.svg @@ -0,0 +1,10 @@ + + + + + + + + + COSILICO + diff --git a/app/public/assets/logos/cosilico-icon.svg b/app/public/assets/logos/cosilico-icon.svg new file mode 100644 index 0000000..da2cdc4 --- /dev/null +++ b/app/public/assets/logos/cosilico-icon.svg @@ -0,0 +1,28 @@ + + + + + + + + + + + + + + diff --git a/app/public/assets/logos/organizations/10-downing-street.png b/app/public/assets/logos/organizations/10-downing-street.png new file mode 100644 index 0000000..6cf554b Binary files /dev/null and b/app/public/assets/logos/organizations/10-downing-street.png differ diff --git a/app/public/assets/logos/organizations/aei.png b/app/public/assets/logos/organizations/aei.png new file mode 100644 index 0000000..c305445 Binary files /dev/null and b/app/public/assets/logos/organizations/aei.png differ diff --git a/app/public/assets/logos/organizations/amplifi.png b/app/public/assets/logos/organizations/amplifi.png new file mode 100644 index 0000000..a8c2d89 Binary files /dev/null and b/app/public/assets/logos/organizations/amplifi.png differ diff --git a/app/public/assets/logos/organizations/atlanta-fed.png b/app/public/assets/logos/organizations/atlanta-fed.png new file mode 100644 index 0000000..df5b059 Binary files /dev/null and b/app/public/assets/logos/organizations/atlanta-fed.png differ diff --git a/app/public/assets/logos/organizations/bea.png b/app/public/assets/logos/organizations/bea.png new file mode 100644 index 0000000..2bc8dff Binary files /dev/null and b/app/public/assets/logos/organizations/bea.png differ diff --git a/app/public/assets/logos/organizations/cfi.png b/app/public/assets/logos/organizations/cfi.png new file mode 100644 index 0000000..a7536aa Binary files /dev/null and b/app/public/assets/logos/organizations/cfi.png differ diff --git a/app/public/assets/logos/organizations/cgo.jpg b/app/public/assets/logos/organizations/cgo.jpg new file mode 100644 index 0000000..95617a0 Binary files /dev/null and b/app/public/assets/logos/organizations/cgo.jpg differ diff --git a/app/public/assets/logos/organizations/gary-community-ventures.png b/app/public/assets/logos/organizations/gary-community-ventures.png new file mode 100644 index 0000000..b17f292 Binary files /dev/null and b/app/public/assets/logos/organizations/gary-community-ventures.png differ diff --git a/app/public/assets/logos/organizations/georgetown.png b/app/public/assets/logos/organizations/georgetown.png new file mode 100644 index 0000000..ba6c586 Binary files /dev/null and b/app/public/assets/logos/organizations/georgetown.png differ diff --git a/app/public/assets/logos/organizations/jec.png b/app/public/assets/logos/organizations/jec.png new file mode 100644 index 0000000..7693ded Binary files /dev/null and b/app/public/assets/logos/organizations/jec.png differ diff --git a/app/public/assets/logos/organizations/living-wage-calculator.png b/app/public/assets/logos/organizations/living-wage-calculator.png new file mode 100644 index 0000000..28bc877 Binary files /dev/null and b/app/public/assets/logos/organizations/living-wage-calculator.png differ diff --git a/app/public/assets/logos/organizations/mirza.png b/app/public/assets/logos/organizations/mirza.png new file mode 100644 index 0000000..5d5f413 Binary files /dev/null and b/app/public/assets/logos/organizations/mirza.png differ diff --git a/app/public/assets/logos/organizations/mothers-outreach-network.png b/app/public/assets/logos/organizations/mothers-outreach-network.png new file mode 100644 index 0000000..dc03a07 Binary files /dev/null and b/app/public/assets/logos/organizations/mothers-outreach-network.png differ diff --git a/app/public/assets/logos/organizations/myfriendben.png b/app/public/assets/logos/organizations/myfriendben.png new file mode 100644 index 0000000..f66d091 Binary files /dev/null and b/app/public/assets/logos/organizations/myfriendben.png differ diff --git a/app/public/assets/logos/organizations/nber.png b/app/public/assets/logos/organizations/nber.png new file mode 100644 index 0000000..5a82fca Binary files /dev/null and b/app/public/assets/logos/organizations/nber.png differ diff --git a/app/public/assets/logos/organizations/niskanen-center.png b/app/public/assets/logos/organizations/niskanen-center.png new file mode 100644 index 0000000..3c5498b Binary files /dev/null and b/app/public/assets/logos/organizations/niskanen-center.png differ diff --git a/app/public/assets/logos/organizations/pn3policy.png b/app/public/assets/logos/organizations/pn3policy.png new file mode 100644 index 0000000..87ec903 Binary files /dev/null and b/app/public/assets/logos/organizations/pn3policy.png differ diff --git a/app/public/assets/logos/organizations/ubicenter.png b/app/public/assets/logos/organizations/ubicenter.png new file mode 100644 index 0000000..11988d1 Binary files /dev/null and b/app/public/assets/logos/organizations/ubicenter.png differ diff --git a/app/public/assets/logos/organizations/uhero.png b/app/public/assets/logos/organizations/uhero.png new file mode 100644 index 0000000..01f2fb8 Binary files /dev/null and b/app/public/assets/logos/organizations/uhero.png differ diff --git a/app/public/assets/logos/organizations/umich.png b/app/public/assets/logos/organizations/umich.png new file mode 100644 index 0000000..99511cc Binary files /dev/null and b/app/public/assets/logos/organizations/umich.png differ diff --git a/app/public/assets/logos/organizations/usc.png b/app/public/assets/logos/organizations/usc.png new file mode 100644 index 0000000..da397c4 Binary files /dev/null and b/app/public/assets/logos/organizations/usc.png differ diff --git a/app/public/assets/logos/pe-full-white.svg b/app/public/assets/logos/pe-full-white.svg new file mode 100644 index 0000000..253c046 --- /dev/null +++ b/app/public/assets/logos/pe-full-white.svg @@ -0,0 +1,18 @@ + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/app/public/assets/logos/pe-icon.svg b/app/public/assets/logos/pe-icon.svg new file mode 100644 index 0000000..c6d967c --- /dev/null +++ b/app/public/assets/logos/pe-icon.svg @@ -0,0 +1,9 @@ + + + + + + + + + diff --git a/app/public/assets/logos/rf-full-white.svg b/app/public/assets/logos/rf-full-white.svg new file mode 100644 index 0000000..00338b6 --- /dev/null +++ b/app/public/assets/logos/rf-full-white.svg @@ -0,0 +1,14 @@ + + + + + + + + + + + + RULES + FOUNDATION + diff --git a/app/public/assets/logos/rf-full.svg b/app/public/assets/logos/rf-full.svg new file mode 100644 index 0000000..d9aac2b --- /dev/null +++ b/app/public/assets/logos/rf-full.svg @@ -0,0 +1,14 @@ + + + + + + + + + + + + RULES + FOUNDATION + diff --git a/app/public/assets/logos/rf-icon.svg b/app/public/assets/logos/rf-icon.svg new file mode 100644 index 0000000..6bad155 --- /dev/null +++ b/app/public/assets/logos/rf-icon.svg @@ -0,0 +1,13 @@ + + + + + + + + + + + + + diff --git a/app/public/assets/pe-winners-losers.png b/app/public/assets/pe-winners-losers.png new file mode 100644 index 0000000..d746e30 Binary files /dev/null and b/app/public/assets/pe-winners-losers.png differ diff --git a/app/src/App.css b/app/src/App.css deleted file mode 100644 index b9d355d..0000000 --- a/app/src/App.css +++ /dev/null @@ -1,42 +0,0 @@ -#root { - max-width: 1280px; - margin: 0 auto; - padding: 2rem; - text-align: center; -} - -.logo { - height: 6em; - padding: 1.5em; - will-change: filter; - transition: filter 300ms; -} -.logo:hover { - filter: drop-shadow(0 0 2em #646cffaa); -} -.logo.react:hover { - filter: drop-shadow(0 0 2em #61dafbaa); -} - -@keyframes logo-spin { - from { - transform: rotate(0deg); - } - to { - transform: rotate(360deg); - } -} - -@media (prefers-reduced-motion: no-preference) { - a:nth-of-type(2) .logo { - animation: logo-spin infinite 20s linear; - } -} - -.card { - padding: 2em; -} - -.read-the-docs { - color: #888; -} diff --git a/app/src/App.tsx b/app/src/App.tsx deleted file mode 100644 index 2b6de32..0000000 --- a/app/src/App.tsx +++ /dev/null @@ -1,374 +0,0 @@ -import { useState } from 'react' -import { motion, AnimatePresence } from 'framer-motion' -import { Plus, RefreshCw, Calendar, Users, Target, ExternalLink, BookOpen, ClipboardList, ListChecks, Presentation, Mail } from 'lucide-react' -import { useInterviews } from './hooks/useInterviews' -import { ProgressRing } from './components/ProgressRing' -import { MilestoneTracker } from './components/MilestoneTracker' -import { SegmentChart } from './components/SegmentChart' -import { InterviewTable } from './components/InterviewTable' -import { AddInterviewModal } from './components/AddInterviewModal' -import { Materials } from './components/Materials' -import { Assignments } from './components/Assignments' -import { Slides } from './components/Slides' -import { Outreach } from './components/Outreach' -import type { Interview } from './types/database' -import { isSupabaseConfigured } from './lib/supabase' - -type Tab = 'interviews' | 'assignments' | 'materials' | 'slides' | 'outreach' - -function App() { - const { - interviews, - loading, - error, - addInterview, - updateInterview, - deleteInterview, - refresh, - completedCount, - scheduledCount, - segmentCounts, - } = useInterviews() - - const [isModalOpen, setIsModalOpen] = useState(false) - const [editingInterview, setEditingInterview] = useState(null) - const [activeTab, setActiveTab] = useState('interviews') - - const handleSave = async (interview: Omit) => { - if (editingInterview) { - await updateInterview(editingInterview.id, interview) - } else { - await addInterview(interview) - } - setEditingInterview(null) - } - - const handleEdit = (interview: Interview) => { - setEditingInterview(interview) - setIsModalOpen(true) - } - - const handleStatusChange = async (id: string, status: Interview['status']) => { - const updates: Partial = { status } - if (status === 'completed') { - updates.completed_date = new Date().toISOString().split('T')[0] - } - await updateInterview(id, updates) - } - - const handleCloseModal = () => { - setIsModalOpen(false) - setEditingInterview(null) - } - - return ( -
- {/* Header */} -
-
-
-
-
-
- -
-
-

POSE Tracker

-

Ecosystem discovery

-
-
-
- -
- {!isSupabaseConfigured() && ( - - Local mode - - )} - {activeTab === 'interviews' && ( - <> - - setIsModalOpen(true)} - className="flex items-center gap-2 px-4 py-2 bg-teal-600 text-white rounded-lg hover:bg-teal-700 transition-colors font-medium shadow-sm" - > - - Add interview - - - )} -
-
- - {/* Tab Navigation */} -
- - - - - -
-
-
- - {/* Main Content */} -
- - {activeTab === 'interviews' ? ( - - {error && ( - - {error} - - )} - - {/* Stats Overview */} -
- -
-

Total progress

-

- {completedCount} - / 100 -

-

- {100 - completedCount} remaining -

-
- -
- - -
-
- -
-
-

Scheduled

-

{scheduledCount}

-
-
-

- {scheduledCount > 0 - ? `${scheduledCount} interview${scheduledCount === 1 ? '' : 's'} coming up` - : 'No interviews scheduled'} -

-
- - -
-
- -
-
-

Segments covered

-

- {Object.keys(segmentCounts).length} - / 6 -

-
-
-

- {6 - Object.keys(segmentCounts).length > 0 - ? `${6 - Object.keys(segmentCounts).length} segment${6 - Object.keys(segmentCounts).length === 1 ? '' : 's'} to explore` - : 'All segments covered!'} -

-
-
- - {/* Main Grid */} -
-
- -
-
- -
-
- - {/* Interview Log */} -
-
-

Interview log

- {interviews.length} total -
- -
-
- ) : activeTab === 'assignments' ? ( - - - - ) : activeTab === 'materials' ? ( - - - - ) : activeTab === 'slides' ? ( - - - - ) : ( - - - - )} -
- - {/* Footer */} - -
- - {/* Modal */} - -
- ) -} - -export default App diff --git a/app/src/app/globals.css b/app/src/app/globals.css new file mode 100644 index 0000000..8795c56 --- /dev/null +++ b/app/src/app/globals.css @@ -0,0 +1,151 @@ +@import "tailwindcss"; + +@theme { + --font-sans: var(--font-inter), system-ui, sans-serif; + + --color-page-bg: #0A0F1C; + --color-card-bg: #111827; + --color-card-bg-alt: #1E293B; + --color-text-primary: #F1F5F9; + --color-text-secondary: #94A3B8; + --color-text-tertiary: #64748B; + --color-border-light: #1E293B; + --color-border-medium: #334155; + --color-primary: #319795; + --color-primary-light: rgba(49, 151, 149, 0.2); + --color-rules-blue: #3B82F6; + --color-cosilico-cyan: #06B6D4; + --color-pe-teal: #319795; + + --color-teal-50: #f0fdfa; + --color-teal-100: #ccfbf1; + --color-teal-200: #99f6e4; + --color-teal-300: #5eead4; + --color-teal-400: #2dd4bf; + --color-teal-500: #319795; + --color-teal-600: #0d9488; + --color-teal-700: #0f766e; + --color-teal-800: #115e59; + --color-teal-900: #134e4a; + + --color-gray-50: #f9fafb; + --color-gray-100: #f3f4f6; + --color-gray-200: #e5e7eb; + --color-gray-300: #d1d5db; + --color-gray-400: #9ca3af; + --color-gray-500: #6b7280; + --color-gray-600: #4b5563; + --color-gray-700: #344054; + --color-gray-800: #1f2937; + --color-gray-900: #111827; + --color-gray-950: #0A0F1C; + + --shadow-card: 0px 1px 3px rgba(0, 0, 0, 0.3), 0px 1px 2px rgba(0, 0, 0, 0.2); + --shadow-card-hover: 0px 4px 12px rgba(0, 0, 0, 0.4), 0px 2px 6px rgba(0, 0, 0, 0.3); + --shadow-float: 0px 10px 20px rgba(0, 0, 0, 0.4), 0px 4px 8px rgba(0, 0, 0, 0.3); +} + +:root { + --color-success: #22C55E; + --color-warning: #FEC601; + --color-error: #EF4444; + --color-accent-purple: #7C3AED; + --color-accent-orange: #EA580C; + --color-highlight: #D97706; +} + +html { + scroll-behavior: smooth; +} + +html, body { + margin: 0; + padding: 0; + background-color: #0A0F1C; + color: #F1F5F9; + -webkit-font-smoothing: antialiased; +} + +/* Scroll-reveal transitions */ +.scroll-reveal { + opacity: 0; + transform: translateY(16px); + transition: opacity 0.5s cubic-bezier(0.16, 1, 0.3, 1), transform 0.5s cubic-bezier(0.16, 1, 0.3, 1); +} + +.section-visible .scroll-reveal { + opacity: 1; + transform: translateY(0); +} + +.scroll-reveal-left { + opacity: 0; + transform: translateX(-16px); + transition: opacity 0.5s cubic-bezier(0.16, 1, 0.3, 1), transform 0.5s cubic-bezier(0.16, 1, 0.3, 1); +} + +.section-visible .scroll-reveal-left { + opacity: 1; + transform: translateX(0); +} + +.scroll-reveal-scale { + opacity: 0; + transform: scale(0.85); + transition: opacity 0.5s cubic-bezier(0.16, 1, 0.3, 1), transform 0.5s cubic-bezier(0.16, 1, 0.3, 1); +} + +.section-visible .scroll-reveal-scale { + opacity: 1; + transform: scale(1); +} + +.scroll-reveal-width { + transform: scaleX(0); + transition: transform 0.6s cubic-bezier(0.16, 1, 0.3, 1); +} + +.section-visible .scroll-reveal-width { + transform: scaleX(1); +} + +/* Subtle glow effects */ +.glow-rules { + box-shadow: 0 0 20px rgba(59, 130, 246, 0.15), 0 0 40px rgba(59, 130, 246, 0.05); +} +.glow-cosilico { + box-shadow: 0 0 20px rgba(6, 182, 212, 0.15), 0 0 40px rgba(6, 182, 212, 0.05); +} +.glow-pe { + box-shadow: 0 0 20px rgba(49, 151, 149, 0.15), 0 0 40px rgba(49, 151, 149, 0.05); +} +.glow-highlight { + box-shadow: 0 0 20px rgba(217, 119, 6, 0.15), 0 0 40px rgba(217, 119, 6, 0.05); +} +.glow-accent { + box-shadow: 0 0 15px rgba(49, 151, 149, 0.12); +} + +/* Scrollbar (dark) */ +::-webkit-scrollbar { + width: 6px; +} +::-webkit-scrollbar-track { + background: #0A0F1C; +} +::-webkit-scrollbar-thumb { + background: #334155; + border-radius: 3px; +} +::-webkit-scrollbar-thumb:hover { + background: #475569; +} + +/* Card hover lift */ +.card-hover { + transition: box-shadow 0.2s ease, transform 0.2s ease; +} +.card-hover:hover { + box-shadow: 0px 4px 12px rgba(0, 0, 0, 0.3), 0px 2px 6px rgba(0, 0, 0, 0.2); + transform: translateY(-1px); +} diff --git a/app/src/app/layout.tsx b/app/src/app/layout.tsx new file mode 100644 index 0000000..7f9a893 --- /dev/null +++ b/app/src/app/layout.tsx @@ -0,0 +1,26 @@ +import type { Metadata } from "next"; +import { Inter } from "next/font/google"; +import "./globals.css"; + +const inter = Inter({ + subsets: ["latin"], + weight: ["300", "400", "500", "600", "700"], + variable: "--font-inter", +}); + +export const metadata: Metadata = { + title: "POSE — PolicyEngine", + description: "PolicyEngine POSE presentation", +}; + +export default function RootLayout({ + children, +}: { + children: React.ReactNode; +}) { + return ( + + {children} + + ); +} diff --git a/app/src/app/page.tsx b/app/src/app/page.tsx new file mode 100644 index 0000000..9e3b78a --- /dev/null +++ b/app/src/app/page.tsx @@ -0,0 +1,190 @@ +"use client"; + +import { ScrollStory } from "@/components/presentation/ScrollStory"; +import { ProblemSlide } from "@/components/slides/ProblemSlide"; +import { FourthOptionSlide } from "@/components/slides/FourthOptionSlide"; +import { ColdOpenSlide } from "@/components/slides/ColdOpenSlide"; +import { WhoWeAreSlide } from "@/components/slides/WhoWeAreSlide"; +import { WhatWeDoSlide } from "@/components/slides/WhatWeDoSlide"; +import { HowWeOperateSlide } from "@/components/slides/HowWeOperateSlide"; +import { JourneyBeginsSlide } from "@/components/slides/JourneyBeginsSlide"; +import { + TensionBuildsWeek4Slide, + TensionBuildsWeek5Slide, +} from "@/components/slides/TensionBuildsSlide"; +import { ThreeOrgStackSlide } from "@/components/slides/ThreeOrgStackSlide"; +import { EcosystemEvolutionSlide } from "@/components/ecosystem/EcosystemEvolution"; +import { MeetTheThreeSlide } from "@/components/slides/MeetTheThreeSlide"; +import { GovernanceSlideNew } from "@/components/slides/GovernanceSlideNew"; +import { RoadAheadSlide } from "@/components/slides/RoadAheadSlide"; +import { TheCloseSlide } from "@/components/slides/TheCloseSlide"; +import { VoicesSlide } from "@/components/slides/appendix/VoicesSlide"; +import { ImpactGoalsSlide } from "@/components/slides/appendix/ImpactGoalsSlide"; +import { PartnersSlide } from "@/components/slides/appendix/PartnersSlide"; +import { CanvasSlide } from "@/components/slides/appendix/CanvasSlide"; +import { CanvasDetailSlide } from "@/components/slides/appendix/CanvasDetailSlide"; +import { GovernanceDetailSlide } from "@/components/slides/appendix/GovernanceDetailSlide"; +import { CompetitiveSlide } from "@/components/slides/appendix/CompetitiveSlide"; +import { HighlightsSlide } from "@/components/slides/appendix/HighlightsSlide"; +import { MarketSlide } from "@/components/slides/appendix/MarketSlide"; +import type { ScrollSection } from "@/lib/types"; + +const sections: ScrollSection[] = [ + { + id: "who-we-are", + title: "Who we are", + tag: "THE TEAM", + component: WhoWeAreSlide, + }, + { + id: "problem", + title: "The problem", + tag: "THE PROBLEM", + component: ProblemSlide, + }, + { + id: "fourth-option", + title: "A fourth option", + tag: "THE OPPORTUNITY", + component: FourthOptionSlide, + }, + { + id: "cold-open", + title: "The HGP ecosystem", + tag: "INSPIRATION", + component: ColdOpenSlide, + }, + { + id: "how-we-operate", + title: "Three layers of the policy stack", + tag: "OUR WORK", + component: HowWeOperateSlide, + }, + { + id: "what-we-do", + title: "What we do", + tag: "THESIS + IMPACT", + component: WhatWeDoSlide, + }, + { + id: "journey-begins", + title: "100 conversations", + tag: "THE JOURNEY", + component: JourneyBeginsSlide, + }, + { + id: "tension-week4", + title: "Week 4", + tag: "VALIDATION", + component: TensionBuildsWeek4Slide, + }, + { + id: "tension-week5", + title: "Week 5", + tag: "VALIDATION", + component: TensionBuildsWeek5Slide, + }, + { + id: "stack-reprise", + title: "PE across the stack (reprise)", + tag: "OUR WORK", + component: HowWeOperateSlide, + }, + { + id: "three-org-stack", + title: "Each layer, one org", + tag: "THE INSIGHT", + component: ThreeOrgStackSlide, + }, + { + id: "meet-the-three", + title: "Meet the three", + tag: "THREE ORGS", + component: MeetTheThreeSlide, + }, + { + id: "aha-moment", + title: "One became three", + tag: "THE ECOSYSTEM", + component: EcosystemEvolutionSlide, + stickyHeight: 3, + }, + { + id: "road-ahead", + title: "Road ahead", + tag: "TIMELINE", + component: RoadAheadSlide, + }, + { + id: "the-close", + title: "The close", + tag: "THE CLOSE", + component: TheCloseSlide, + }, + + // Appendix + { + id: "voices", + title: "Voices", + component: VoicesSlide, + isAppendix: true, + }, + { + id: "impact-goals", + title: "Impact goals", + component: ImpactGoalsSlide, + isAppendix: true, + }, + { + id: "partners", + title: "Partners", + component: PartnersSlide, + isAppendix: true, + }, + { + id: "canvas", + title: "Canvas", + component: CanvasSlide, + isAppendix: true, + }, + { + id: "canvas-detail", + title: "Canvas detail", + component: CanvasDetailSlide, + isAppendix: true, + }, + { + id: "governance", + title: "Governance", + component: GovernanceSlideNew, + isAppendix: true, + }, + { + id: "gov-detail", + title: "Gov detail", + component: GovernanceDetailSlide, + isAppendix: true, + }, + { + id: "competitive", + title: "Competitive", + component: CompetitiveSlide, + isAppendix: true, + }, + { + id: "highlights", + title: "Highlights", + component: HighlightsSlide, + isAppendix: true, + }, + { + id: "market", + title: "Market", + component: MarketSlide, + isAppendix: true, + }, +]; + +export default function Page() { + return ; +} diff --git a/app/src/components/AddInterviewModal.tsx b/app/src/components/AddInterviewModal.tsx index 051b12a..6893aba 100644 --- a/app/src/components/AddInterviewModal.tsx +++ b/app/src/components/AddInterviewModal.tsx @@ -1,9 +1,9 @@ import { useState, useEffect } from 'react' import { motion, AnimatePresence } from 'framer-motion' import { X } from 'lucide-react' -import type { Interview, Segment, PoseHypothesis } from '../types/database' -import { SEGMENTS, POSE_HYPOTHESES } from '../types/database' -import { InterviewGuidance } from './InterviewGuidance' +import type { Interview, Segment, PoseHypothesis } from '@/types/database' +import { SEGMENTS, POSE_HYPOTHESES } from '@/types/database' +import { InterviewGuidance } from '@/components/InterviewGuidance' interface AddInterviewModalProps { isOpen: boolean diff --git a/app/src/components/Assignments.tsx b/app/src/components/Assignments.tsx index fad68ec..db137dc 100644 --- a/app/src/components/Assignments.tsx +++ b/app/src/components/Assignments.tsx @@ -14,8 +14,8 @@ import { Filter, ExternalLink, } from 'lucide-react' -import { useAssignments } from '../hooks/useAssignments' -import type { Assignment, AssignmentCategory } from '../types/database' +import { useAssignments } from '@/hooks/useAssignments' +import type { Assignment, AssignmentCategory } from '@/types/database' // Category metadata const CATEGORY_INFO: Record< diff --git a/app/src/components/InterviewGuidance.tsx b/app/src/components/InterviewGuidance.tsx index 8f6a934..fb7ecc9 100644 --- a/app/src/components/InterviewGuidance.tsx +++ b/app/src/components/InterviewGuidance.tsx @@ -13,7 +13,7 @@ import { Handshake } from 'lucide-react' import { useState } from 'react' -import type { Segment } from '../types/database' +import type { Segment } from '@/types/database' interface InterviewGuidanceProps { segment: Segment diff --git a/app/src/components/InterviewTable.tsx b/app/src/components/InterviewTable.tsx index 63b72ac..da4ee3e 100644 --- a/app/src/components/InterviewTable.tsx +++ b/app/src/components/InterviewTable.tsx @@ -12,8 +12,8 @@ import { XCircle, AlertCircle } from 'lucide-react' -import type { Interview, Segment } from '../types/database' -import { SEGMENTS } from '../types/database' +import type { Interview, Segment } from '@/types/database' +import { SEGMENTS } from '@/types/database' interface InterviewTableProps { interviews: Interview[] diff --git a/app/src/components/MilestoneTracker.tsx b/app/src/components/MilestoneTracker.tsx index 57761f7..8f8617e 100644 --- a/app/src/components/MilestoneTracker.tsx +++ b/app/src/components/MilestoneTracker.tsx @@ -1,7 +1,7 @@ import { format, isPast, isToday, differenceInDays } from 'date-fns' import { motion } from 'framer-motion' import { CheckCircle2, Circle, Clock } from 'lucide-react' -import { POSE_MILESTONES } from '../types/database' +import { POSE_MILESTONES } from '@/types/database' interface MilestoneTrackerProps { completedCount: number diff --git a/app/src/components/Outreach.tsx b/app/src/components/Outreach.tsx index 8a068bc..585f224 100644 --- a/app/src/components/Outreach.tsx +++ b/app/src/components/Outreach.tsx @@ -1,8 +1,8 @@ import { useState, useCallback } from 'react' import { motion } from 'framer-motion' import { Mail, Copy, Check, User, Building, Briefcase, RefreshCw } from 'lucide-react' -import type { Segment } from '../types/database' -import { SEGMENTS } from '../types/database' +import type { Segment } from '@/types/database' +import { SEGMENTS } from '@/types/database' interface OutreachFormData { recipientName: string diff --git a/app/src/components/ProgressRing.test.tsx b/app/src/components/ProgressRing.test.tsx index 6b724e0..84f23b6 100644 --- a/app/src/components/ProgressRing.test.tsx +++ b/app/src/components/ProgressRing.test.tsx @@ -1,6 +1,6 @@ import { describe, it, expect } from 'vitest' import { render, screen } from '@testing-library/react' -import { ProgressRing } from './ProgressRing' +import { ProgressRing } from '@/components/ProgressRing' describe('ProgressRing', () => { it('renders the current count', () => { diff --git a/app/src/components/SegmentChart.tsx b/app/src/components/SegmentChart.tsx index 4d2ddad..d65ca2e 100644 --- a/app/src/components/SegmentChart.tsx +++ b/app/src/components/SegmentChart.tsx @@ -1,5 +1,5 @@ import { motion } from 'framer-motion' -import { SEGMENTS, type Segment } from '../types/database' +import { SEGMENTS, type Segment } from '@/types/database' interface SegmentChartProps { segmentCounts: Record diff --git a/app/src/components/ecosystem/EcosystemEdge.tsx b/app/src/components/ecosystem/EcosystemEdge.tsx new file mode 100644 index 0000000..5af32bb --- /dev/null +++ b/app/src/components/ecosystem/EcosystemEdge.tsx @@ -0,0 +1,56 @@ +import type { EcosystemEdge as EdgeType } from '@/lib/types'; + +interface EcosystemEdgeProps { + edge: EdgeType; + fromPos: { x: number; y: number }; + toPos: { x: number; y: number }; + visible: boolean; +} + +export function EcosystemEdgeComponent({ edge, fromPos, toPos, visible }: EcosystemEdgeProps) { + const midX = (fromPos.x + toPos.x) / 2; + const midY = (fromPos.y + toPos.y) / 2; + const dx = toPos.x - fromPos.x; + const dy = toPos.y - fromPos.y; + const offset = 25; + const len = Math.sqrt(dx * dx + dy * dy + 1); + const cx = midX - dy * offset / len; + const cy = midY + dx * offset / len; + + const d = `M ${fromPos.x} ${fromPos.y} Q ${cx} ${cy} ${toPos.x} ${toPos.y}`; + + return ( + + + {edge.label && ( + + {edge.label.split('\n').map((line, i) => ( + {line} + ))} + + )} + + ); +} diff --git a/app/src/components/ecosystem/EcosystemEvolution.tsx b/app/src/components/ecosystem/EcosystemEvolution.tsx new file mode 100644 index 0000000..a93327d --- /dev/null +++ b/app/src/components/ecosystem/EcosystemEvolution.tsx @@ -0,0 +1,102 @@ +import { useState } from 'react'; +import { EcosystemMapInteractive } from '@/components/ecosystem/EcosystemMapInteractive'; +import { EVOLUTION_STEPS } from '@/data/ecosystem'; +import { colors } from '@/lib/colors'; +import type { SlideProps } from '@/lib/types'; +import { SlideHeader } from '@/components/ui/SlideHeader'; +import { useScrollProgress } from '@/hooks/useScrollProgress'; + +const LEGEND: { label: string; org: 'rules' | 'cosilico' | 'pe' | 'all'; color: string; bg: string; logo?: string }[] = [ + { label: 'Rules Foundation', org: 'rules', color: colors.rulesBlue, bg: 'rgba(59, 130, 246, 0.1)', logo: '/assets/logos/rf-full.svg' }, + { label: 'Cosilico', org: 'cosilico', color: colors.cosilicoCyan, bg: 'rgba(6, 182, 212, 0.1)', logo: '/assets/logos/cosilico-full.svg' }, + + { label: 'PolicyEngine', org: 'pe', color: colors.peTeal, bg: 'rgba(49, 151, 149, 0.1)', logo: '/assets/logos/pe-full-white.svg' }, + { label: 'Shared', org: 'all', color: '#64748B', bg: 'rgba(100, 116, 139, 0.1)' }, +]; + +const STEP_NARRATIVES = [ + 'This was us going in. One organization serving researchers, government agencies, AI + econ researchers, and funders. We hypothesized this couldn\'t scale.', + '100 interviews confirmed it: each audience needs fundamentally different governance, different funding models, different technical architecture.', + 'Three organizations. Each specialized. Each stronger for the separation. Connected by shared open-source code flowing between them.', +]; + +export function EcosystemEvolutionSlide(_props: SlideProps) { + const { containerRef, currentStep } = useScrollProgress(3); + const stepData = EVOLUTION_STEPS[currentStep - 1]; + const [selectedOrg, setSelectedOrg] = useState<'all' | 'rules' | 'cosilico' | 'pe'>('all'); + + return ( +
+
+ + +
+
+ {EVOLUTION_STEPS.map((s) => ( +
+ {s.step}. {s.title} +
+ ))} +
+ +
+ {LEGEND.map((item) => { + const isActive = selectedOrg === item.org; + return ( + + ); + })} +
+
+ +

+ {STEP_NARRATIVES[currentStep - 1]} +

+

+ {stepData.description} +

+ +
+ +
+
+
+ ); +} diff --git a/app/src/components/ecosystem/EcosystemMapInteractive.tsx b/app/src/components/ecosystem/EcosystemMapInteractive.tsx new file mode 100644 index 0000000..e1b0e39 --- /dev/null +++ b/app/src/components/ecosystem/EcosystemMapInteractive.tsx @@ -0,0 +1,131 @@ +import { useMemo } from 'react'; +import { ecosystemNodes, ecosystemEdges, RING_RADII, CENTER } from '@/data/ecosystem'; +import { EcosystemNodeComponent } from '@/components/ecosystem/EcosystemNode'; +import { EcosystemEdgeComponent } from '@/components/ecosystem/EcosystemEdge'; +import { EcosystemRing } from '@/components/ecosystem/EcosystemRing'; +import { colors } from '@/lib/colors'; + +interface EcosystemMapInteractiveProps { + step: number; + filterOrg?: 'all' | 'rules' | 'cosilico' | 'pe'; +} + +const SPLIT_CORE_IDS = new Set(['rules', 'cosilico', 'pe']); +const SPLIT_CORE_RADIUS = 130; +const RING_LABELS_DISPLAY = ['Core', 'Direct Users', 'Channel Partners', 'Capabilities', 'Revenue']; + +function getNodePosition(id: string, ring: number, angle: number) { + const rad = (angle * Math.PI) / 180; + const r = ring === 0 && SPLIT_CORE_IDS.has(id) ? SPLIT_CORE_RADIUS : (RING_RADII[ring] || 0); + return { + x: CENTER.x + r * Math.cos(rad), + y: CENTER.y + r * Math.sin(rad), + }; +} + +const ARROW_COLORS = [...new Set([ + colors.accentBlue, colors.accentTeal, colors.accentGreen, colors.accentPurple, + colors.accentOrange, colors.rulesBlue, colors.cosilicoCyan, colors.peTeal, + colors.highlight, colors.lightGray, colors.dimText, +])]; + +export function EcosystemMapInteractive({ step, filterOrg }: EcosystemMapInteractiveProps) { + const nodePositions = useMemo(() => { + const positions: Record = {}; + ecosystemNodes.forEach((node) => { + positions[node.id] = getNodePosition(node.id, node.ring, node.angle); + }); + return positions; + }, []); + + const isNodeVisible = (node: typeof ecosystemNodes[0]) => { + if (node.id === 'pe-unified') return step === 1; + if (SPLIT_CORE_IDS.has(node.id)) return step >= 2; + if (step === 2) return false; + if (node.visibleAtStep > step) return false; + if (filterOrg && filterOrg !== 'all' && node.org !== filterOrg && node.org !== 'all') return false; + return true; + }; + + const isNodeHighlighted = (node: typeof ecosystemNodes[0]) => { + if (!filterOrg || filterOrg === 'all') return true; + return node.org === filterOrg || node.org === 'all'; + }; + + const isEdgeVisible = (edge: typeof ecosystemEdges[0]) => { + if (edge.visibleAtStep === 1) return step === 1; + if (step < edge.visibleAtStep) return false; + if (filterOrg && filterOrg !== 'all') { + const fromNode = ecosystemNodes.find((n) => n.id === edge.from); + const toNode = ecosystemNodes.find((n) => n.id === edge.to); + const fromMatch = !!fromNode && (fromNode.org === filterOrg || fromNode.org === 'all'); + const toMatch = !!toNode && (toNode.org === filterOrg || toNode.org === 'all'); + return fromMatch || toMatch; + } + return true; + }; + + const visibleRings = step === 1 ? [1, 2] : step === 3 ? [1, 2, 3, 4] : []; + + return ( + + + {ARROW_COLORS.map((c) => ( + + + + ))} + + + {[1, 2, 3, 4].map((ringIdx, i) => ( + + ))} + + {ecosystemEdges.map((edge, i) => { + const fromPos = nodePositions[edge.from]; + const toPos = nodePositions[edge.to]; + if (!fromPos || !toPos) return null; + return ( + + ); + })} + + {ecosystemNodes.map((node) => { + const pos = nodePositions[node.id]; + return ( + + ); + })} + + ); +} diff --git a/app/src/components/ecosystem/EcosystemNode.tsx b/app/src/components/ecosystem/EcosystemNode.tsx new file mode 100644 index 0000000..33fefd9 --- /dev/null +++ b/app/src/components/ecosystem/EcosystemNode.tsx @@ -0,0 +1,139 @@ +import type { EcosystemNode as NodeType } from '@/lib/types'; + +interface EcosystemNodeProps { + node: NodeType; + x: number; + y: number; + visible: boolean; + highlighted: boolean; +} + +// Dark theme org backgrounds (tinted versions) +const ORG_BG: Record = { + rules: '#1E293B', + cosilico: '#1E293B', + pe: '#1E293B', + all: '#1E293B', +}; + +// Org-specific border colors +const ORG_BORDER: Record = { + rules: '#3B82F6', + cosilico: '#06B6D4', + pe: '#319795', + all: '#64748B', +}; + +// Core org nodes (ring 0) get solid colored backgrounds +const CORE_IDS = new Set(['rules', 'cosilico', 'pe', 'pe-unified']); + +// Map core node IDs to their full logo paths +const CORE_LOGOS: Record = { + rules: '/assets/logos/rf-full-white.svg', + cosilico: '/assets/logos/cosilico-full-white.svg', + pe: '/assets/logos/pe-full-white.svg', + 'pe-unified': '/assets/logos/pe-full-white.svg', +}; + +export function EcosystemNodeComponent({ node, x, y, visible, highlighted }: EcosystemNodeProps) { + const lines = node.label.split('\n'); + const isCore = CORE_IDS.has(node.id); + const width = isCore ? 160 : 150; + const height = isCore ? 60 : (lines.length > 1 ? 64 : 46); + + const bgColor = isCore ? node.color : (ORG_BG[node.org] || ORG_BG.all); + const borderColor = isCore ? node.color : (ORG_BORDER[node.org] || ORG_BORDER.all); + const textColor = '#F1F5F9'; + + const coreLogo = CORE_LOGOS[node.id]; + + return ( + + {/* Card shadow */} + + {/* Card background */} + + {/* Left accent bar for non-core nodes */} + {!isCore && ( + + )} + {isCore && coreLogo ? ( + + ) : ( + lines.map((line, i) => ( + + {line} + + )) + )} + {node.count && ( + + + + {node.count} + + + )} + + ); +} diff --git a/app/src/components/ecosystem/EcosystemRing.tsx b/app/src/components/ecosystem/EcosystemRing.tsx new file mode 100644 index 0000000..2ffcd40 --- /dev/null +++ b/app/src/components/ecosystem/EcosystemRing.tsx @@ -0,0 +1,45 @@ +interface EcosystemRingProps { + cx: number; + cy: number; + radius: number; + label: string; + visible: boolean; + delay?: number; +} + +export function EcosystemRing({ cx, cy, radius, label, visible, delay = 0 }: EcosystemRingProps) { + if (radius === 0) return null; + + return ( + + + + {label} + + + ); +} diff --git a/app/src/components/presentation/AppendixDivider.tsx b/app/src/components/presentation/AppendixDivider.tsx new file mode 100644 index 0000000..1318f01 --- /dev/null +++ b/app/src/components/presentation/AppendixDivider.tsx @@ -0,0 +1,13 @@ +export function AppendixDivider() { + return ( +
+
+
+ + Appendix + +
+
+
+ ); +} diff --git a/app/src/components/presentation/FloatingControls.tsx b/app/src/components/presentation/FloatingControls.tsx new file mode 100644 index 0000000..b3fa884 --- /dev/null +++ b/app/src/components/presentation/FloatingControls.tsx @@ -0,0 +1,22 @@ +import { Maximize, Minimize } from 'lucide-react'; + +interface FloatingControlsProps { + isFullscreen: boolean; + onFullscreen: () => void; + onDownload: () => void; +} + +export function FloatingControls({ isFullscreen, onFullscreen }: FloatingControlsProps) { + return ( +
+ +
+ ); +} diff --git a/app/src/components/presentation/ScrollSection.tsx b/app/src/components/presentation/ScrollSection.tsx new file mode 100644 index 0000000..7b89e3b --- /dev/null +++ b/app/src/components/presentation/ScrollSection.tsx @@ -0,0 +1,23 @@ +import type { ComponentType } from 'react'; +import { useScrollReveal } from '@/hooks/useScrollReveal'; +import type { SlideProps } from '@/lib/types'; + +interface ScrollSectionProps { + id: string; + component: ComponentType; + isSticky?: boolean; +} + +export function ScrollSection({ id, component: Component, isSticky }: ScrollSectionProps) { + const { ref, isVisible } = useScrollReveal(); + + return ( +
+ +
+ ); +} diff --git a/app/src/components/presentation/ScrollStory.tsx b/app/src/components/presentation/ScrollStory.tsx new file mode 100644 index 0000000..b0bd9b8 --- /dev/null +++ b/app/src/components/presentation/ScrollStory.tsx @@ -0,0 +1,62 @@ +import { useCallback, useMemo } from 'react'; +import { useFullscreen } from '@/hooks/useFullscreen'; +import { useKeyboardNav } from '@/hooks/useKeyboardNav'; +import { useScrollNavigation } from '@/hooks/useScrollNavigation'; +import { ScrollSection } from '@/components/presentation/ScrollSection'; +import { SideProgressNav } from '@/components/presentation/SideProgressNav'; +import { FloatingControls } from '@/components/presentation/FloatingControls'; +import { AppendixDivider } from '@/components/presentation/AppendixDivider'; +import type { ScrollSection as ScrollSectionType } from '@/lib/types'; + +interface ScrollStoryProps { + sections: ScrollSectionType[]; +} + +export function ScrollStory({ sections }: ScrollStoryProps) { + const { isFullscreen, toggleFullscreen } = useFullscreen(); + + const sectionIds = useMemo(() => sections.map((s) => s.id), [sections]); + const { activeSection, scrollToSection } = useScrollNavigation(sectionIds); + + const handleDownload = useCallback(() => { + // PPTX export placeholder - will be wired up later + console.log('Download PPTX'); + }, []); + + useKeyboardNav({ + onFullscreen: toggleFullscreen, + onDownload: handleDownload, + }); + + const firstAppendixIndex = sections.findIndex((s) => s.isAppendix); + + return ( +
+ + + {sections.map((section, i) => ( +
+ {i === firstAppendixIndex && } + {i > 0 && i !== firstAppendixIndex && ( +
+ )} + +
+ ))} + + +
+ ); +} diff --git a/app/src/components/presentation/SideProgressNav.tsx b/app/src/components/presentation/SideProgressNav.tsx new file mode 100644 index 0000000..b2f9154 --- /dev/null +++ b/app/src/components/presentation/SideProgressNav.tsx @@ -0,0 +1,35 @@ +import type { ScrollSection } from '@/lib/types'; + +interface SideProgressNavProps { + sections: ScrollSection[]; + activeSection: number; + onNavigate: (id: string) => void; +} + +export function SideProgressNav({ sections, activeSection, onNavigate }: SideProgressNavProps) { + return ( + + ); +} diff --git a/app/src/components/slides/ColdOpenSlide.tsx b/app/src/components/slides/ColdOpenSlide.tsx new file mode 100644 index 0000000..4e09c6d --- /dev/null +++ b/app/src/components/slides/ColdOpenSlide.tsx @@ -0,0 +1,144 @@ +import type { SlideProps } from '@/lib/types'; +import { colors } from '@/lib/colors'; +import { SlideHeader } from '@/components/ui/SlideHeader'; + +const LAYERS = [ + { + layer: 'Foundation', + subtitle: 'Encode the raw material', + color: colors.highlight, + items: [ + { name: 'Human Genome Project', desc: 'Sequenced all 3 billion base pairs of human DNA into an open, machine-readable reference genome', highlight: true }, + ], + }, + { + layer: 'Computation', + subtitle: 'Build models on the data', + color: colors.cosilicoCyan, + items: [ + { name: 'DeepMind / AlphaFold', desc: 'Predicted 3D structures for the entire human proteome cataloged by HGP', highlight: true }, + { name: 'Schrödinger', desc: 'Molecular simulation on open structural data', highlight: false }, + { name: 'Broad Institute', desc: 'Open-source genomic analysis tools (GATK, Terra)', highlight: false }, + ], + }, + { + layer: 'Application', + subtitle: 'Bring it to people', + color: colors.peTeal, + items: [ + { name: '23andMe', desc: 'Made genomics personal — millions of consumers explore their own DNA using open genome data', highlight: true }, + { name: 'Moderna', desc: 'mRNA therapeutics from genomic insights', highlight: false }, + { name: 'Illumina', desc: 'Sequencing hardware', highlight: false }, + ], + }, +]; + +export function ColdOpenSlide(_props: SlideProps) { + return ( +
+ + +

+ One foundational investment — sequencing the human genome — unlocked an entire ecosystem + of computation and application that generated{' '} + $796B in economic value + {' '}from a{' '} + $3.8B investment. +

+ +
+ {LAYERS.map((layer, li) => ( +
+
+ {/* Layer label */} +
+

{layer.layer}

+

{layer.subtitle}

+
+ + {/* Items */} +
+ {layer.items.map((item) => ( +
+

+ {item.name} +

+

+ {item.desc} +

+
+ ))} +
+ +
+ + {/* Connector — three arrows fanning to the items below */} + {li < LAYERS.length - 1 && ( +
+ {LAYERS[li + 1].items.map((_, idx) => ( +
+ + + +
+ ))} +
+ )} +
+ ))} +
+ + {/* Footnote */} +

+ Source: Battelle Technology Partnership Practice, “Economic Impact of the Human Genome Project” (2011). + Figures represent 1988–2010 federal genomic research investment and resulting economic activity. +

+
+ ); +} diff --git a/app/src/components/slides/FourthOptionSlide.tsx b/app/src/components/slides/FourthOptionSlide.tsx new file mode 100644 index 0000000..df9e46b --- /dev/null +++ b/app/src/components/slides/FourthOptionSlide.tsx @@ -0,0 +1,102 @@ +import type { SlideProps } from '@/lib/types'; +import { colors } from '@/lib/colors'; +import { SlideHeader } from '@/components/ui/SlideHeader'; + +const INTERFACES = [ + { label: 'Web app', desc: 'Interactive calculators at policyengine.org' }, + { label: 'Python package', desc: 'Full programmatic access for researchers' }, + { label: 'REST API', desc: 'Integrate into any application' }, + { label: 'AI interfaces', desc: 'Natural language via Claude' }, +]; + +export function FourthOptionSlide(_props: SlideProps) { + return ( +
+ + +
+ {/* Left: screenshot */} +
+ PolicyEngine analyzing Nebraska EITC + + {/* Terminal prompt */} +
+
+ + + +
+
+

+ > What if we raised the standard deduction to $20,000? +

+

+   Running microsimulation on 2024 Enhanced CPS... +

+

+   Cost: $80B · Winners: 62% · Gini: −0.001 +

+
+
+
+ + {/* Right: text + interface cards */} +
+
+

+ Use PolicyEngine — free and instant +

+

+ Microsimulation models for the US and the UK that anyone can run — no gatekeepers, + no wait, fully auditable. +

+
+ +
+ {INTERFACES.map((iface) => ( +
+

+ {iface.label} +

+

+ {iface.desc} +

+
+ ))} +
+ +
+
+
+ ); +} diff --git a/app/src/components/slides/GovernanceSlideNew.tsx b/app/src/components/slides/GovernanceSlideNew.tsx new file mode 100644 index 0000000..7b9cb5c --- /dev/null +++ b/app/src/components/slides/GovernanceSlideNew.tsx @@ -0,0 +1,137 @@ +import { colors } from '@/lib/colors'; +import { governanceBefore, governanceAfter, governanceQuote, governanceDetail } from '@/data/governance'; +import type { SlideProps } from '@/lib/types'; +import { SlideHeader } from '@/components/ui/SlideHeader'; +import { Card } from '@/components/ui/Card'; + +export function GovernanceSlideNew(_props: SlideProps) { + return ( +
+ + + {/* Before / After comparison */} +
+ {/* Before */} + +
+
+
+

+ Before +

+
+

{governanceBefore.title}

+
    + {governanceBefore.items.map((item) => ( +
  • + + {item} +
  • + ))} +
+
+ + + {/* After */} + +
+
+
+

+ After +

+
+

+ {governanceAfter.title} +

+
    + {governanceAfter.items.map((item) => ( +
  • + + {item.text} +
  • + ))} +
+
+ +
+ + {/* Detailed governance per org */} +
+ {governanceDetail.map((org, i) => ( + +
+
+
+
+

{org.name}

+
+
    + {org.details.map((detail) => ( +
  • + + {detail} +
  • + ))} +
+
+ + ))} +
+ + {/* Key insight */} +

+ Each org has governance designed for its mission. A standards body needs neutrality. A company needs speed. A research org needs independence. +

+ + {/* Quote */} +
+

+ {governanceQuote.label} +

+

+ {governanceQuote.quote} +

+

+ {governanceQuote.source} +

+

{governanceQuote.detail}

+
+
+ ); +} diff --git a/app/src/components/slides/HowMicrosimSlide.tsx b/app/src/components/slides/HowMicrosimSlide.tsx new file mode 100644 index 0000000..2354b56 --- /dev/null +++ b/app/src/components/slides/HowMicrosimSlide.tsx @@ -0,0 +1,128 @@ +import type { SlideProps } from '@/lib/types'; +import { colors } from '@/lib/colors'; +import { SlideHeader } from '@/components/ui/SlideHeader'; + +const ROWS = [ + { income: '$100,000', kids: '0', baseTax: '$21,000', reformTax: '$20,000', dEarnings: '+$700', taxBehavior: '$20,150', dTax: '-$850', weight: '500k' }, + { income: '$100,000', kids: '2', baseTax: '$12,000', reformTax: '$10,000', dEarnings: '+$1,000', taxBehavior: '$10,300', dTax: '-$1,700', weight: '700k' }, + { income: '$25,000', kids: '1', baseTax: '-$3,000', reformTax: '-$3,000', dEarnings: '$0', taxBehavior: '-$3,000', dTax: '$0', weight: '100k' }, +]; + +const TOTAL = { baseTax: '$960B', reformTax: '$930B', dEarnings: '+$10B', taxBehavior: '$935B', dTax: '-$25B', weight: '170M' }; + +const STEPS = [ + { label: 'Policies', color: colors.peTeal, text: 'Apply tax & benefit rules under baseline and reform' }, + { label: 'Dynamics', color: colors.highlight, text: 'Model how people change behavior in response to new incentives' }, + { label: 'Households', color: colors.primary, text: 'Scale to millions of representative households \u2192 national estimates' }, +]; + +const thStyle = { color: colors.textTertiary, borderBottom: `1px solid ${colors.borderMedium}` }; +const tdStyle = { color: colors.textSecondary }; +const tdInputStyle = { color: colors.textPrimary, fontWeight: 600 as const }; + +export function HowMicrosimSlide(_props: SlideProps) { + return ( +
+ + +
+ + + + + + + + + + + + + + + + + + + {ROWS.map((row, i) => ( + + + + + + + + + + + ))} + {/* Ellipsis row */} + + {Array.from({ length: 8 }).map((_, i) => ( + + ))} + + {/* Total row */} + + + + + + + + + + +
+ BaselineReform
Gross income# kidsTaxesTaxesΔ earningsTax w/ behaviorΔ taxWeight
{row.income}{row.kids}{row.baseTax}{row.reformTax}{row.dEarnings}{row.taxBehavior}{row.dTax}{row.weight}
TOTAL{TOTAL.baseTax}{TOTAL.reformTax}{TOTAL.dEarnings}{TOTAL.taxBehavior}{TOTAL.dTax}{TOTAL.weight}
+
+ + {/* Step pills */} +
+ {STEPS.map((step) => ( + + {step.label} + + ))} +
+ + {/* Summary */} +

+ Start with one household. Apply policy rules. Model behavioral responses. + Scale to 170M+ representative households.{' '} + + That's microsimulation. + +

+
+ ); +} diff --git a/app/src/components/slides/HowWeOperateSlide.tsx b/app/src/components/slides/HowWeOperateSlide.tsx new file mode 100644 index 0000000..06c4b22 --- /dev/null +++ b/app/src/components/slides/HowWeOperateSlide.tsx @@ -0,0 +1,131 @@ +import type { SlideProps } from '@/lib/types'; +import { colors } from '@/lib/colors'; +import { SlideHeader } from '@/components/ui/SlideHeader'; +import { LAYER_COLORS } from '@/data/layers'; + +const LAYERS = [ + { + layer: 'Foundation', + subtitle: 'Encode the raw material', + label: 'Encode', + title: 'We encode public policy', + color: LAYER_COLORS.foundation, + description: '160,000+ pages of federal tax code, 50 state systems, and 100+ benefit programs — translated into open-source, machine-readable rules.', + examples: ['Federal income tax', 'SNAP & Medicaid', 'State credits & deductions', 'Child Tax Credit'], + }, + { + layer: 'Computation', + subtitle: 'Build models on the data', + label: 'Simulate', + title: 'We develop simulation models', + color: LAYER_COLORS.computation, + description: 'Run encoded rules against representative survey data to model how policy changes affect every household in the country.', + examples: ['Household calculators', 'Budget scoring', 'Distributional analysis', 'Poverty impact'], + }, + { + layer: 'Application', + subtitle: 'Bring it to people', + label: 'Research & tools', + title: 'We conduct research and build tools', + color: LAYER_COLORS.application, + description: 'Produce reports, analysis, and applications that bring policy to life — used by policymakers, journalists, and researchers.', + examples: ['Policy reports', 'Media analysis', 'Academic partnerships', 'Congressional briefings'], + }, +]; + +export function HowWeOperateSlide(_props: SlideProps) { + return ( +
+ + +

+ When we started PolicyEngine, the goal was to provide the{' '} + computational layer + . Over time we found ourselves expanding into encoding the rules themselves and + building the research and tools that bring policy to life. +

+ +
+ {LAYERS.map((layer, li) => ( +
+
+ {/* Layer label — same style as HGP slide */} +
+

{layer.layer}

+

{layer.subtitle}

+
+ + {/* Content card — single full-width card with PE logo */} +
+
+

+ {layer.title} +

+

+ {layer.description} +

+
+
+ {layer.examples.map((ex) => ( + + {ex} + + ))} +
+
+
+ + {/* Connector — same as HGP slide */} + {li < LAYERS.length - 1 && ( +
+ + + +
+ )} +
+ ))} +
+ +

+ Today the alternatives cost $10K+ per license, take weeks, and can't be audited.{' '} + PolicyEngine is free and open. +

+
+ ); +} diff --git a/app/src/components/slides/JourneyBeginsSlide.tsx b/app/src/components/slides/JourneyBeginsSlide.tsx new file mode 100644 index 0000000..22fe2b1 --- /dev/null +++ b/app/src/components/slides/JourneyBeginsSlide.tsx @@ -0,0 +1,87 @@ +import type { SlideProps } from '@/lib/types'; +import { colors } from '@/lib/colors'; +import { SlideHeader } from '@/components/ui/SlideHeader'; +import { QuoteCard } from '@/components/ui/QuoteCard'; +import { weeklyJourney } from '@/data/story'; + +export function JourneyBeginsSlide(_props: SlideProps) { + // Weeks 1-3 for this section + const weeks = weeklyJourney.slice(0, 3); + + return ( +
+ + +
+ {weeks.map((week, i) => ( +
+ {/* Left: timeline marker */} +
+
+
+ + Week {week.week} + +
+ + {week.cumulative} + + + interviews + +
+ + {/* Right: insight + quote */} +
+

+ {week.insight} +

+ + {week.week === 3 && ( +

+ Government standards bodies and AI + econ researchers kept + surfacing—adjacent ecosystems with parallel needs, just + as we had hypothesized. +

+ )} +
+
+ ))} +
+
+ ); +} diff --git a/app/src/components/slides/MeetTheThreeSlide.tsx b/app/src/components/slides/MeetTheThreeSlide.tsx new file mode 100644 index 0000000..3f7d6a4 --- /dev/null +++ b/app/src/components/slides/MeetTheThreeSlide.tsx @@ -0,0 +1,141 @@ +import { colors } from '@/lib/colors'; +import { sustainability } from '@/data/sustainability'; +import type { SlideProps } from '@/lib/types'; +import { SlideHeader } from '@/components/ui/SlideHeader'; +import { Card } from '@/components/ui/Card'; + +interface OrgPanel { + name: string; + tagline: string; + entity: string; + analogy: string; + color: string; + glow: string; + logo: string; + budget: string; + revenueItems: string[]; + quote: string; + quoteName: string; + quoteTitle: string; +} + +const ORG_PANELS: OrgPanel[] = [ + { + name: 'Rules Foundation', + tagline: 'Encoding the world\u2019s rules', + entity: '501(c)(3)', + analogy: 'The HGP for rules \u00b7 Open reference layer', + color: colors.rulesBlue, + glow: colors.glowRules, + logo: '/assets/logos/rf-icon.svg', + budget: sustainability[0].budget, + revenueItems: sustainability[0].items, + quote: 'Programs and tax rules in silos create severe unintended consequences \u2014 cliffs, penalties. Modeling these is influencing legislators.', + quoteName: 'Ray Packer', + quoteTitle: 'Georgia Center for Opportunity', + }, + { + name: 'Cosilico', + tagline: 'Society in silico', + entity: 'Public Benefit Corp', + analogy: 'Society in silico \u00b7 Like Schr\u00f6dinger for policy', + color: colors.cosilicoCyan, + glow: colors.glowCosilico, + logo: '/assets/logos/cosilico-icon.svg', + budget: sustainability[1].budget, + revenueItems: sustainability[1].items, + quote: 'Data and rules complexity create big gaps where better microsim tools and infrastructure are still missing.', + quoteName: 'Jack Landry', + quoteTitle: 'Jane Family Institute', + }, + { + name: 'PolicyEngine', + tagline: 'Policy meets evidence', + entity: '501(c)(3) / UK Charity', + analogy: 'Like IHME for economic policy \u00b7 Open source', + color: colors.peTeal, + glow: colors.glowPE, + logo: '/assets/logos/pe-icon.svg', + budget: sustainability[2].budget, + revenueItems: sustainability[2].items, + quote: 'Think tanks want auditable methodology they can cite in publications.', + quoteName: 'Think tank interviewees', + quoteTitle: '', + }, +]; + +export function MeetTheThreeSlide(_props: SlideProps) { + return ( +
+ + +
+ {ORG_PANELS.map((org, i) => ( + +
+
+ {/* Header */} +
+ {org.name} +

{org.name}

+
+

+ {org.tagline} +

+ + {/* Entity + analogy */} +
+ + {org.entity} + +

{org.analogy}

+
+ + {/* Revenue breakdown */} +
+

+ Revenue +

+
    + {org.revenueItems.map((item) => ( +
  • + + {item} +
  • + ))} +
+
+ + {/* Quote */} +
+ {'\u201C'} +

+ {org.quote} +

+

+ {'\u2014'} {org.quoteName} +

+ {org.quoteTitle && ( +

{org.quoteTitle}

+ )} +
+
+ + ))} +
+
+ ); +} diff --git a/app/src/components/slides/PlaceholderSection.tsx b/app/src/components/slides/PlaceholderSection.tsx new file mode 100644 index 0000000..cf1b226 --- /dev/null +++ b/app/src/components/slides/PlaceholderSection.tsx @@ -0,0 +1,18 @@ +import type { SlideProps } from '@/lib/types'; +import { SlideHeader } from '@/components/ui/SlideHeader'; + +export function createPlaceholder(tag: string, tagColor: string, title: string, subtitle?: string, isAppendix?: boolean) { + return function PlaceholderSlide(_props: SlideProps) { + return ( +
+ + {subtitle && ( +

{subtitle}

+ )} +
+

Section content coming soon

+
+
+ ); + }; +} diff --git a/app/src/components/slides/ProblemSlide.tsx b/app/src/components/slides/ProblemSlide.tsx new file mode 100644 index 0000000..2bfb46d --- /dev/null +++ b/app/src/components/slides/ProblemSlide.tsx @@ -0,0 +1,90 @@ +import type { SlideProps } from '@/lib/types'; +import { colors } from '@/lib/colors'; +import { SlideHeader } from '@/components/ui/SlideHeader'; + +const options = [ + { + title: 'Ask Congressional Budget Office', + verdict: 'Gatekept and slow', + problems: [ + 'Not on Ways & Means or Senate Finance? Good luck.', + 'Months-long queue, even for top committees', + 'Usually just a budget number — no winners/losers breakdown', + ], + }, + { + title: 'Commission a study', + verdict: 'Expensive, black box, one-shot', + problems: [ + '$10K+ per analysis from a think tank or consultant', + 'Proprietary models you can\u2019t inspect or adjust', + 'Others can\u2019t critique or iterate on your proposal', + ], + }, + { + title: 'DIY', + verdict: 'Uncertain, not credible', + problems: [ + 'Tax and transfer policy is enormously complex', + 'Back-of-envelope won\u2019t match CBO\u2019s eventual score', + 'No external credibility for your numbers', + ], + }, +]; + +export function ProblemSlide(_props: SlideProps) { + return ( +
+ + +
+ {options.map((option, i) => ( +
+

+ {option.title} +

+

+ {option.verdict} +

+ +
    + {option.problems.map((problem, j) => ( +
  • + + {problem} +
  • + ))} +
+
+ ))} +
+ +

+ This is a state capacity problem: governments can't analyze their own policy options + fast enough. +

+
+ ); +} diff --git a/app/src/components/slides/RoadAheadSlide.tsx b/app/src/components/slides/RoadAheadSlide.tsx new file mode 100644 index 0000000..5d18a8a --- /dev/null +++ b/app/src/components/slides/RoadAheadSlide.tsx @@ -0,0 +1,142 @@ +import { colors } from '@/lib/colors'; +import { milestones, orgTimelines } from '@/data/timeline'; +import type { SlideProps } from '@/lib/types'; +import { SlideHeader } from '@/components/ui/SlideHeader'; + +const ALL_LABELS = ['Q1 2026', 'Q2-Q3 2026', 'Q4 2026', '2027', '2028']; +const ALL_COLORS = [colors.highlight, colors.accentBlue, colors.accentTeal, colors.accentGreen, colors.accentPurple]; + +const PHASE_LABELS = ALL_LABELS.slice(1); + +export function RoadAheadSlide(_props: SlideProps) { + const now = milestones[0]; + + return ( +
+ + + {/* Everything in one grid so dots align with cells */} +
+ + {/* Row 1: Timeline connector line spanning cols 2-6, with dots placed per-column */} +
+ {/* Gradient line behind dots */} +
+
+
+
+
+ {/* Individual dots in each column */} + {ALL_LABELS.map((_, i) => ( +
+
+
+
+
+ ))} + + {/* Row 2: Time period labels per-column */} +
+ {ALL_LABELS.map((label, i) => ( +
+

+ {label} +

+
+ ))} + {/* Org labels column — rows 3-5 */} + {orgTimelines.map((org, oi) => ( +
+
+ {org.logo ? ( + {org.org} + ) : ( +

+ {org.org} +

+ )} + {org.subtitle && ( +

{org.subtitle}

+ )} +
+
+ ))} + + {/* NOW — single merged box spanning all 3 org rows */} +
+
    + {now.description.map((item) => ( +
  • + + {item} +
  • + ))} +
+
+ + {/* Swim lane cells for each org × each phase (LAUNCH–SUSTAIN) */} + {orgTimelines.map((org, oi) => ( + PHASE_LABELS.map((phase, pi) => { + const match = org.milestones.find((m) => m.period === phase); + return ( +
+ {match && ( +
    + {match.items.map((item) => ( +
  • + + {item} +
  • + ))} +
+ )} +
+ ); + }) + ))} +
+
+ ); +} diff --git a/app/src/components/slides/TensionBuildsSlide.tsx b/app/src/components/slides/TensionBuildsSlide.tsx new file mode 100644 index 0000000..e7d6547 --- /dev/null +++ b/app/src/components/slides/TensionBuildsSlide.tsx @@ -0,0 +1,191 @@ +import type { SlideProps } from '@/lib/types'; +import { colors } from '@/lib/colors'; +import { SlideHeader } from '@/components/ui/SlideHeader'; +import { QuoteCard } from '@/components/ui/QuoteCard'; +import { weeklyJourney } from '@/data/story'; +import { assumptions } from '@/data/assumptions'; + +export function TensionBuildsWeek4Slide(_props: SlideProps) { + const week4 = weeklyJourney[3]; + + return ( +
+ + +
+
+
+ + Week 4 + + + {week4.cumulative} + + + interviews + +
+ +

+ {week4.insight} +

+ +
+ + +
+ +

+ Government agencies needed one thing. AI + econ researchers needed another. + Funders wanted a third. Every interview confirmed the pattern we hypothesized. +

+
+
+ ); +} + +export function TensionBuildsWeek5Slide(_props: SlideProps) { + const week6 = weeklyJourney[5]; + + return ( +
+ + +
+
+
+ + Week 6 + + + {week6.cumulative} + + + interviews + +
+ +

+ {week6.insight} +

+ + {/* Assumption cards */} +
+ {assumptions.map((a, i) => { + const isRejected = a.statusType === 'rejected'; + return ( +
+ + {a.status} + + +

+ {a.title} +

+ +

+ {a.learning} +

+
+ ); + })} +
+ +
+ +
+
+
+ ); +} diff --git a/app/src/components/slides/TheCloseSlide.tsx b/app/src/components/slides/TheCloseSlide.tsx new file mode 100644 index 0000000..bfc5cc1 --- /dev/null +++ b/app/src/components/slides/TheCloseSlide.tsx @@ -0,0 +1,125 @@ +import { colors } from '@/lib/colors'; +import type { SlideProps } from '@/lib/types'; + +const ORGS = [ + { name: 'Rules Foundation', tagline: 'Encoding the world\u2019s rules', color: colors.rulesBlue, logo: '/assets/logos/rf-icon.svg' }, + { name: 'Cosilico', tagline: 'Society in silico', color: colors.cosilicoCyan, logo: '/assets/logos/cosilico-icon.svg' }, + { name: 'PolicyEngine', tagline: 'Policy meets evidence', color: colors.peTeal, logo: '/assets/logos/pe-icon.svg' }, +]; + +const CTA_ITEMS = [ + 'Foundation partners', + 'Agency pilot programs', + 'Investor conversations underway', +]; + +const LINKS = [ + { label: 'rules.foundation', url: 'https://rules.foundation' }, + { label: 'cosilico.ai', url: 'https://cosilico.ai' }, + { label: 'policyengine.org', url: 'https://policyengine.org' }, +]; + +export function TheCloseSlide(_props: SlideProps) { + return ( +
+ {/* HGP callback */} +

+ The Human Genome Project didn't just map DNA. It created an ecosystem—Schrödinger built computational simulation on open molecular data, IHME built the Global Burden of Disease on open health data. Cosilico and PolicyEngine do the same for economic policy—simulation and research on Rules Foundation's open rules. +

+ +

+ We're building the same thing for the rules that govern American life. + Our technology is already in use at 10 Downing Street. Major foundations + are engaging. 100 interviews confirmed the vision. Now we're ready to build. +

+ + {/* Three org circles with connections */} +
+ {ORGS.map((org, i) => ( +
+ {/* Logo */} +
+
+ {org.name} +
+ {/* Connection line to next org */} + {i < ORGS.length - 1 && ( +
+ )} +
+

{org.name}

+

{org.tagline}

+
+ ))} +
+ + {/* Final bold line */} +

+ We hypothesized an ecosystem. 100 interviews proved it.{' '} + Now we're building it. +

+ + {/* CTA */} +
+

+ Looking for +

+
+ {CTA_ITEMS.map((item) => ( + + {item} + + ))} +
+
+ + {/* Links */} +
+ {LINKS.map((link) => ( + + {link.label} + + ))} +
+
+ ); +} diff --git a/app/src/components/slides/ThreeOrgStackSlide.tsx b/app/src/components/slides/ThreeOrgStackSlide.tsx new file mode 100644 index 0000000..725727f --- /dev/null +++ b/app/src/components/slides/ThreeOrgStackSlide.tsx @@ -0,0 +1,119 @@ +import type { SlideProps } from '@/lib/types'; +import { colors } from '@/lib/colors'; +import { SlideHeader } from '@/components/ui/SlideHeader'; +import { LAYER_COLORS } from '@/data/layers'; + +const LAYERS = [ + { + layer: 'Foundation', + subtitle: 'Encode the raw material', + color: LAYER_COLORS.foundation, + org: 'Rules Foundation', + logo: '/assets/logos/rf-full.svg', + description: 'A nonprofit dedicated to encoding tax and benefit rules into open, machine-readable code.', + detail: 'Focused governance for government partnerships, standards bodies, and legislative drafters.', + }, + { + layer: 'Computation', + subtitle: 'Build models on the data', + color: LAYER_COLORS.computation, + org: 'Cosilico', + logo: '/assets/logos/cosilico-full.svg', + description: 'A commercial platform building simulation APIs on open rule encodings.', + detail: 'Revenue-generating model enabling enterprise customers, certified partners, and SaaS products.', + }, + { + layer: 'Application', + subtitle: 'Bring it to people', + color: LAYER_COLORS.application, + org: 'PolicyEngine', + logo: '/assets/logos/pe-full-white.svg', + description: 'The research and public-facing layer — bringing policy to life for individuals and society.', + detail: 'Continues the mission: free, open analysis for policymakers, journalists, and researchers.', + }, +]; + +export function ThreeOrgStackSlide(_props: SlideProps) { + return ( +
+ + +

+ 100 conversations confirmed it: different audiences need different governance, + funding models, and technical architecture. One organization genuinely cannot serve + all three layers well. +

+ +
+ {LAYERS.map((layer, li) => ( +
+
+ {/* Layer label — identical style to HGP and PE slides */} +
+

{layer.layer}

+

{layer.subtitle}

+
+ + {/* Org card */} +
+ {layer.org} +
+

+ {layer.description} +

+

+ {layer.detail} +

+
+
+
+ + {/* Connector — same as other slides */} + {li < LAYERS.length - 1 && ( +
+ + + +
+ )} +
+ ))} +
+ +

+ Three organizations. Each specialized. Each stronger for the separation.{' '} + + Connected by shared open-source code. + +

+
+ ); +} diff --git a/app/src/components/slides/WhatWeDoSlide.tsx b/app/src/components/slides/WhatWeDoSlide.tsx new file mode 100644 index 0000000..4ae89af --- /dev/null +++ b/app/src/components/slides/WhatWeDoSlide.tsx @@ -0,0 +1,82 @@ +import type { SlideProps } from '@/lib/types'; +import { colors } from '@/lib/colors'; +import { SlideHeader } from '@/components/ui/SlideHeader'; +import { StatCard } from '@/components/ui/StatCard'; +import { stats } from '@/data/impact'; + +const ORGANIZATIONS = [ + { name: '10 Downing Street', logo: '/assets/logos/organizations/10-downing-street.png' }, + { name: 'Joint Economic Committee', logo: '/assets/logos/organizations/jec.png' }, + { name: 'Bureau of Economic Analysis', logo: '/assets/logos/organizations/bea.png' }, + { name: 'Niskanen Center', logo: '/assets/logos/organizations/niskanen-center.png' }, + { name: 'American Enterprise Institute', logo: '/assets/logos/organizations/aei.png' }, + { name: 'NBER', logo: '/assets/logos/organizations/nber.png' }, + { name: 'Georgetown University', logo: '/assets/logos/organizations/georgetown.png' }, + { name: 'University of Michigan', logo: '/assets/logos/organizations/umich.png' }, + { name: 'USC', logo: '/assets/logos/organizations/usc.png' }, + { name: 'Prenatal-to-3 Policy Impact Center', logo: '/assets/logos/organizations/pn3policy.png' }, + { name: 'Colorado Fiscal Institute', logo: '/assets/logos/organizations/cfi.png' }, + { name: 'Gary Community Ventures', logo: '/assets/logos/organizations/gary-community-ventures.png' }, + { name: 'Mothers Outreach Network', logo: '/assets/logos/organizations/mothers-outreach-network.png' }, + { name: 'Atlanta Fed', logo: '/assets/logos/organizations/atlanta-fed.png' }, + { name: 'Living Wage Calculator', logo: '/assets/logos/organizations/living-wage-calculator.png' }, + { name: 'UHERO', logo: '/assets/logos/organizations/uhero.png' }, + { name: 'UBI Center', logo: '/assets/logos/organizations/ubicenter.png' }, + { name: 'MyFriendBen', logo: '/assets/logos/organizations/myfriendben.png' }, + { name: 'Amplifi', logo: '/assets/logos/organizations/amplifi.png' }, + { name: 'Mirza', logo: '/assets/logos/organizations/mirza.png' }, +]; + +export function WhatWeDoSlide(_props: SlideProps) { + return ( +
+ + + {/* Stat cards */} +
+ {stats.map((stat, i) => ( + + ))} +
+ + {/* Logo grid */} +
+

+ Used by +

+
+ {ORGANIZATIONS.map((org) => ( +
+ {org.name} +
+ ))} +
+
+
+ ); +} diff --git a/app/src/components/slides/WhoWeAreSlide.tsx b/app/src/components/slides/WhoWeAreSlide.tsx new file mode 100644 index 0000000..cbed10d --- /dev/null +++ b/app/src/components/slides/WhoWeAreSlide.tsx @@ -0,0 +1,113 @@ +import type { SlideProps } from '@/lib/types'; +import { colors } from '@/lib/colors'; +import { SlideHeader } from '@/components/ui/SlideHeader'; +import { team } from '@/data/team'; +import { trustedBy } from '@/data/impact'; + +export function WhoWeAreSlide(_props: SlideProps) { + return ( +
+ PolicyEngine + + + {/* Key numbers */} +
+
+ 100+ + interviews conducted +
+
+ + {/* Team cards */} +
+ {team.map((member, i) => ( +
+ {/* Color accent bar */} +
+ + {/* Photo */} +
+ {member.name} +
+ + {/* Info */} +
+

+ {member.name} +

+

+ {member.role} +

+
+ {member.bio.map((line) => ( +

+ {line} +

+ ))} +
+
+
+ ))} +
+ + {/* Summary line */} +

+ Together we've built the most widely used open-source tax-benefit + microsimulation platform in the US and the UK. +

+ + {/* Trusted by */} +
+

+ Trusted by +

+

+ {trustedBy.line1} +

+

+ {trustedBy.line2} +

+
+
+ ); +} diff --git a/app/src/components/slides/appendix/CanvasDetailSlide.tsx b/app/src/components/slides/appendix/CanvasDetailSlide.tsx new file mode 100644 index 0000000..7605f49 --- /dev/null +++ b/app/src/components/slides/appendix/CanvasDetailSlide.tsx @@ -0,0 +1,88 @@ +import type { SlideProps } from '@/lib/types'; +import { colors } from '@/lib/colors'; +import { SlideHeader } from '@/components/ui/SlideHeader'; +import { Card } from '@/components/ui/Card'; + +const revenueModels = [ + { + name: 'Rules Foundation', + logo: '/assets/logos/rf-full.svg', + color: colors.rulesBlue, + entity: '501(c)(3)', + budget: '~$300K/year', + streams: [ + { label: 'Government grants', pct: '40%' }, + { label: 'Foundation grants', pct: '30%' }, + { label: 'AI lab in-kind (compute)', pct: '20%' }, + { label: 'Downstream contributions', pct: '10%' }, + ], + }, + { + name: 'Cosilico', + logo: '/assets/logos/cosilico-full.svg', + color: colors.cosilicoCyan, + entity: 'Public Benefit Corp', + budget: '$500K \u2192 $75M ARR over 5yr', + streams: [ + { label: 'Open source (free, Apache 2.0)', pct: 'Free' }, + { label: 'API calls', pct: '$0.001\u20130.01/call' }, + { label: 'Data enrichment', pct: '$0.10\u20131.00/record' }, + { label: 'Enterprise', pct: '$100K\u20131M+/yr' }, + ], + }, + { + name: 'PolicyEngine', + logo: '/assets/logos/pe-full-white.svg', + color: colors.peTeal, + entity: '501(c)(3) / Charity', + budget: '~$500K/year', + streams: [ + { label: 'Foundation grants', pct: '60%' }, + { label: 'Government grants (NSF)', pct: '20%' }, + { label: 'Earned revenue', pct: '20%' }, + { label: 'Path to 40%+ earned', pct: 'Goal' }, + ], + }, +]; + +export function CanvasDetailSlide(_props: SlideProps) { + return ( +
+ + +
+ {revenueModels.map((org, i) => ( + +
+
+ {org.name} +

+ {org.entity} +

+

+ {org.budget} +

+
+ {org.streams.map((s) => ( +
+ + {s.label} + + + {s.pct} + +
+ ))} +
+
+ + ))} +
+
+ ); +} diff --git a/app/src/components/slides/appendix/CanvasSlide.tsx b/app/src/components/slides/appendix/CanvasSlide.tsx new file mode 100644 index 0000000..e317624 --- /dev/null +++ b/app/src/components/slides/appendix/CanvasSlide.tsx @@ -0,0 +1,46 @@ +import type { SlideProps } from '@/lib/types'; +import { colors } from '@/lib/colors'; +import { SlideHeader } from '@/components/ui/SlideHeader'; +import { Card } from '@/components/ui/Card'; +import { canvasMembers } from '@/data/appendix'; + +export function CanvasSlide(_props: SlideProps) { + const sections = [canvasMembers.community, canvasMembers.stakeholders, canvasMembers.valueProps]; + + return ( +
+ + +
+ {sections.map((section, i) => ( + +
+
+

+ {section.title} +

+
    + {section.items.map((item) => { + const [label, detail] = item.split(' | '); + return ( +
  • + {label} + {detail && ( + — {detail} + )} +
  • + ); + })} +
+
+ + ))} +
+
+ ); +} diff --git a/app/src/components/slides/appendix/CompetitiveSlide.tsx b/app/src/components/slides/appendix/CompetitiveSlide.tsx new file mode 100644 index 0000000..a70331e --- /dev/null +++ b/app/src/components/slides/appendix/CompetitiveSlide.tsx @@ -0,0 +1,97 @@ +import type { SlideProps } from '@/lib/types'; +import { colors } from '@/lib/colors'; +import { SlideHeader } from '@/components/ui/SlideHeader'; +import { competitors } from '@/data/appendix'; + +export function CompetitiveSlide(_props: SlideProps) { + return ( +
+ + + {/* Competitor table */} +
+ + + + + + + + + + {competitors.map((c, i) => ( + + + + + + ))} + +
+ Competitor + + Key metric + + Limitation +
+ {c.name} + + {c.metric} + + {c.focus} +
+
+ + {/* PolicyEngine differentiation */} +
+

+ PolicyEngine's differentiation +

+
+ {['Open-source', 'Comprehensive (taxes + benefits)', 'Free for researchers', '50+ state systems', '100+ benefit programs'].map((d) => ( + + {d} + + ))} +
+
+
+ ); +} diff --git a/app/src/components/slides/appendix/GovernanceDetailSlide.tsx b/app/src/components/slides/appendix/GovernanceDetailSlide.tsx new file mode 100644 index 0000000..5d41acf --- /dev/null +++ b/app/src/components/slides/appendix/GovernanceDetailSlide.tsx @@ -0,0 +1,84 @@ +import type { SlideProps } from '@/lib/types'; +import { colors } from '@/lib/colors'; +import { SlideHeader } from '@/components/ui/SlideHeader'; +import { Card } from '@/components/ui/Card'; + +const governanceOrgs = [ + { + name: 'Rules Foundation', + logo: '/assets/logos/rf-full.svg', + color: colors.rulesBlue, + entity: 'Multi-stakeholder 501(c)(3)', + details: [ + 'Technical steering committee', + 'Encoding standards board', + 'Partisan neutrality requirement', + 'Mandatory statute citations', + 'Multi-reviewer validation', + 'Historical versioning of all encodings', + ], + }, + { + name: 'Cosilico', + logo: '/assets/logos/cosilico-full.svg', + color: colors.cosilicoCyan, + entity: 'Public Benefit Corp (mission-locked)', + details: [ + 'Board with public benefit mandate', + 'Open-source core (Apache 2.0)', + 'Enterprise services layer', + 'Certified partner program (Salesforce model)', + 'Mission locked by charter', + ], + }, + { + name: 'PolicyEngine', + logo: '/assets/logos/pe-full-white.svg', + color: colors.peTeal, + entity: '501(c)(3) / UK Charity (AGPL)', + details: [ + 'Founder-led \u2192 Technical steering committee', + 'Advisory board from interview network', + 'Contributor guidelines', + 'Formal research partnership agreements', + 'Open roadmap with community input', + ], + }, +]; + +export function GovernanceDetailSlide(_props: SlideProps) { + return ( +
+ + +
+ {governanceOrgs.map((org, i) => ( + +
+
+ {org.name} +

+ {org.entity} +

+
    + {org.details.map((detail) => ( +
  • + + + {detail} + +
  • + ))} +
+
+ + ))} +
+
+ ); +} diff --git a/app/src/components/slides/appendix/HighlightsSlide.tsx b/app/src/components/slides/appendix/HighlightsSlide.tsx new file mode 100644 index 0000000..19a16ee --- /dev/null +++ b/app/src/components/slides/appendix/HighlightsSlide.tsx @@ -0,0 +1,47 @@ +import type { SlideProps } from '@/lib/types'; +import { colors } from '@/lib/colors'; +import { SlideHeader } from '@/components/ui/SlideHeader'; +import { interviewHighlights } from '@/data/appendix'; + +export function HighlightsSlide(_props: SlideProps) { + return ( +
+ + +
+ {interviewHighlights.map((h, i) => { + const [name, ...rest] = h.name.split(', '); + const org = rest.join(', '); + return ( +
+

+ {name} +

+ {org && ( +

+ {org} +

+ )} +

+ {h.insight} +

+
+ ); + })} +
+
+ ); +} diff --git a/app/src/components/slides/appendix/ImpactGoalsSlide.tsx b/app/src/components/slides/appendix/ImpactGoalsSlide.tsx new file mode 100644 index 0000000..7fe16d0 --- /dev/null +++ b/app/src/components/slides/appendix/ImpactGoalsSlide.tsx @@ -0,0 +1,70 @@ +import type { SlideProps } from '@/lib/types'; +import { colors } from '@/lib/colors'; +import { SlideHeader } from '@/components/ui/SlideHeader'; +import { Card } from '@/components/ui/Card'; +import { impactGoals, impactGoalsEvolution } from '@/data/appendix'; + +export function ImpactGoalsSlide(_props: SlideProps) { + return ( +
+ + + {/* Evolution context */} +
+

+ How our thesis evolved +

+

+ Week 2:{' '} + {impactGoalsEvolution.week2} +

+

+ Week 3:{' '} + {impactGoalsEvolution.week3} +

+
+ + {/* Per-org IF/THEN cards */} +
+ {impactGoals.map((goal, i) => ( + +
+
+

+ {goal.name} +

+
+

+ IF +

+

+ {goal.condition} +

+
+
+

+ THEN +

+

+ {goal.impact} +

+
+
+ + ))} +
+
+ ); +} diff --git a/app/src/components/slides/appendix/MarketSlide.tsx b/app/src/components/slides/appendix/MarketSlide.tsx new file mode 100644 index 0000000..8b47d44 --- /dev/null +++ b/app/src/components/slides/appendix/MarketSlide.tsx @@ -0,0 +1,84 @@ +import type { SlideProps } from '@/lib/types'; +import { colors } from '@/lib/colors'; +import { SlideHeader } from '@/components/ui/SlideHeader'; +import { markets } from '@/data/appendix'; + +// Parse TAM string to a numeric value for bar sizing +function tamToValue(tam: string): number { + if (tam === 'Strategic' || tam === 'Growing') return 5; + const match = tam.match(/([\d.]+)/); + if (!match) return 5; + const num = parseFloat(match[1]); + if (tam.includes('B')) return num; + if (tam.includes('M')) return num / 1000; + return num; +} + +export function MarketSlide(_props: SlideProps) { + const maxVal = Math.max(...markets.map((m) => tamToValue(m.tam))); + + return ( +
+ + +
+ {markets.map((m, i) => { + const val = tamToValue(m.tam); + const pct = Math.max((val / maxVal) * 100, 4); + const isStrategic = m.tam === 'Strategic' || m.tam === 'Growing'; + return ( +
+ + {m.name} + +
+
+ + {m.tam} + +
+
+
+ ); + })} +
+ + {/* Total */} +
+

+ $250B+ +

+

+ Total addressable market (Cosilico) +

+
+
+ ); +} diff --git a/app/src/components/slides/appendix/PartnersSlide.tsx b/app/src/components/slides/appendix/PartnersSlide.tsx new file mode 100644 index 0000000..8d13bce --- /dev/null +++ b/app/src/components/slides/appendix/PartnersSlide.tsx @@ -0,0 +1,59 @@ +import type { SlideProps } from '@/lib/types'; +import { colors } from '@/lib/colors'; +import { SlideHeader } from '@/components/ui/SlideHeader'; +import { Card } from '@/components/ui/Card'; +import { partners } from '@/data/appendix'; + +export function PartnersSlide(_props: SlideProps) { + return ( +
+ + +
+ {partners.map((p, i) => ( + +
+
+

+ {p.name} +

+

+ {p.type} +

+

+ {p.orgs} +

+ +
+

+ Value +

+
    + {p.value.map((v) => ( +
  • + • {v} +
  • + ))} +
+
+ +
+

+ Risk +

+

+ {p.risk} +

+
+
+ + ))} +
+
+ ); +} diff --git a/app/src/components/slides/appendix/VoicesSlide.tsx b/app/src/components/slides/appendix/VoicesSlide.tsx new file mode 100644 index 0000000..24164f5 --- /dev/null +++ b/app/src/components/slides/appendix/VoicesSlide.tsx @@ -0,0 +1,31 @@ +import type { SlideProps } from '@/lib/types'; +import { colors } from '@/lib/colors'; +import { SlideHeader } from '@/components/ui/SlideHeader'; +import { QuoteCard } from '@/components/ui/QuoteCard'; +import { voicesQuotes } from '@/data/appendix'; + +export function VoicesSlide(_props: SlideProps) { + return ( +
+ + +
+ {voicesQuotes.map((q, i) => ( + + ))} +
+
+ ); +} diff --git a/app/src/components/ui/AccentLine.tsx b/app/src/components/ui/AccentLine.tsx new file mode 100644 index 0000000..72743ed --- /dev/null +++ b/app/src/components/ui/AccentLine.tsx @@ -0,0 +1,8 @@ +interface AccentLineProps { + color: string; + width?: string; +} + +export function AccentLine({ color, width = 'w-16' }: AccentLineProps) { + return
; +} diff --git a/app/src/components/ui/Card.tsx b/app/src/components/ui/Card.tsx new file mode 100644 index 0000000..4e81c3c --- /dev/null +++ b/app/src/components/ui/Card.tsx @@ -0,0 +1,23 @@ +import type { ReactNode } from 'react'; + +interface CardProps { + children: ReactNode; + borderColor?: string; + className?: string; + delay?: number; +} + +export function Card({ children, borderColor, className = '', delay = 0 }: CardProps) { + return ( +
+ {children} +
+ ); +} diff --git a/app/src/components/ui/OrgBadge.tsx b/app/src/components/ui/OrgBadge.tsx new file mode 100644 index 0000000..0b7dee0 --- /dev/null +++ b/app/src/components/ui/OrgBadge.tsx @@ -0,0 +1,13 @@ +interface OrgBadgeProps { + color: string; + size?: number; +} + +export function OrgBadge({ color, size = 10 }: OrgBadgeProps) { + return ( +
+ ); +} diff --git a/app/src/components/ui/ProgressBar.tsx b/app/src/components/ui/ProgressBar.tsx new file mode 100644 index 0000000..c7f54fd --- /dev/null +++ b/app/src/components/ui/ProgressBar.tsx @@ -0,0 +1,28 @@ +interface ProgressBarProps { + value: number; + max: number; + color: string; + label: string; + count: string | number; + delay?: number; +} + +export function ProgressBar({ value, max, color, label, count, delay = 0 }: ProgressBarProps) { + return ( +
+ {label} +
+
+
+ {count} +
+ ); +} diff --git a/app/src/components/ui/QuoteCard.tsx b/app/src/components/ui/QuoteCard.tsx new file mode 100644 index 0000000..9e74325 --- /dev/null +++ b/app/src/components/ui/QuoteCard.tsx @@ -0,0 +1,28 @@ +interface QuoteCardProps { + quote: string; + name: string; + title: string; + color: string; + delay?: number; +} + +export function QuoteCard({ quote, name, title, color, delay = 0 }: QuoteCardProps) { + return ( +
+ {'\u201C'} +

{quote}

+

{'\u2014'} {name}

+

{title}

+
+ ); +} diff --git a/app/src/components/ui/SlideHeader.tsx b/app/src/components/ui/SlideHeader.tsx new file mode 100644 index 0000000..5304164 --- /dev/null +++ b/app/src/components/ui/SlideHeader.tsx @@ -0,0 +1,32 @@ +import { AccentLine } from '@/components/ui/AccentLine'; + +interface SlideHeaderProps { + tag: string; + tagColor: string; + title?: string; + isAppendix?: boolean; +} + +export function SlideHeader({ tag, tagColor, title, isAppendix }: SlideHeaderProps) { + return ( +
+ {isAppendix && ( +

+ Appendix +

+ )} +

+ {tag} +

+ + {title && ( +

+ {title} +

+ )} +
+ ); +} diff --git a/app/src/components/ui/StatCard.tsx b/app/src/components/ui/StatCard.tsx new file mode 100644 index 0000000..88f0894 --- /dev/null +++ b/app/src/components/ui/StatCard.tsx @@ -0,0 +1,25 @@ +interface StatCardProps { + number: string; + label: string; + color: string; + delay?: number; +} + +export function StatCard({ number, label, color, delay = 0 }: StatCardProps) { + return ( +
+ {number} + {label} +
+ ); +} diff --git a/app/src/data/appendix.ts b/app/src/data/appendix.ts new file mode 100644 index 0000000..540c8ec --- /dev/null +++ b/app/src/data/appendix.ts @@ -0,0 +1,158 @@ +import type { Quote, Partner, Competitor, MarketSegment, ImpactGoal, InterviewHighlight } from '@/lib/types'; +import { colors } from '@/lib/colors'; + +export const voicesQuotes: Quote[] = [ + { + text: 'Institutions like the Fed face strong IT/security barriers to external APIs \u2014 installable, low-dependency tools fit much better than cloud services.', + name: 'Jacob Walker', + title: 'Sr. Research Analyst, Atlanta Fed', + color: colors.rulesBlue, + }, + { + text: 'PolicyEngine-style tools are ready for deployment; the blocker is institutional slowness, not technology.', + name: 'Martin Perron', + title: 'Rules as Code, Canadian Digital Services', + color: colors.cosilicoCyan, + }, + { + text: 'Programs and tax rules in silos create severe unintended consequences \u2014 cliffs, penalties. Modeling these is influencing legislators.', + name: 'Ray Packer', + title: 'Georgia Center for Opportunity', + color: colors.peTeal, + }, + { + text: 'Data and rules complexity create big gaps where better microsim tools and infrastructure are still missing.', + name: 'Jack Landry', + title: 'Jane Family Institute', + color: colors.accentOrange, + }, +]; + +export const impactGoalsEvolution = { + week2: 'If this 1 Senate Bill cites PolicyEngine \u2192 unlock direct government contracting', + week3: 'If 10 congressional bills cite PolicyEngine \u2192 public deserves open policy estimates', +}; + +export const impactGoals: ImpactGoal[] = [ + { + name: 'Rules Foundation', + color: colors.rulesBlue, + condition: 'If one AI lab evaluates its models against Rules Foundation benchmarks', + impact: 'It will provide society a shared, verifiable standard for legal code interpretation', + }, + { + name: 'Cosilico', + color: colors.cosilicoCyan, + condition: 'If one state agency replaces a proprietary vendor with Cosilico Rules', + impact: 'It will prove that government will invest in open-source rules infrastructure', + }, + { + name: 'PolicyEngine', + color: colors.peTeal, + condition: 'If 20 researchers use PolicyEngine in published papers', + impact: 'It will prove that open-source tools can replace proprietary licenses in policy research', + }, +]; + +export const partners: Partner[] = [ + { + name: 'AI + Econ Researchers', + orgs: 'AI-economics researchers across institutions', + type: 'Research + Validation', + value: ['Verifiable ground truth for AI policy reasoning'], + risk: 'May build bespoke tools internally', + color: colors.accentBlue, + }, + { + name: 'Policy Foundations', + orgs: 'Arnold Ventures, Pritzker', + type: 'Funding + Community Support', + value: ['Higher-quality policy research', 'Full transparency', 'One grant funds infra used by many orgs'], + risk: 'Foundation priorities shift with leadership cycles', + color: colors.accentGreen, + }, + { + name: 'Major Think Tanks', + orgs: 'Brookings, CRFB, Niskanen, Urban', + type: 'Distribution + Funding', + value: ['Expert modeling without internal capacity', 'Auditable methodology for publications', 'Fast turnaround'], + risk: 'Could build in-house from open-source', + color: colors.accentPurple, + }, +]; + +export const canvasMembers = { + community: { + title: 'Community Members (56 interviews)', + color: colors.accentBlue, + items: [ + 'PE Team: 10 | Build core models', + 'Academic Researchers: 18 | Empirical questions', + 'Government Economists: 7 | Validate estimates', + 'Think Tank Analysts: 12 | Policy reports', + 'OSS Contributors: 4 | Code, fix bugs', + 'Data Journalists: 5 | Fact-check, interactives', + ], + }, + stakeholders: { + title: 'Other Stakeholders (44 interviews)', + color: colors.accentTeal, + items: [ + 'AI + Econ Researchers: 10 | AI + policy research', + 'Funders: 10 | Fund development', + 'Non-Users: 8 | Understand barriers', + 'Gov Standards Bodies: 7 | Interoperability', + 'Policy Advocates: 6 | Shape narrative', + 'Competitors: 3 | Ecosystem mapping', + ], + }, + valueProps: { + title: 'Value Propositions', + color: colors.accentGreen, + items: [ + 'Transparency: Audit every calculation', + 'Speed: Seconds vs. weeks', + 'Cost: Free vs. $10K+ licenses', + 'Integration: API for existing workflows', + 'Credibility: Validated vs. IRS, SSA, CBO', + ], + }, +}; + +export const competitors: Competitor[] = [ + { name: 'Column Tax', metric: '$26.8M raised', focus: 'Filing, not calculation' }, + { name: 'Symmetry', metric: '64M+ employees/yr', focus: 'Payroll tax only' }, + { name: 'Benefit Kitchen', metric: '7 states', focus: '18 programs, healthcare focus' }, + { name: 'Avalara', metric: 'Acquired $8.4B', focus: 'Sales tax only' }, + { name: 'IMPLAN', metric: 'Acquired $100M+', focus: 'I-O multipliers, no household rules' }, +]; + +export const markets: MarketSegment[] = [ + { name: 'State Revenue Depts', tam: '$1B+' }, + { name: 'Benefits Agencies', tam: '$500M+' }, + { name: 'Tax Software Vendors', tam: '$90B+' }, + { name: 'Financial Planners', tam: '$5B+' }, + { name: 'Banks & Lenders', tam: '$100B+' }, + { name: 'Insurance/Actuaries', tam: '$50B+' }, + { name: 'AI + Econ Researchers', tam: 'Strategic' }, + { name: 'AI Agent Builders', tam: '$10B+' }, + { name: 'Marketing/Data', tam: '$2.4B+' }, + { name: 'Economic Analysts', tam: '$50-100M+' }, + { name: 'Quant Finance', tam: '$500B+' }, + { name: 'VC/Impact', tam: 'Growing' }, +]; + +export const interviewHighlights: InterviewHighlight[] = [ + { name: 'Nikhil Woodruff, CTO, PE', insight: 'Speed + open source + prototyping; encoding fast but review/debugging bottleneck' }, + { name: 'Jason Morris, Thomson Reuters', insight: 'Most leverage is upstream: getting legislative drafters to author executable rules early' }, + { name: 'Jacob Walker, Atlanta Fed', insight: 'Fed faces IT/security barriers to external APIs; installable tools fit better' }, + { name: 'Martin Perron, Canadian Digital Services', insight: 'PE-style tools ready for deployment; blocker is institutional slowness' }, + { name: 'Ray Packer, GA Center for Opportunity', insight: 'Programs in silos create cliffs/penalties; modeling these influences legislators' }, + { name: 'Paul Huntsberger, Amplifi', insight: 'DMN-style rule engines were overkill; PE needs faster staged responses' }, + { name: 'Andrew Lautz, BPC', insight: 'Fast open tools especially valuable vs. slow official scores; state-level data priority' }, + { name: 'Kavya Vaghul, Living Wage Calculator', insight: 'Users want more granular local data; demand for \'thriving wage\' concept' }, + { name: 'John Ricco, Yale Budget Lab', insight: 'Strong demand for AI research; humans no longer writing code; tariffs + childcare focus' }, + { name: 'Alejandro Basalo, MSNBC', insight: 'Timing and momentum matter; household examples anchor reporting' }, + { name: 'Jack Landry, Jane Family Institute', insight: 'Custom microsims for deep accuracy; PE for quick first-pass analyses' }, + { name: 'Thomas Cintra, Outtake', insight: 'AI compresses dev cycles; ship to learn, not to perfect' }, +]; diff --git a/app/src/data/assumptions.ts b/app/src/data/assumptions.ts new file mode 100644 index 0000000..f09d006 --- /dev/null +++ b/app/src/data/assumptions.ts @@ -0,0 +1,41 @@ +import type { Assumption } from '@/lib/types'; +import { colors } from '@/lib/colors'; + +export const assumptions: Assumption[] = [ + { + status: '\u2713 CONFIRMED', + statusType: 'confirmed', + title: 'Researchers adopt OSS\nif accessible', + learning: 'But they also need validation against official sources before they\'ll cite it.', + quote: '\u201CFast, open tools are especially valuable for quick turnaround vs. slow official scores.\u201D', + source: '\u2014 Andrew Lautz, BPC', + color: colors.accentGreen, + }, + { + status: '\u2713 CONFIRMED', + statusType: 'confirmed', + title: 'Funders value transparency\nenough to fund OSS', + learning: 'One grant funds infrastructure used by multiple orgs \u2014 leverage argument works.', + quote: '\u201CThink tanks want auditable methodology they can cite in publications.\u201D', + source: '\u2014 Think tank interviewees', + color: colors.accentGreen, + }, + { + status: '\u2261 PARTIALLY', + statusType: 'partial', + title: 'Developers contribute for\npolicy impact alone', + learning: 'They also need portfolio value, learning opportunities, and community.', + quote: '\u201CAI is transforming developer onboarding, enabling faster ramp-up.\u201D', + source: '\u2014 Anthony Volk, PolicyEngine', + color: colors.accentOrange, + }, + { + status: '\u2713 VALIDATED', + statusType: 'rejected', + title: 'One organization cannot\nserve all segments', + learning: 'Our pre-POSE hypothesis confirmed: infrastructure, standards, and research need different governance and funding.', + quote: '\u201CYou want this fresh start with clean governance from day one.\u201D', + source: '\u2014 Foundation governance advisor', + color: colors.highlight, + }, +]; diff --git a/app/src/data/ecosystem.ts b/app/src/data/ecosystem.ts new file mode 100644 index 0000000..9d99446 --- /dev/null +++ b/app/src/data/ecosystem.ts @@ -0,0 +1,90 @@ +import type { EcosystemNode, EcosystemEdge } from '@/lib/types'; +import { colors } from '@/lib/colors'; + +// Ring radii (used in the SVG viewBox 1800x900) +export const RING_RADII = [0, 260, 400, 510, 620]; +export const RING_LABELS = ['Core', 'Direct Users', 'Channel Partners', 'Capabilities', 'Revenue']; +export const CENTER = { x: 950, y: 680 }; + +export const ecosystemNodes: EcosystemNode[] = [ + // Ring 0: Core orgs + { id: 'pe-unified', label: 'PolicyEngine', ring: 0, angle: 270, color: colors.peTeal, org: 'all', description: 'Unified organization', visibleAtStep: 1 }, + { id: 'rules', label: 'Rules\nFoundation', ring: 0, angle: 150, color: colors.rulesBlue, org: 'rules', description: '501(c)(3) - Encode the law', visibleAtStep: 2 }, + { id: 'cosilico', label: 'Cosilico', ring: 0, angle: 270, color: colors.cosilicoCyan, org: 'cosilico', description: 'PBC - Run the infrastructure', visibleAtStep: 2 }, + { id: 'pe', label: 'PolicyEngine', ring: 0, angle: 30, color: colors.peTeal, org: 'pe', description: '501(c)(3) - Tell the story', visibleAtStep: 2 }, + + // Ring 1: Direct users + { id: 'researchers', label: 'Academic\nResearchers', ring: 1, angle: 355, color: colors.accentBlue, org: 'pe', count: 18, description: 'Empirical policy questions', visibleAtStep: 1 }, + { id: 'think-tanks', label: 'Think Tank\nAnalysts', ring: 1, angle: 50, color: colors.accentTeal, org: 'pe', count: 12, description: 'Policy reports & analysis', visibleAtStep: 1 }, + { id: 'gov-econ', label: 'Government\nEconomists', ring: 1, angle: 105, color: colors.accentGreen, org: 'rules', count: 7, description: 'Validate estimates', visibleAtStep: 1 }, + { id: 'journalists', label: 'Data\nJournalists', ring: 1, angle: 175, color: colors.lightGray, org: 'pe', count: 5, description: 'Fact-check & interactives', visibleAtStep: 1 }, + { id: 'advocates', label: 'Policy\nAdvocates', ring: 1, angle: 205, color: colors.accentPurple, org: 'pe', count: 6, description: 'Shape policy narrative', visibleAtStep: 1 }, + { id: 'contributors', label: 'OSS\nContributors', ring: 1, angle: 255, color: colors.accentGreen, org: 'rules', count: 4, description: 'Code & fix bugs', visibleAtStep: 1 }, + { id: 'pe-team', label: 'PE Team', ring: 1, angle: 338, color: colors.peTeal, org: 'all', count: 10, description: 'Build core models', visibleAtStep: 1 }, + + // Ring 2: Channel partners + { id: 'ai-labs', label: 'AI + Econ\nResearchers', ring: 2, angle: 20, color: colors.cosilicoCyan, org: 'cosilico', count: 10, description: 'AI + policy research', visibleAtStep: 1 }, + { id: 'gov-standards', label: 'Gov Standards\nBodies', ring: 2, angle: 92, color: colors.rulesBlue, org: 'rules', count: 7, description: 'Interoperability', visibleAtStep: 1 }, + { id: 'funders', label: 'Funders', ring: 2, angle: 160, color: colors.accentOrange, org: 'all', count: 10, description: 'Fund development', visibleAtStep: 1 }, + { id: 'non-users', label: 'Non-Users', ring: 2, angle: 236, color: colors.highlight, org: 'all', count: 8, description: 'Understand barriers', visibleAtStep: 1 }, + { id: 'competitors', label: 'Competitors', ring: 2, angle: 295, color: colors.dimText, org: 'all', count: 3, description: 'Ecosystem mapping', visibleAtStep: 1 }, + + // Ring 3: Capabilities + { id: 'tax-calc', label: 'Tax\nCalculation', ring: 3, angle: 5, color: colors.cosilicoCyan, org: 'cosilico', description: 'API endpoints', visibleAtStep: 3 }, + { id: 'benefit-sim', label: 'Benefit\nSimulation', ring: 3, angle: 65, color: colors.cosilicoCyan, org: 'cosilico', description: 'Household analysis', visibleAtStep: 3 }, + { id: 'law-encoding', label: 'Law\nEncoding', ring: 3, angle: 125, color: colors.rulesBlue, org: 'rules', description: 'Open statute code', visibleAtStep: 3 }, + { id: 'research-tools', label: 'Research\nTools', ring: 3, angle: 185, color: colors.peTeal, org: 'pe', description: 'Analysis platform', visibleAtStep: 3 }, + { id: 'ai-training', label: 'AI Training\nData', ring: 3, angle: 245, color: colors.cosilicoCyan, org: 'cosilico', description: 'RLVR benchmarks', visibleAtStep: 3 }, + { id: 'data-enrichment', label: 'Data\nEnrichment', ring: 3, angle: 305, color: colors.cosilicoCyan, org: 'cosilico', description: '$0.10-1.00/record', visibleAtStep: 3 }, + + // Ring 4: Revenue + { id: 'state-rev', label: 'State Revenue\nDepts', ring: 4, angle: 35, color: colors.cosilicoCyan, org: 'cosilico', description: '$1B+ TAM', visibleAtStep: 3 }, + { id: 'tax-software', label: 'Tax Software\nVendors', ring: 4, angle: 95, color: colors.cosilicoCyan, org: 'cosilico', description: '$90B+ TAM', visibleAtStep: 3 }, + { id: 'fin-planners', label: 'Financial\nPlanners', ring: 4, angle: 155, color: colors.cosilicoCyan, org: 'cosilico', description: '$5B+ TAM', visibleAtStep: 3 }, + { id: 'enterprise', label: 'Enterprise\nClients', ring: 4, angle: 215, color: colors.cosilicoCyan, org: 'cosilico', description: '$100K-1M+/year', visibleAtStep: 3 }, + { id: 'nsf-grants', label: 'NSF &\nGrants', ring: 4, angle: 275, color: colors.accentOrange, org: 'all', description: 'Government funding', visibleAtStep: 3 }, + { id: 'foundation-grants', label: 'Foundation\nGrants', ring: 4, angle: 335, color: colors.accentOrange, org: 'pe', description: 'Arnold, Pritzker, etc.', visibleAtStep: 3 }, +]; + +export const ecosystemEdges: EcosystemEdge[] = [ + // Step 1: unified relationships + { from: 'pe-unified', to: 'researchers', label: 'serves', color: colors.accentBlue, type: 'solid', visibleAtStep: 1 }, + { from: 'pe-unified', to: 'think-tanks', label: 'serves', color: colors.accentTeal, type: 'solid', visibleAtStep: 1 }, + { from: 'pe-unified', to: 'gov-econ', label: 'serves', color: colors.accentGreen, type: 'solid', visibleAtStep: 1 }, + { from: 'pe-unified', to: 'journalists', color: colors.lightGray, type: 'solid', visibleAtStep: 1 }, + { from: 'pe-unified', to: 'advocates', color: colors.accentPurple, type: 'solid', visibleAtStep: 1 }, + { from: 'pe-unified', to: 'ai-labs', label: 'partners', color: colors.cosilicoCyan, type: 'dashed', visibleAtStep: 1 }, + { from: 'funders', to: 'pe-unified', label: 'funds', color: colors.accentOrange, type: 'solid', visibleAtStep: 1 }, + { from: 'contributors', to: 'pe-unified', label: 'contributes', color: colors.accentGreen, type: 'solid', visibleAtStep: 1 }, + + // Step 3: split relationships + { from: 'rules', to: 'gov-standards', label: 'standards', color: colors.rulesBlue, type: 'solid', visibleAtStep: 3 }, + { from: 'rules', to: 'contributors', label: 'open code', color: colors.rulesBlue, type: 'solid', visibleAtStep: 3 }, + { from: 'rules', to: 'gov-econ', label: 'validates', color: colors.rulesBlue, type: 'solid', visibleAtStep: 3 }, + { from: 'rules', to: 'law-encoding', color: colors.rulesBlue, type: 'solid', visibleAtStep: 3 }, + { from: 'cosilico', to: 'ai-labs', label: 'API', color: colors.cosilicoCyan, type: 'solid', visibleAtStep: 3 }, + { from: 'cosilico', to: 'tax-calc', color: colors.cosilicoCyan, type: 'solid', visibleAtStep: 3 }, + { from: 'cosilico', to: 'benefit-sim', color: colors.cosilicoCyan, type: 'solid', visibleAtStep: 3 }, + { from: 'cosilico', to: 'ai-training', color: colors.cosilicoCyan, type: 'solid', visibleAtStep: 3 }, + { from: 'cosilico', to: 'data-enrichment', color: colors.cosilicoCyan, type: 'solid', visibleAtStep: 3 }, + { from: 'cosilico', to: 'state-rev', color: colors.cosilicoCyan, type: 'dashed', visibleAtStep: 3 }, + { from: 'cosilico', to: 'tax-software', color: colors.cosilicoCyan, type: 'dashed', visibleAtStep: 3 }, + { from: 'cosilico', to: 'fin-planners', color: colors.cosilicoCyan, type: 'dashed', visibleAtStep: 3 }, + { from: 'cosilico', to: 'enterprise', color: colors.cosilicoCyan, type: 'dashed', visibleAtStep: 3 }, + { from: 'pe', to: 'researchers', label: 'research', color: colors.peTeal, type: 'solid', visibleAtStep: 3 }, + { from: 'pe', to: 'think-tanks', label: 'analysis', color: colors.peTeal, type: 'solid', visibleAtStep: 3 }, + { from: 'pe', to: 'journalists', color: colors.peTeal, type: 'solid', visibleAtStep: 3 }, + { from: 'pe', to: 'advocates', color: colors.peTeal, type: 'solid', visibleAtStep: 3 }, + { from: 'pe', to: 'research-tools', color: colors.peTeal, type: 'solid', visibleAtStep: 3 }, + { from: 'pe', to: 'foundation-grants', color: colors.accentOrange, type: 'dashed', visibleAtStep: 3 }, + { from: 'nsf-grants', to: 'rules', color: colors.accentOrange, type: 'dashed', visibleAtStep: 3 }, + { from: 'nsf-grants', to: 'pe', color: colors.accentOrange, type: 'dashed', visibleAtStep: 3 }, + { from: 'rules', to: 'cosilico', label: 'code feeds\ninfra', color: colors.highlight, type: 'solid', visibleAtStep: 3 }, + { from: 'cosilico', to: 'pe', label: 'API powers\nresearch', color: colors.highlight, type: 'solid', visibleAtStep: 3 }, +]; + +export const EVOLUTION_STEPS = [ + { step: 1, title: 'Unified Ecosystem', description: 'PolicyEngine serves all user segments as one organization' }, + { step: 2, title: 'The Split', description: 'Three specialized organizations with distinct missions' }, + { step: 3, title: 'Full Ecosystem', description: 'Three orgs with capabilities and revenue streams' }, +]; diff --git a/app/src/data/governance.ts b/app/src/data/governance.ts new file mode 100644 index 0000000..b26f338 --- /dev/null +++ b/app/src/data/governance.ts @@ -0,0 +1,67 @@ +import type { GovernanceOrg } from '@/lib/types'; +import { colors } from '@/lib/colors'; + +export const governanceBefore = { + title: 'BDFL model', + items: [ + 'Founder makes all strategic decisions', + 'Single 501(c)(3) owns everything', + 'AGPL-3.0 license, informal governance', + ], +}; + +export const governanceAfter = { + title: 'Three orgs, tailored governance', + items: [ + { text: 'Rules Foundation: multi-stakeholder 501(c)(3)', color: colors.rulesBlue }, + { text: 'Cosilico: Public Benefit Corp, board mandate', color: colors.cosilicoCyan }, + { text: 'PolicyEngine: 501(c)(3) + advisory board', color: colors.peTeal }, + ], +}; + +export const governanceQuote = { + label: 'WHAT INTERVIEWS TOLD US', + quote: '\u201CFresh entity strongly recommended \u2014 you want this fresh start with clean governance from day one.\u201D', + source: '\u2014 Foundation governance advisor', + detail: 'Jason Morris, Martin Perron, and foundation advisors all pointed to separation of concerns.', +}; + +export const governanceNextSteps = [ + 'Incorporate Rules Foundation as fresh 501(c)(3)', + 'Register Cosilico as Public Benefit Corp', + 'Recruit advisory board from interview network', + 'Open RFC process for governance docs', +]; + +export const governanceDetail: GovernanceOrg[] = [ + { + name: 'Rules Foundation', + color: colors.rulesBlue, + details: [ + 'Multi-stakeholder 501(c)(3)', + 'Technical steering committee + encoding standards board', + 'Partisan neutrality \u00b7 Mandatory statute citations \u00b7 Multi-reviewer validation', + 'Historical versioning of all encodings', + ], + }, + { + name: 'Cosilico', + color: colors.cosilicoCyan, + details: [ + 'Public Benefit Corp (mission-locked by charter)', + 'Board with public benefit mandate', + 'Open-source core (Apache 2.0) \u00b7 Enterprise services layer', + 'Certified partner program (Salesforce model)', + ], + }, + { + name: 'PolicyEngine', + color: colors.peTeal, + details: [ + '501(c)(3) / UK Charity (AGPL licensed)', + 'Founder-led \u2192 Technical steering committee + Advisory board', + 'Contributor guidelines \u00b7 Formal research partnership agreements', + 'Open roadmap with community input', + ], + }, +]; diff --git a/app/src/data/impact.ts b/app/src/data/impact.ts new file mode 100644 index 0000000..89957e3 --- /dev/null +++ b/app/src/data/impact.ts @@ -0,0 +1,14 @@ +import type { StatItem } from '@/lib/types'; +import { colors } from '@/lib/colors'; + +export const stats: StatItem[] = [ + { number: '75K+', label: 'API calls in 2025', color: colors.accentBlue }, + { number: 'Complete', label: 'Federal + 50 state income tax model', color: colors.accentTeal }, + { number: '100+', label: 'Benefit programs', color: colors.accentGreen }, + { number: '50+', label: 'OSS contributors', color: colors.accentPurple }, +]; + +export const trustedBy = { + line1: '10 Downing Street \u00b7 US Congress', + line2: 'Brookings \u00b7 NBER \u00b7 Atlanta Fed \u00b7 Niskanen Center \u00b7 Living Wage Institute \u00b7 Bureau of Economic Analysis', +}; diff --git a/app/src/data/interviews.ts b/app/src/data/interviews.ts new file mode 100644 index 0000000..9b76e11 --- /dev/null +++ b/app/src/data/interviews.ts @@ -0,0 +1,27 @@ +import type { WeekProgress, Segment } from '@/lib/types'; +import { colors } from '@/lib/colors'; + +export const weeklyProgress: WeekProgress[] = [ + { week: 'Week 1 (Jan 23)', count: 8 }, + { week: 'Week 2 (Jan 30)', count: 28 }, + { week: 'Week 3 (Feb 6)', count: 44 }, + { week: 'Week 4 (Feb 13)', count: 62 }, + { week: 'Week 5 (Feb 20)', count: 75 }, + { week: 'Week 6 (Feb 27)', count: 87 }, + { week: 'Final (Mar 6)', count: 100 }, +]; + +export const segments: Segment[] = [ + { name: 'Academic Researchers', count: 18, color: colors.accentBlue }, + { name: 'Think Tank Analysts', count: 12, color: colors.accentTeal }, + { name: 'AI + Econ Researchers', count: 10, color: colors.cosilicoCyan }, + { name: 'PE Team', count: 10, color: colors.peTeal }, + { name: 'Funders', count: 10, color: colors.accentOrange }, + { name: 'Non-Users', count: 8, color: colors.highlight }, + { name: 'Gov Standards Bodies', count: 7, color: colors.rulesBlue }, + { name: 'Government Economists', count: 7, color: colors.accentGreen }, + { name: 'Policy Advocates', count: 6, color: colors.accentPurple }, + { name: 'Data Journalists', count: 5, color: colors.lightGray }, + { name: 'OSS Contributors', count: 4, color: colors.accentGreen }, + { name: 'Competitors', count: 3, color: colors.dimText }, +]; diff --git a/app/src/data/layers.ts b/app/src/data/layers.ts new file mode 100644 index 0000000..d93207a --- /dev/null +++ b/app/src/data/layers.ts @@ -0,0 +1,13 @@ +import { colors } from '@/lib/colors'; + +export const LAYER_COLORS = { + foundation: colors.highlight, + computation: colors.cosilicoCyan, + application: colors.peTeal, +} as const; + +export const LAYER_META = [ + { key: 'foundation' as const, layer: 'Foundation', subtitle: 'Encode the raw material' }, + { key: 'computation' as const, layer: 'Computation', subtitle: 'Build models on the data' }, + { key: 'application' as const, layer: 'Application', subtitle: 'Bring it to people' }, +] as const; diff --git a/app/src/data/orgs.ts b/app/src/data/orgs.ts new file mode 100644 index 0000000..f10ee77 --- /dev/null +++ b/app/src/data/orgs.ts @@ -0,0 +1,26 @@ +import type { OrgInfo } from '@/lib/types'; +import { colors } from '@/lib/colors'; + +export const orgs: OrgInfo[] = [ + { + name: 'Rules\nFoundation', + tagline: 'Encoding the world\u2019s rules', + entity: '501(c)(3)', + description: 'The HGP for rules\nOpen reference layer', + color: colors.rulesBlue, + }, + { + name: 'Cosilico', + tagline: 'Society in silico', + entity: 'Public Benefit Corp', + description: 'Society in silico\nLike Schr\u00f6dinger for policy', + color: colors.cosilicoCyan, + }, + { + name: 'PolicyEngine', + tagline: 'Policy meets evidence', + entity: '501(c)(3) / Charity', + description: 'Like IHME for economic policy\nOpen source', + color: colors.peTeal, + }, +]; diff --git a/app/src/data/story.ts b/app/src/data/story.ts new file mode 100644 index 0000000..1ed30de --- /dev/null +++ b/app/src/data/story.ts @@ -0,0 +1,92 @@ +import type { StorySection, WeekJourney } from '@/lib/types'; + +export const storySections: StorySection[] = [ + // Main story (10 sections) + { id: 'cold-open', title: 'The question', tag: 'COLD OPEN', duration: '0:00 - 0:30' }, + { id: 'who-we-are', title: 'Who we are', tag: 'THE TEAM', duration: '0:30 - 1:00' }, + { id: 'what-we-do', title: 'What we do', tag: 'THESIS + IMPACT', duration: '1:00 - 1:45' }, + { id: 'journey-begins', title: '100 conversations', tag: 'THE JOURNEY BEGINS', duration: '1:45 - 2:30' }, + { id: 'tension-builds', title: 'Validation', tag: 'VALIDATION', duration: '2:30 - 3:15' }, + { id: 'aha-moment', title: 'One became three', tag: 'THE ECOSYSTEM', duration: '3:15 - 4:15', stickyHeight: 3 }, + { id: 'meet-the-three', title: 'Meet the three', tag: 'THE THREE ORGS', duration: '4:15 - 5:15' }, + { id: 'governance', title: 'How we\'ll govern it', tag: 'GOVERNANCE', duration: '5:15 - 5:45' }, + { id: 'road-ahead', title: 'The road ahead', tag: 'TIMELINE', duration: '5:45 - 6:15' }, + { id: 'the-close', title: 'The genome project for rules', tag: 'THE CLOSE', duration: '6:15 - 7:00' }, + + // Appendix (9 sections) + { id: 'voices', title: 'Voices from the field', tag: 'APPENDIX', duration: '', isAppendix: true }, + { id: 'impact-goals', title: 'Impact goals', tag: 'APPENDIX', duration: '', isAppendix: true }, + { id: 'partners', title: 'Strategic partners', tag: 'APPENDIX', duration: '', isAppendix: true }, + { id: 'canvas', title: 'OSE Canvas', tag: 'APPENDIX', duration: '', isAppendix: true }, + { id: 'canvas-detail', title: 'Canvas detail', tag: 'APPENDIX', duration: '', isAppendix: true }, + { id: 'gov-detail', title: 'Governance detail', tag: 'APPENDIX', duration: '', isAppendix: true }, + { id: 'competitive', title: 'Competitive landscape', tag: 'APPENDIX', duration: '', isAppendix: true }, + { id: 'highlights', title: 'Interview highlights', tag: 'APPENDIX', duration: '', isAppendix: true }, + { id: 'market', title: 'Market segments', tag: 'APPENDIX', duration: '', isAppendix: true }, +]; + +export const weeklyJourney: WeekJourney[] = [ + { + week: 1, + date: 'Jan 23', + cumulative: 8, + quote: 'Speed + open source + prototyping is our edge, but encoding is fast while review/debugging is the bottleneck.', + quoteSource: 'Nikhil Woodruff, CTO', + insight: 'We brought a hypothesis to POSE: PolicyEngine should become an ecosystem of specialized organizations. We\u2019d already pitched a three-org vision to investors that same week. Now we had to pressure-test it.', + ecosystemPhase: 'Center node (PE unified) + PE Team light up', + }, + { + week: 2, + date: 'Jan 30', + cumulative: 28, + quote: 'Fast, open tools are especially valuable for quick turnaround vs. slow official scores.', + quoteSource: 'Andrew Lautz, BPC', + insight: 'Think tanks and researchers confirmed demand. The week before, we\u2019d published our 10 Downing Street work\u2014PolicyEngine was already in government.', + ecosystemPhase: 'Ring 1 nodes light up (researchers, think tanks, gov economists)', + }, + { + week: 3, + date: 'Feb 6', + cumulative: 44, + quote: 'Most leverage is upstream: getting legislative drafters to author executable rules early.', + quoteSource: 'Jason Morris, Thomson Reuters', + insight: 'Government standards bodies and AI + econ researchers kept surfacing. Each needed something different from us.', + ecosystemPhase: 'Ring 2 nodes appear (AI + econ researchers, gov standards, funders)', + }, + { + week: 4, + date: 'Feb 13', + cumulative: 62, + quote: 'Institutions like the Fed face strong IT/security barriers to external APIs.', + quoteSource: 'Jacob Walker, Atlanta Fed', + insight: 'Every conversation reinforced the pattern: different audiences need different governance, funding models, and technical architecture.', + ecosystemPhase: 'All Ring 1+2 nodes visible, tangled connections', + }, + { + week: 5, + date: 'Feb 20', + cumulative: 75, + quote: 'You want this fresh start with clean governance from day one.', + quoteSource: 'Foundation governance advisor', + insight: 'Our hypothesis was validated. One organization genuinely cannot serve all these segments well.', + ecosystemPhase: 'The hypothesis confirmed across the map', + }, + { + week: 6, + date: 'Feb 27', + cumulative: 87, + quote: 'Data and rules complexity create big gaps where better microsim tools are still missing.', + quoteSource: 'Jack Landry, Jane Family Institute', + insight: 'The ecosystem vision was resonating beyond our interviews. Funders and foundations were engaging.', + ecosystemPhase: 'Transition: preparing for the split', + }, + { + week: 7, + date: 'Mar 6', + cumulative: 100, + quote: 'Programs and tax rules in silos create severe unintended consequences.', + quoteSource: 'Ray Packer, Georgia Center for Opportunity', + insight: 'The Ballmer Group engaged on a major Rules as Code investment. 100 interviews validated three organizations.', + ecosystemPhase: 'Full ecosystem revealed', + }, +]; diff --git a/app/src/data/sustainability.ts b/app/src/data/sustainability.ts new file mode 100644 index 0000000..86be4fd --- /dev/null +++ b/app/src/data/sustainability.ts @@ -0,0 +1,37 @@ +import type { SustainabilityOrg } from '@/lib/types'; +import { colors } from '@/lib/colors'; + +export const sustainability: SustainabilityOrg[] = [ + { + name: 'Rules Foundation', + color: colors.rulesBlue, + budget: '~$300K/year', + items: [ + 'Government grants', + 'Foundation grants', + 'AI lab in-kind (compute)', + 'Downstream contributions', + ], + }, + { + name: 'Cosilico', + color: colors.cosilicoCyan, + budget: '$500K \u2192 $75M ARR (5yr)', + items: [ + 'Open source (free, Apache 2.0)', + 'API: $0.001\u20130.01/call', + 'Data enrichment: $0.10\u20131.00/record', + 'Enterprise: $100K\u20131M+/year', + ], + }, + { + name: 'PolicyEngine', + color: colors.peTeal, + budget: '~$500K/year', + items: [ + 'Foundation grants', + 'Government grants (NSF)', + 'Earned revenue', + ], + }, +]; diff --git a/app/src/data/team.ts b/app/src/data/team.ts new file mode 100644 index 0000000..3f1bc86 --- /dev/null +++ b/app/src/data/team.ts @@ -0,0 +1,26 @@ +import type { TeamMember } from '@/lib/types'; +import { colors } from '@/lib/colors'; + +export const team: TeamMember[] = [ + { + name: 'Max Ghenis', + role: 'Co-Founder & CEO', + bio: ['MIT M.S. Development Economics', 'Former Google', 'Founded UBI Center'], + color: colors.accentBlue, + photo: '/assets/team/max-ghenis.png', + }, + { + name: 'Pavel Makarchuk', + role: 'Chief of Staff', + bio: ['Operations & strategy lead', 'Led development of US state-level', 'tax-benefit model'], + color: colors.accentTeal, + photo: '/assets/team/pavel-makarchuk.jpeg', + }, + { + name: 'Daniel Feenberg', + role: 'Advisor', + bio: ['Princeton Ph.D. Economics', 'Former IT Director at NBER', 'Created TAXSIM'], + color: colors.accentPurple, + photo: '/assets/team/daniel-feenberg.jpg', + }, +]; diff --git a/app/src/data/timeline.ts b/app/src/data/timeline.ts new file mode 100644 index 0000000..61d9789 --- /dev/null +++ b/app/src/data/timeline.ts @@ -0,0 +1,79 @@ +import type { Milestone } from '@/lib/types'; +import { colors } from '@/lib/colors'; + +export const milestones: Milestone[] = [ + { + period: 'Q1 2026', + label: 'NOW', + description: ['POSE complete', '100 interviews validated 3-org structure', 'Ballmer Group engaged'], + color: colors.highlight, + }, + { + period: 'Q2-Q3 2026', + label: 'LAUNCH', + description: [], + color: colors.accentBlue, + }, + { + period: 'Q4 2026', + label: 'GROW', + description: [], + color: colors.accentTeal, + }, + { + period: '2027', + label: 'SCALE', + description: [], + color: colors.accentGreen, + }, + { + period: '2028', + label: 'SUSTAIN', + description: [], + color: colors.accentPurple, + }, +]; + +export interface OrgTimeline { + org: string; + subtitle?: string; + color: string; + logo?: string; + milestones: { period: string; items: string[] }[]; +} + +export const orgTimelines: OrgTimeline[] = [ + { + org: 'Rules Foundation', + color: colors.rulesBlue, + logo: '/assets/logos/rf-full.svg', + milestones: [ + { period: 'Q2-Q3 2026', items: ['Incorporate', 'Begin US tax encodings'] }, + { period: 'Q4 2026', items: ['Complete US tax & benefit encodings'] }, + { period: '2027', items: ['UK encodings', '5+ agency partnerships'] }, + { period: '2028', items: ['Self-sustaining operations'] }, + ], + }, + { + org: 'Cosilico', + color: colors.cosilicoCyan, + logo: '/assets/logos/cosilico-full.svg', + milestones: [ + { period: 'Q2-Q3 2026', items: ['Incorporate'] }, + { period: 'Q4 2026', items: ['Rules API launch atop RF'] }, + { period: '2027', items: ['Simulation API launch', 'First paying customers'] }, + { period: '2028', items: ['$3M ARR'] }, + ], + }, + { + org: 'PolicyEngine', + color: colors.peTeal, + logo: '/assets/logos/pe-full-white.svg', + milestones: [ + { period: 'Q2-Q3 2026', items: ['50+ media citations', '5 published reports'] }, + { period: 'Q4 2026', items: ['100+ citations', '3 research partnerships'] }, + { period: '2027', items: ['500+ citations', '10+ institutional partners'] }, + { period: '2028', items: ['Authoritative source for policy analysis'] }, + ], + }, +]; diff --git a/app/src/hooks/useAssignments.ts b/app/src/hooks/useAssignments.ts index 12ce9f3..1b70a50 100644 --- a/app/src/hooks/useAssignments.ts +++ b/app/src/hooks/useAssignments.ts @@ -1,6 +1,6 @@ import { useState, useEffect, useCallback, useMemo } from 'react' -import type { Assignment, AssignmentStatus, AssignmentCategory } from '../types/database' -import { POSE_ASSIGNMENTS } from '../types/database' +import type { Assignment, AssignmentStatus, AssignmentCategory } from '@/types/database' +import { POSE_ASSIGNMENTS } from '@/types/database' const LOCAL_STORAGE_KEY = 'pose_assignments' diff --git a/app/src/hooks/useFullscreen.ts b/app/src/hooks/useFullscreen.ts new file mode 100644 index 0000000..0dfba8c --- /dev/null +++ b/app/src/hooks/useFullscreen.ts @@ -0,0 +1,23 @@ +import { useState, useEffect, useCallback } from 'react'; + +export function useFullscreen() { + const [isFullscreen, setIsFullscreen] = useState(false); + + useEffect(() => { + const handler = () => { + setIsFullscreen(!!document.fullscreenElement); + }; + document.addEventListener('fullscreenchange', handler); + return () => document.removeEventListener('fullscreenchange', handler); + }, []); + + const toggleFullscreen = useCallback(() => { + if (document.fullscreenElement) { + document.exitFullscreen(); + } else { + document.documentElement.requestFullscreen(); + } + }, []); + + return { isFullscreen, toggleFullscreen }; +} diff --git a/app/src/hooks/useInterviews.test.ts b/app/src/hooks/useInterviews.test.ts index 8a99a93..4f9ca05 100644 --- a/app/src/hooks/useInterviews.test.ts +++ b/app/src/hooks/useInterviews.test.ts @@ -1,7 +1,7 @@ import { describe, it, expect, vi, beforeEach } from 'vitest' import { renderHook, act, waitFor } from '@testing-library/react' -import { useInterviews } from './useInterviews' -import type { Interview } from '../types/database' +import { useInterviews } from '@/hooks/useInterviews' +import type { Interview } from '@/types/database' // Mock the supabase module to ensure localStorage fallback vi.mock('../lib/supabase', () => ({ diff --git a/app/src/hooks/useInterviews.ts b/app/src/hooks/useInterviews.ts index bacbf4e..231d4b5 100644 --- a/app/src/hooks/useInterviews.ts +++ b/app/src/hooks/useInterviews.ts @@ -1,6 +1,6 @@ import { useState, useEffect, useCallback } from 'react' -import { supabase, isSupabaseConfigured } from '../lib/supabase' -import type { Interview, Segment } from '../types/database' +import { supabase, isSupabaseConfigured } from '@/lib/supabase' +import type { Interview, Segment } from '@/types/database' const LOCAL_STORAGE_KEY = 'pose_interviews' diff --git a/app/src/hooks/useKeyboardNav.ts b/app/src/hooks/useKeyboardNav.ts new file mode 100644 index 0000000..bd2fb5c --- /dev/null +++ b/app/src/hooks/useKeyboardNav.ts @@ -0,0 +1,35 @@ +import { useEffect } from 'react'; + +interface UseKeyboardNavProps { + onFullscreen: () => void; + onDownload: () => void; +} + +export function useKeyboardNav({ onFullscreen, onDownload }: UseKeyboardNavProps) { + useEffect(() => { + const handler = (e: KeyboardEvent) => { + if (e.target instanceof HTMLInputElement || e.target instanceof HTMLTextAreaElement) return; + + switch (e.key) { + case 'f': + case 'F': + e.preventDefault(); + onFullscreen(); + break; + case 'd': + case 'D': + e.preventDefault(); + onDownload(); + break; + case 'Escape': + if (document.fullscreenElement) { + document.exitFullscreen(); + } + break; + } + }; + + window.addEventListener('keydown', handler); + return () => window.removeEventListener('keydown', handler); + }, [onFullscreen, onDownload]); +} diff --git a/app/src/hooks/useScrollNavigation.ts b/app/src/hooks/useScrollNavigation.ts new file mode 100644 index 0000000..637ec47 --- /dev/null +++ b/app/src/hooks/useScrollNavigation.ts @@ -0,0 +1,37 @@ +import { useState, useEffect, useCallback } from 'react'; + +export function useScrollNavigation(sectionIds: string[]) { + const [activeSection, setActiveSection] = useState(0); + + useEffect(() => { + const observers: IntersectionObserver[] = []; + + sectionIds.forEach((id, index) => { + const el = document.getElementById(id); + if (!el) return; + + const observer = new IntersectionObserver( + ([entry]) => { + if (entry.isIntersecting) { + setActiveSection(index); + } + }, + { threshold: 0.15, rootMargin: '-10% 0px -60% 0px' } + ); + + observer.observe(el); + observers.push(observer); + }); + + return () => observers.forEach((o) => o.disconnect()); + }, [sectionIds]); + + const scrollToSection = useCallback((id: string) => { + const el = document.getElementById(id); + if (el) { + el.scrollIntoView({ behavior: 'smooth' }); + } + }, []); + + return { activeSection, scrollToSection }; +} diff --git a/app/src/hooks/useScrollProgress.ts b/app/src/hooks/useScrollProgress.ts new file mode 100644 index 0000000..4c877d9 --- /dev/null +++ b/app/src/hooks/useScrollProgress.ts @@ -0,0 +1,35 @@ +import { useRef, useState, useEffect } from 'react'; + +export function useScrollProgress(steps: number) { + const containerRef = useRef(null); + const [currentStep, setCurrentStep] = useState(1); + + useEffect(() => { + const container = containerRef.current; + if (!container) return; + + const handleScroll = () => { + const rect = container.getBoundingClientRect(); + const containerHeight = container.offsetHeight; + const viewportHeight = window.innerHeight; + + const scrolled = -rect.top; + const scrollableDistance = containerHeight - viewportHeight; + + if (scrollableDistance <= 0) { + setCurrentStep(1); + return; + } + + const progress = Math.max(0, Math.min(1, scrolled / scrollableDistance)); + const step = Math.min(steps, Math.floor(progress * steps) + 1); + setCurrentStep(step); + }; + + window.addEventListener('scroll', handleScroll, { passive: true }); + handleScroll(); + return () => window.removeEventListener('scroll', handleScroll); + }, [steps]); + + return { containerRef, currentStep }; +} diff --git a/app/src/hooks/useScrollReveal.ts b/app/src/hooks/useScrollReveal.ts new file mode 100644 index 0000000..12da71b --- /dev/null +++ b/app/src/hooks/useScrollReveal.ts @@ -0,0 +1,26 @@ +import { useRef, useState, useEffect } from 'react'; + +export function useScrollReveal(threshold = 0.15) { + const ref = useRef(null); + const [isVisible, setIsVisible] = useState(false); + + useEffect(() => { + const el = ref.current; + if (!el) return; + + const observer = new IntersectionObserver( + ([entry]) => { + if (entry.isIntersecting) { + setIsVisible(true); + observer.unobserve(el); + } + }, + { threshold } + ); + + observer.observe(el); + return () => observer.disconnect(); + }, [threshold]); + + return { ref, isVisible }; +} diff --git a/app/src/index.css b/app/src/index.css deleted file mode 100644 index b6ed269..0000000 --- a/app/src/index.css +++ /dev/null @@ -1,35 +0,0 @@ -@import url('https://fonts.googleapis.com/css2?family=Inter:wght@400;500;600;700&display=swap'); - -@tailwind base; -@tailwind components; -@tailwind utilities; - -:root { - --pe-teal-500: #319795; - --pe-teal-400: #2dd4bf; - --pe-teal-600: #0d9488; - --pe-gray-700: #344054; - --pe-gray-100: #f3f4f6; -} - -body { - font-family: 'Inter', system-ui, sans-serif; - background-color: #f9fafb; - color: var(--pe-gray-700); -} - -/* Custom scrollbar */ -::-webkit-scrollbar { - width: 6px; - height: 6px; -} -::-webkit-scrollbar-track { - background: var(--pe-gray-100); -} -::-webkit-scrollbar-thumb { - background: #d1d5db; - border-radius: 3px; -} -::-webkit-scrollbar-thumb:hover { - background: #9ca3af; -} diff --git a/app/src/lib/colors.ts b/app/src/lib/colors.ts new file mode 100644 index 0000000..ea50d5f --- /dev/null +++ b/app/src/lib/colors.ts @@ -0,0 +1,53 @@ +export const colors = { + // Backgrounds (dark cinematic theme) + pageBg: '#0A0F1C', + cardBg: '#111827', + cardBgAlt: '#1E293B', + + // Text + textPrimary: '#F1F5F9', + textSecondary: '#94A3B8', + textTertiary: '#64748B', + + // Borders + borderLight: '#1E293B', + borderMedium: '#334155', + + // Primary accent (PolicyEngine teal) + primary: '#319795', + primaryLight: 'rgba(49, 151, 149, 0.2)', + + // Semantic + success: '#22C55E', + warning: '#FEC601', + error: '#EF4444', + info: '#1890FF', + + // Organization colors + rulesBlue: '#3B82F6', + cosilicoCyan: '#06B6D4', + peTeal: '#319795', + + // Chart / accent + accentPurple: '#7C3AED', + accentOrange: '#EA580C', + highlight: '#D97706', + + // Glow effects + glowRules: 'rgba(59, 130, 246, 0.15)', + glowCosilico: 'rgba(6, 182, 212, 0.15)', + glowPE: 'rgba(49, 151, 149, 0.15)', + glowHighlight: 'rgba(217, 119, 6, 0.15)', + + // Legacy aliases for data files that reference these + white: '#F1F5F9', + accentBlue: '#319795', + accentTeal: '#2DD4BF', + accentGreen: '#22C55E', + lightGray: '#94A3B8', + dimText: '#64748B', + darkBg: '#0A0F1C', + cardBgLegacy: '#111827', +} as const; + +export type ColorKey = keyof typeof colors; diff --git a/app/src/lib/supabase.ts b/app/src/lib/supabase.ts index 180368c..ff82f7d 100644 --- a/app/src/lib/supabase.ts +++ b/app/src/lib/supabase.ts @@ -1,8 +1,8 @@ import { createClient, SupabaseClient } from '@supabase/supabase-js' -import type { Database } from '../types/database' +import type { Database } from '@/types/database' -const supabaseUrl = import.meta.env.VITE_SUPABASE_URL || '' -const supabaseAnonKey = import.meta.env.VITE_SUPABASE_ANON_KEY || '' +const supabaseUrl = process.env.NEXT_PUBLIC_SUPABASE_URL || '' +const supabaseAnonKey = process.env.NEXT_PUBLIC_SUPABASE_ANON_KEY || '' // Check if Supabase is configured export const isSupabaseConfigured = () => { diff --git a/app/src/lib/types.ts b/app/src/lib/types.ts new file mode 100644 index 0000000..87c8c14 --- /dev/null +++ b/app/src/lib/types.ts @@ -0,0 +1,157 @@ +import type { ComponentType } from 'react'; + +export interface SlideProps { + isVisible: boolean; +} + +export interface ScrollSection { + id: string; + title: string; + tag?: string; + component: ComponentType; + isAppendix?: boolean; + stickyHeight?: number; +} + +export interface TeamMember { + name: string; + role: string; + bio: string[]; + color: string; + photo: string; +} + +export interface StatItem { + number: string; + label: string; + color: string; +} + +export interface WeekProgress { + week: string; + count: number; +} + +export interface Segment { + name: string; + count: number; + color: string; +} + +export interface Assumption { + status: string; + statusType: 'confirmed' | 'partial' | 'rejected'; + title: string; + learning: string; + quote: string; + source: string; + color: string; +} + +export interface OrgInfo { + name: string; + tagline: string; + entity: string; + description: string; + color: string; +} + +export interface SustainabilityOrg { + name: string; + color: string; + budget: string; + items: string[]; +} + +export interface Milestone { + period: string; + label: string; + description: string[]; + color: string; +} + +export interface Quote { + text: string; + name: string; + title: string; + color: string; +} + +export interface Partner { + name: string; + orgs: string; + type: string; + value: string[]; + risk: string; + color: string; +} + +export interface GovernanceOrg { + name: string; + color: string; + details: string[]; +} + +export interface Competitor { + name: string; + metric: string; + focus: string; +} + +export interface MarketSegment { + name: string; + tam: string; +} + +export interface ImpactGoal { + name: string; + color: string; + condition: string; + impact: string; +} + +export interface InterviewHighlight { + name: string; + insight: string; +} + +export interface EcosystemNode { + id: string; + label: string; + ring: number; + angle: number; + color: string; + org: 'all' | 'rules' | 'cosilico' | 'pe'; + description?: string; + count?: number; + visibleAtStep: number; +} + +export interface EcosystemEdge { + from: string; + to: string; + label?: string; + color: string; + type: 'solid' | 'dashed'; + visibleAtStep: number; +} + +// New story-specific types +export interface StorySection { + id: string; + title: string; + tag: string; + duration: string; + isAppendix?: boolean; + stickyHeight?: number; +} + +export interface WeekJourney { + week: number; + date: string; + cumulative: number; + quote: string; + quoteSource: string; + insight: string; + ecosystemPhase: string; +} diff --git a/app/src/main.tsx b/app/src/main.tsx deleted file mode 100644 index bef5202..0000000 --- a/app/src/main.tsx +++ /dev/null @@ -1,10 +0,0 @@ -import { StrictMode } from 'react' -import { createRoot } from 'react-dom/client' -import './index.css' -import App from './App.tsx' - -createRoot(document.getElementById('root')!).render( - - - , -) diff --git a/app/src/test/Outreach.test.tsx b/app/src/test/Outreach.test.tsx index f62b576..dc2eac4 100644 --- a/app/src/test/Outreach.test.tsx +++ b/app/src/test/Outreach.test.tsx @@ -1,7 +1,7 @@ import { describe, it, expect, vi } from 'vitest' import { render, screen } from '@testing-library/react' import userEvent from '@testing-library/user-event' -import { Outreach } from '../components/Outreach' +import { Outreach } from '@/components/Outreach' describe('Outreach', () => { it('renders the email generator form', () => { diff --git a/app/src/types/database.test.ts b/app/src/types/database.test.ts index 4ecd0f0..a8f5963 100644 --- a/app/src/types/database.test.ts +++ b/app/src/types/database.test.ts @@ -1,5 +1,5 @@ import { describe, it, expect } from 'vitest' -import { SEGMENTS, POSE_MILESTONES, type Segment } from './database' +import { SEGMENTS, POSE_MILESTONES, type Segment } from '@/types/database' describe('SEGMENTS', () => { it('has exactly 6 segments', () => { diff --git a/app/tailwind.config.js b/app/tailwind.config.js deleted file mode 100644 index 462dada..0000000 --- a/app/tailwind.config.js +++ /dev/null @@ -1,43 +0,0 @@ -/** @type {import('tailwindcss').Config} */ -export default { - content: [ - "./index.html", - "./src/**/*.{js,ts,jsx,tsx}", - ], - theme: { - extend: { - colors: { - teal: { - 50: '#f0fdfa', - 100: '#ccfbf1', - 200: '#99f6e4', - 300: '#5eead4', - 400: '#2dd4bf', - 500: '#319795', // PolicyEngine primary - 600: '#0d9488', - 700: '#0f766e', - 800: '#115e59', - 900: '#134e4a', - }, - gray: { - 50: '#f9fafb', - 100: '#f3f4f6', - 200: '#e5e7eb', - 300: '#d1d5db', - 400: '#9ca3af', - 500: '#6b7280', - 600: '#4b5563', - 700: '#344054', // PolicyEngine gray - 800: '#1f2937', - 900: '#111827', - } - }, - fontFamily: { - sans: ['Inter', 'system-ui', 'sans-serif'], - }, - }, - }, - plugins: [ - require('@tailwindcss/forms'), - ], -} diff --git a/app/tsconfig.app.json b/app/tsconfig.app.json deleted file mode 100644 index 71c131a..0000000 --- a/app/tsconfig.app.json +++ /dev/null @@ -1,28 +0,0 @@ -{ - "compilerOptions": { - "tsBuildInfoFile": "./node_modules/.tmp/tsconfig.app.tsbuildinfo", - "target": "ES2022", - "useDefineForClassFields": true, - "lib": ["ES2022", "DOM", "DOM.Iterable"], - "module": "ESNext", - "types": ["vite/client", "vitest/globals"], - "skipLibCheck": true, - - /* Bundler mode */ - "moduleResolution": "bundler", - "allowImportingTsExtensions": true, - "verbatimModuleSyntax": true, - "moduleDetection": "force", - "noEmit": true, - "jsx": "react-jsx", - - /* Linting */ - "strict": true, - "noUnusedLocals": true, - "noUnusedParameters": true, - "erasableSyntaxOnly": true, - "noFallthroughCasesInSwitch": true, - "noUncheckedSideEffectImports": true - }, - "include": ["src"] -} diff --git a/app/tsconfig.json b/app/tsconfig.json index 1ffef60..292e297 100644 --- a/app/tsconfig.json +++ b/app/tsconfig.json @@ -1,7 +1,27 @@ { - "files": [], - "references": [ - { "path": "./tsconfig.app.json" }, - { "path": "./tsconfig.node.json" } - ] + "compilerOptions": { + "target": "ES2022", + "lib": ["DOM", "DOM.Iterable", "ES2022"], + "allowJs": true, + "skipLibCheck": true, + "strict": true, + "noEmit": true, + "esModuleInterop": true, + "module": "ESNext", + "moduleResolution": "bundler", + "resolveJsonModule": true, + "isolatedModules": true, + "jsx": "preserve", + "incremental": true, + "plugins": [ + { + "name": "next" + } + ], + "paths": { + "@/*": ["./src/*"] + } + }, + "include": ["next-env.d.ts", "**/*.ts", "**/*.tsx", ".next/types/**/*.ts"], + "exclude": ["node_modules"] } diff --git a/app/tsconfig.node.json b/app/tsconfig.node.json deleted file mode 100644 index 8a67f62..0000000 --- a/app/tsconfig.node.json +++ /dev/null @@ -1,26 +0,0 @@ -{ - "compilerOptions": { - "tsBuildInfoFile": "./node_modules/.tmp/tsconfig.node.tsbuildinfo", - "target": "ES2023", - "lib": ["ES2023"], - "module": "ESNext", - "types": ["node"], - "skipLibCheck": true, - - /* Bundler mode */ - "moduleResolution": "bundler", - "allowImportingTsExtensions": true, - "verbatimModuleSyntax": true, - "moduleDetection": "force", - "noEmit": true, - - /* Linting */ - "strict": true, - "noUnusedLocals": true, - "noUnusedParameters": true, - "erasableSyntaxOnly": true, - "noFallthroughCasesInSwitch": true, - "noUncheckedSideEffectImports": true - }, - "include": ["vite.config.ts"] -} diff --git a/app/tsconfig.tsbuildinfo b/app/tsconfig.tsbuildinfo new file mode 100644 index 0000000..ca19c68 --- /dev/null +++ b/app/tsconfig.tsbuildinfo @@ -0,0 +1 @@ +{"fileNames":["./node_modules/typescript/lib/lib.es5.d.ts","./node_modules/typescript/lib/lib.es2015.d.ts","./node_modules/typescript/lib/lib.es2016.d.ts","./node_modules/typescript/lib/lib.es2017.d.ts","./node_modules/typescript/lib/lib.es2018.d.ts","./node_modules/typescript/lib/lib.es2019.d.ts","./node_modules/typescript/lib/lib.es2020.d.ts","./node_modules/typescript/lib/lib.es2021.d.ts","./node_modules/typescript/lib/lib.es2022.d.ts","./node_modules/typescript/lib/lib.dom.d.ts","./node_modules/typescript/lib/lib.dom.iterable.d.ts","./node_modules/typescript/lib/lib.es2015.core.d.ts","./node_modules/typescript/lib/lib.es2015.collection.d.ts","./node_modules/typescript/lib/lib.es2015.generator.d.ts","./node_modules/typescript/lib/lib.es2015.iterable.d.ts","./node_modules/typescript/lib/lib.es2015.promise.d.ts","./node_modules/typescript/lib/lib.es2015.proxy.d.ts","./node_modules/typescript/lib/lib.es2015.reflect.d.ts","./node_modules/typescript/lib/lib.es2015.symbol.d.ts","./node_modules/typescript/lib/lib.es2015.symbol.wellknown.d.ts","./node_modules/typescript/lib/lib.es2016.array.include.d.ts","./node_modules/typescript/lib/lib.es2016.intl.d.ts","./node_modules/typescript/lib/lib.es2017.arraybuffer.d.ts","./node_modules/typescript/lib/lib.es2017.date.d.ts","./node_modules/typescript/lib/lib.es2017.object.d.ts","./node_modules/typescript/lib/lib.es2017.sharedmemory.d.ts","./node_modules/typescript/lib/lib.es2017.string.d.ts","./node_modules/typescript/lib/lib.es2017.intl.d.ts","./node_modules/typescript/lib/lib.es2017.typedarrays.d.ts","./node_modules/typescript/lib/lib.es2018.asyncgenerator.d.ts","./node_modules/typescript/lib/lib.es2018.asynciterable.d.ts","./node_modules/typescript/lib/lib.es2018.intl.d.ts","./node_modules/typescript/lib/lib.es2018.promise.d.ts","./node_modules/typescript/lib/lib.es2018.regexp.d.ts","./node_modules/typescript/lib/lib.es2019.array.d.ts","./node_modules/typescript/lib/lib.es2019.object.d.ts","./node_modules/typescript/lib/lib.es2019.string.d.ts","./node_modules/typescript/lib/lib.es2019.symbol.d.ts","./node_modules/typescript/lib/lib.es2019.intl.d.ts","./node_modules/typescript/lib/lib.es2020.bigint.d.ts","./node_modules/typescript/lib/lib.es2020.date.d.ts","./node_modules/typescript/lib/lib.es2020.promise.d.ts","./node_modules/typescript/lib/lib.es2020.sharedmemory.d.ts","./node_modules/typescript/lib/lib.es2020.string.d.ts","./node_modules/typescript/lib/lib.es2020.symbol.wellknown.d.ts","./node_modules/typescript/lib/lib.es2020.intl.d.ts","./node_modules/typescript/lib/lib.es2020.number.d.ts","./node_modules/typescript/lib/lib.es2021.promise.d.ts","./node_modules/typescript/lib/lib.es2021.string.d.ts","./node_modules/typescript/lib/lib.es2021.weakref.d.ts","./node_modules/typescript/lib/lib.es2021.intl.d.ts","./node_modules/typescript/lib/lib.es2022.array.d.ts","./node_modules/typescript/lib/lib.es2022.error.d.ts","./node_modules/typescript/lib/lib.es2022.intl.d.ts","./node_modules/typescript/lib/lib.es2022.object.d.ts","./node_modules/typescript/lib/lib.es2022.string.d.ts","./node_modules/typescript/lib/lib.es2022.regexp.d.ts","./node_modules/typescript/lib/lib.esnext.disposable.d.ts","./node_modules/typescript/lib/lib.esnext.float16.d.ts","./node_modules/typescript/lib/lib.decorators.d.ts","./node_modules/typescript/lib/lib.decorators.legacy.d.ts","./next.config.ts","./node_modules/@vitest/pretty-format/dist/index.d.ts","./node_modules/@vitest/utils/dist/display.d.ts","./node_modules/@vitest/utils/dist/types.d.ts","./node_modules/@vitest/utils/dist/helpers.d.ts","./node_modules/@vitest/utils/dist/timers.d.ts","./node_modules/@vitest/utils/dist/index.d.ts","./node_modules/@vitest/runner/dist/tasks.d-c7uxawj9.d.ts","./node_modules/@vitest/utils/dist/types.d-bcelap-c.d.ts","./node_modules/@vitest/utils/dist/diff.d.ts","./node_modules/@vitest/runner/dist/types.d.ts","./node_modules/@vitest/runner/dist/index.d.ts","./node_modules/@vitest/spy/dist/index.d.ts","./node_modules/tinyrainbow/dist/index.d.ts","./node_modules/@standard-schema/spec/dist/index.d.ts","./node_modules/@types/deep-eql/index.d.ts","./node_modules/assertion-error/index.d.ts","./node_modules/@types/chai/index.d.ts","./node_modules/@vitest/expect/dist/index.d.ts","./node_modules/@types/node/compatibility/iterators.d.ts","./node_modules/@types/node/globals.typedarray.d.ts","./node_modules/@types/node/buffer.buffer.d.ts","./node_modules/@types/node/globals.d.ts","./node_modules/@types/node/web-globals/abortcontroller.d.ts","./node_modules/@types/node/web-globals/crypto.d.ts","./node_modules/@types/node/web-globals/domexception.d.ts","./node_modules/@types/node/web-globals/events.d.ts","./node_modules/undici-types/utility.d.ts","./node_modules/undici-types/header.d.ts","./node_modules/undici-types/readable.d.ts","./node_modules/undici-types/fetch.d.ts","./node_modules/undici-types/formdata.d.ts","./node_modules/undici-types/connector.d.ts","./node_modules/undici-types/client-stats.d.ts","./node_modules/undici-types/client.d.ts","./node_modules/undici-types/errors.d.ts","./node_modules/undici-types/dispatcher.d.ts","./node_modules/undici-types/global-dispatcher.d.ts","./node_modules/undici-types/global-origin.d.ts","./node_modules/undici-types/pool-stats.d.ts","./node_modules/undici-types/pool.d.ts","./node_modules/undici-types/handlers.d.ts","./node_modules/undici-types/balanced-pool.d.ts","./node_modules/undici-types/h2c-client.d.ts","./node_modules/undici-types/agent.d.ts","./node_modules/undici-types/mock-interceptor.d.ts","./node_modules/undici-types/mock-call-history.d.ts","./node_modules/undici-types/mock-agent.d.ts","./node_modules/undici-types/mock-client.d.ts","./node_modules/undici-types/mock-pool.d.ts","./node_modules/undici-types/snapshot-agent.d.ts","./node_modules/undici-types/mock-errors.d.ts","./node_modules/undici-types/proxy-agent.d.ts","./node_modules/undici-types/env-http-proxy-agent.d.ts","./node_modules/undici-types/retry-handler.d.ts","./node_modules/undici-types/retry-agent.d.ts","./node_modules/undici-types/api.d.ts","./node_modules/undici-types/cache-interceptor.d.ts","./node_modules/undici-types/interceptors.d.ts","./node_modules/undici-types/util.d.ts","./node_modules/undici-types/cookies.d.ts","./node_modules/undici-types/patch.d.ts","./node_modules/undici-types/websocket.d.ts","./node_modules/undici-types/eventsource.d.ts","./node_modules/undici-types/diagnostics-channel.d.ts","./node_modules/undici-types/content-type.d.ts","./node_modules/undici-types/cache.d.ts","./node_modules/undici-types/index.d.ts","./node_modules/@types/node/web-globals/fetch.d.ts","./node_modules/@types/node/web-globals/navigator.d.ts","./node_modules/@types/node/web-globals/storage.d.ts","./node_modules/@types/node/web-globals/streams.d.ts","./node_modules/@types/node/assert.d.ts","./node_modules/@types/node/assert/strict.d.ts","./node_modules/@types/node/async_hooks.d.ts","./node_modules/@types/node/buffer.d.ts","./node_modules/@types/node/child_process.d.ts","./node_modules/@types/node/cluster.d.ts","./node_modules/@types/node/console.d.ts","./node_modules/@types/node/constants.d.ts","./node_modules/@types/node/crypto.d.ts","./node_modules/@types/node/dgram.d.ts","./node_modules/@types/node/diagnostics_channel.d.ts","./node_modules/@types/node/dns.d.ts","./node_modules/@types/node/dns/promises.d.ts","./node_modules/@types/node/domain.d.ts","./node_modules/@types/node/events.d.ts","./node_modules/@types/node/fs.d.ts","./node_modules/@types/node/fs/promises.d.ts","./node_modules/@types/node/http.d.ts","./node_modules/@types/node/http2.d.ts","./node_modules/@types/node/https.d.ts","./node_modules/@types/node/inspector.d.ts","./node_modules/@types/node/inspector.generated.d.ts","./node_modules/@types/node/module.d.ts","./node_modules/@types/node/net.d.ts","./node_modules/@types/node/os.d.ts","./node_modules/@types/node/path.d.ts","./node_modules/@types/node/perf_hooks.d.ts","./node_modules/@types/node/process.d.ts","./node_modules/@types/node/punycode.d.ts","./node_modules/@types/node/querystring.d.ts","./node_modules/@types/node/readline.d.ts","./node_modules/@types/node/readline/promises.d.ts","./node_modules/@types/node/repl.d.ts","./node_modules/@types/node/sea.d.ts","./node_modules/@types/node/sqlite.d.ts","./node_modules/@types/node/stream.d.ts","./node_modules/@types/node/stream/promises.d.ts","./node_modules/@types/node/stream/consumers.d.ts","./node_modules/@types/node/stream/web.d.ts","./node_modules/@types/node/string_decoder.d.ts","./node_modules/@types/node/test.d.ts","./node_modules/@types/node/timers.d.ts","./node_modules/@types/node/timers/promises.d.ts","./node_modules/@types/node/tls.d.ts","./node_modules/@types/node/trace_events.d.ts","./node_modules/@types/node/tty.d.ts","./node_modules/@types/node/url.d.ts","./node_modules/@types/node/util.d.ts","./node_modules/@types/node/v8.d.ts","./node_modules/@types/node/vm.d.ts","./node_modules/@types/node/wasi.d.ts","./node_modules/@types/node/worker_threads.d.ts","./node_modules/@types/node/zlib.d.ts","./node_modules/@types/node/index.d.ts","./node_modules/vite/types/hmrpayload.d.ts","./node_modules/vite/dist/node/chunks/modulerunnertransport.d.ts","./node_modules/vite/types/customevent.d.ts","./node_modules/@types/estree/index.d.ts","./node_modules/rollup/dist/rollup.d.ts","./node_modules/rollup/dist/parseast.d.ts","./node_modules/vite/types/hot.d.ts","./node_modules/vite/dist/node/module-runner.d.ts","./node_modules/esbuild/lib/main.d.ts","./node_modules/vite/types/internal/terseroptions.d.ts","./node_modules/source-map-js/source-map.d.ts","./node_modules/postcss/lib/previous-map.d.ts","./node_modules/postcss/lib/input.d.ts","./node_modules/postcss/lib/css-syntax-error.d.ts","./node_modules/postcss/lib/declaration.d.ts","./node_modules/postcss/lib/root.d.ts","./node_modules/postcss/lib/warning.d.ts","./node_modules/postcss/lib/lazy-result.d.ts","./node_modules/postcss/lib/no-work-result.d.ts","./node_modules/postcss/lib/processor.d.ts","./node_modules/postcss/lib/result.d.ts","./node_modules/postcss/lib/document.d.ts","./node_modules/postcss/lib/rule.d.ts","./node_modules/postcss/lib/node.d.ts","./node_modules/postcss/lib/comment.d.ts","./node_modules/postcss/lib/container.d.ts","./node_modules/postcss/lib/at-rule.d.ts","./node_modules/postcss/lib/list.d.ts","./node_modules/postcss/lib/postcss.d.ts","./node_modules/postcss/lib/postcss.d.mts","./node_modules/vite/types/internal/csspreprocessoroptions.d.ts","./node_modules/lightningcss/node/ast.d.ts","./node_modules/lightningcss/node/targets.d.ts","./node_modules/lightningcss/node/index.d.ts","./node_modules/vite/types/internal/lightningcssoptions.d.ts","./node_modules/vite/types/importglob.d.ts","./node_modules/vite/types/metadata.d.ts","./node_modules/vite/dist/node/index.d.ts","./node_modules/@vitest/snapshot/dist/environment.d-dhdq1csl.d.ts","./node_modules/@vitest/snapshot/dist/rawsnapshot.d-lfsmjfud.d.ts","./node_modules/@vitest/snapshot/dist/index.d.ts","./node_modules/vitest/dist/chunks/traces.d.402v_yfi.d.ts","./node_modules/vitest/dist/chunks/rpc.d.rh3apgef.d.ts","./node_modules/vitest/dist/chunks/config.d.cy95hicx.d.ts","./node_modules/vitest/dist/chunks/environment.d.crsxczp1.d.ts","./node_modules/vitest/dist/chunks/worker.d.dyxm8del.d.ts","./node_modules/vitest/dist/chunks/browser.d.chkacdzh.d.ts","./node_modules/@vitest/mocker/dist/types.d-b8cckmht.d.ts","./node_modules/@vitest/mocker/dist/index.d-c-slyzi-.d.ts","./node_modules/@vitest/mocker/dist/index.d.ts","./node_modules/@vitest/utils/dist/source-map.d.ts","./node_modules/vitest/dist/chunks/coverage.d.bztk59wp.d.ts","./node_modules/@vitest/utils/dist/serialize.d.ts","./node_modules/@vitest/utils/dist/error.d.ts","./node_modules/vitest/dist/browser.d.ts","./node_modules/vitest/browser/context.d.ts","./node_modules/vitest/optional-types.d.ts","./node_modules/@vitest/runner/dist/utils.d.ts","./node_modules/tinybench/dist/index.d.ts","./node_modules/vitest/dist/chunks/benchmark.d.daahlpsq.d.ts","./node_modules/@vitest/snapshot/dist/manager.d.ts","./node_modules/vitest/dist/chunks/reporters.d.cwxni2jg.d.ts","./node_modules/vitest/dist/chunks/plugin.d.ctqpeehp.d.ts","./node_modules/vitest/dist/config.d.ts","./node_modules/vitest/config.d.ts","./vitest.config.ts","./node_modules/@types/react/global.d.ts","./node_modules/csstype/index.d.ts","./node_modules/@types/react/index.d.ts","./src/lib/types.ts","./src/lib/colors.ts","./src/data/appendix.ts","./src/data/assumptions.ts","./src/data/ecosystem.ts","./src/data/governance.ts","./src/data/impact.ts","./src/data/interviews.ts","./src/data/orgs.ts","./src/data/story.ts","./src/data/sustainability.ts","./src/data/team.ts","./src/data/timeline.ts","./src/types/database.ts","./src/hooks/useassignments.ts","./src/hooks/usefullscreen.ts","./node_modules/vitest/dist/chunks/global.d.b15mdlcr.d.ts","./node_modules/vitest/dist/chunks/suite.d.bjwk38hb.d.ts","./node_modules/vitest/dist/chunks/evaluatedmodules.d.bxj5omdx.d.ts","./node_modules/expect-type/dist/utils.d.ts","./node_modules/expect-type/dist/overloads.d.ts","./node_modules/expect-type/dist/branding.d.ts","./node_modules/expect-type/dist/messages.d.ts","./node_modules/expect-type/dist/index.d.ts","./node_modules/vitest/dist/index.d.ts","./node_modules/@types/react-dom/client.d.ts","./node_modules/@types/aria-query/index.d.ts","./node_modules/@testing-library/dom/types/matches.d.ts","./node_modules/@testing-library/dom/types/wait-for.d.ts","./node_modules/@testing-library/dom/types/query-helpers.d.ts","./node_modules/@testing-library/dom/types/queries.d.ts","./node_modules/@testing-library/dom/types/get-queries-for-element.d.ts","./node_modules/pretty-format/build/types.d.ts","./node_modules/pretty-format/build/index.d.ts","./node_modules/@testing-library/dom/types/screen.d.ts","./node_modules/@testing-library/dom/types/wait-for-element-to-be-removed.d.ts","./node_modules/@testing-library/dom/types/get-node-text.d.ts","./node_modules/@testing-library/dom/types/events.d.ts","./node_modules/@testing-library/dom/types/pretty-dom.d.ts","./node_modules/@testing-library/dom/types/role-helpers.d.ts","./node_modules/@testing-library/dom/types/config.d.ts","./node_modules/@testing-library/dom/types/suggestions.d.ts","./node_modules/@testing-library/dom/types/index.d.ts","./node_modules/@types/react-dom/test-utils/index.d.ts","./node_modules/@testing-library/react/types/index.d.ts","./node_modules/@supabase/functions-js/dist/module/types.d.ts","./node_modules/@supabase/functions-js/dist/module/functionsclient.d.ts","./node_modules/@supabase/functions-js/dist/module/index.d.ts","./node_modules/@supabase/postgrest-js/dist/index.d.mts","./node_modules/@supabase/realtime-js/dist/module/lib/websocket-factory.d.ts","./node_modules/@supabase/realtime-js/dist/module/lib/constants.d.ts","./node_modules/@supabase/realtime-js/dist/module/lib/serializer.d.ts","./node_modules/@supabase/realtime-js/dist/module/lib/timer.d.ts","./node_modules/@supabase/realtime-js/dist/module/lib/push.d.ts","./node_modules/@types/phoenix/index.d.ts","./node_modules/@supabase/realtime-js/dist/module/realtimepresence.d.ts","./node_modules/@supabase/realtime-js/dist/module/realtimechannel.d.ts","./node_modules/@supabase/realtime-js/dist/module/realtimeclient.d.ts","./node_modules/@supabase/realtime-js/dist/module/index.d.ts","./node_modules/iceberg-js/dist/index.d.ts","./node_modules/@supabase/storage-js/dist/index.d.mts","./node_modules/@supabase/auth-js/dist/module/lib/error-codes.d.ts","./node_modules/@supabase/auth-js/dist/module/lib/errors.d.ts","./node_modules/@supabase/auth-js/dist/module/lib/web3/ethereum.d.ts","./node_modules/@supabase/auth-js/dist/module/lib/web3/solana.d.ts","./node_modules/@supabase/auth-js/dist/module/lib/webauthn.dom.d.ts","./node_modules/@supabase/auth-js/dist/module/lib/helpers.d.ts","./node_modules/@supabase/auth-js/dist/module/gotrueclient.d.ts","./node_modules/@supabase/auth-js/dist/module/lib/webauthn.errors.d.ts","./node_modules/@supabase/auth-js/dist/module/lib/webauthn.d.ts","./node_modules/@supabase/auth-js/dist/module/lib/types.d.ts","./node_modules/@supabase/auth-js/dist/module/lib/fetch.d.ts","./node_modules/@supabase/auth-js/dist/module/gotrueadminapi.d.ts","./node_modules/@supabase/auth-js/dist/module/authadminapi.d.ts","./node_modules/@supabase/auth-js/dist/module/authclient.d.ts","./node_modules/@supabase/auth-js/dist/module/lib/locks.d.ts","./node_modules/@supabase/auth-js/dist/module/index.d.ts","./node_modules/@supabase/supabase-js/dist/index.d.mts","./src/lib/supabase.ts","./src/hooks/useinterviews.ts","./src/hooks/useinterviews.test.ts","./src/hooks/usekeyboardnav.ts","./src/hooks/usescrollnavigation.ts","./src/hooks/usescrollprogress.ts","./src/hooks/usescrollreveal.ts","./src/types/database.test.ts","./src/app/layout.tsx","./src/components/presentation/scrollsection.tsx","./src/components/presentation/sideprogressnav.tsx","./node_modules/lucide-react/dist/lucide-react.d.ts","./src/components/presentation/floatingcontrols.tsx","./src/components/presentation/appendixdivider.tsx","./src/components/presentation/scrollstory.tsx","./src/components/slides/coldopenslide.tsx","./src/components/ui/accentline.tsx","./src/components/ui/slideheader.tsx","./src/components/slides/whoweareslide.tsx","./src/components/slides/howmicrosimslide.tsx","./src/components/ui/statcard.tsx","./src/components/slides/whatwedoslide.tsx","./src/components/ui/quotecard.tsx","./src/components/slides/journeybeginsslide.tsx","./src/components/slides/tensionbuildsslide.tsx","./src/components/ecosystem/ecosystemnode.tsx","./src/components/ecosystem/ecosystemedge.tsx","./src/components/ecosystem/ecosystemring.tsx","./src/components/ecosystem/ecosystemmapinteractive.tsx","./src/components/ecosystem/ecosystemevolution.tsx","./src/components/ui/card.tsx","./src/components/slides/meetthethreeslide.tsx","./src/components/slides/governanceslidenew.tsx","./src/components/slides/roadaheadslide.tsx","./src/components/slides/thecloseslide.tsx","./src/components/slides/appendix/voicesslide.tsx","./src/components/slides/appendix/impactgoalsslide.tsx","./src/components/slides/appendix/partnersslide.tsx","./src/components/slides/appendix/canvasslide.tsx","./src/components/slides/appendix/canvasdetailslide.tsx","./src/components/slides/appendix/governancedetailslide.tsx","./src/components/slides/appendix/competitiveslide.tsx","./src/components/slides/appendix/highlightsslide.tsx","./src/components/slides/appendix/marketslide.tsx","./src/app/page.tsx","./node_modules/motion-utils/dist/index.d.ts","./node_modules/motion-dom/dist/index.d.ts","./node_modules/@types/react/jsx-runtime.d.ts","./node_modules/framer-motion/dist/types.d-cq4vrm6h.d.ts","./node_modules/framer-motion/dist/types/index.d.ts","./src/components/interviewguidance.tsx","./src/components/addinterviewmodal.tsx","./src/components/assignments.tsx","./node_modules/date-fns/constants.d.ts","./node_modules/date-fns/locale/types.d.ts","./node_modules/date-fns/fp/types.d.ts","./node_modules/date-fns/types.d.ts","./node_modules/date-fns/add.d.ts","./node_modules/date-fns/addbusinessdays.d.ts","./node_modules/date-fns/adddays.d.ts","./node_modules/date-fns/addhours.d.ts","./node_modules/date-fns/addisoweekyears.d.ts","./node_modules/date-fns/addmilliseconds.d.ts","./node_modules/date-fns/addminutes.d.ts","./node_modules/date-fns/addmonths.d.ts","./node_modules/date-fns/addquarters.d.ts","./node_modules/date-fns/addseconds.d.ts","./node_modules/date-fns/addweeks.d.ts","./node_modules/date-fns/addyears.d.ts","./node_modules/date-fns/areintervalsoverlapping.d.ts","./node_modules/date-fns/clamp.d.ts","./node_modules/date-fns/closestindexto.d.ts","./node_modules/date-fns/closestto.d.ts","./node_modules/date-fns/compareasc.d.ts","./node_modules/date-fns/comparedesc.d.ts","./node_modules/date-fns/constructfrom.d.ts","./node_modules/date-fns/constructnow.d.ts","./node_modules/date-fns/daystoweeks.d.ts","./node_modules/date-fns/differenceinbusinessdays.d.ts","./node_modules/date-fns/differenceincalendardays.d.ts","./node_modules/date-fns/differenceincalendarisoweekyears.d.ts","./node_modules/date-fns/differenceincalendarisoweeks.d.ts","./node_modules/date-fns/differenceincalendarmonths.d.ts","./node_modules/date-fns/differenceincalendarquarters.d.ts","./node_modules/date-fns/differenceincalendarweeks.d.ts","./node_modules/date-fns/differenceincalendaryears.d.ts","./node_modules/date-fns/differenceindays.d.ts","./node_modules/date-fns/differenceinhours.d.ts","./node_modules/date-fns/differenceinisoweekyears.d.ts","./node_modules/date-fns/differenceinmilliseconds.d.ts","./node_modules/date-fns/differenceinminutes.d.ts","./node_modules/date-fns/differenceinmonths.d.ts","./node_modules/date-fns/differenceinquarters.d.ts","./node_modules/date-fns/differenceinseconds.d.ts","./node_modules/date-fns/differenceinweeks.d.ts","./node_modules/date-fns/differenceinyears.d.ts","./node_modules/date-fns/eachdayofinterval.d.ts","./node_modules/date-fns/eachhourofinterval.d.ts","./node_modules/date-fns/eachminuteofinterval.d.ts","./node_modules/date-fns/eachmonthofinterval.d.ts","./node_modules/date-fns/eachquarterofinterval.d.ts","./node_modules/date-fns/eachweekofinterval.d.ts","./node_modules/date-fns/eachweekendofinterval.d.ts","./node_modules/date-fns/eachweekendofmonth.d.ts","./node_modules/date-fns/eachweekendofyear.d.ts","./node_modules/date-fns/eachyearofinterval.d.ts","./node_modules/date-fns/endofday.d.ts","./node_modules/date-fns/endofdecade.d.ts","./node_modules/date-fns/endofhour.d.ts","./node_modules/date-fns/endofisoweek.d.ts","./node_modules/date-fns/endofisoweekyear.d.ts","./node_modules/date-fns/endofminute.d.ts","./node_modules/date-fns/endofmonth.d.ts","./node_modules/date-fns/endofquarter.d.ts","./node_modules/date-fns/endofsecond.d.ts","./node_modules/date-fns/endoftoday.d.ts","./node_modules/date-fns/endoftomorrow.d.ts","./node_modules/date-fns/endofweek.d.ts","./node_modules/date-fns/endofyear.d.ts","./node_modules/date-fns/endofyesterday.d.ts","./node_modules/date-fns/_lib/format/formatters.d.ts","./node_modules/date-fns/_lib/format/longformatters.d.ts","./node_modules/date-fns/format.d.ts","./node_modules/date-fns/formatdistance.d.ts","./node_modules/date-fns/formatdistancestrict.d.ts","./node_modules/date-fns/formatdistancetonow.d.ts","./node_modules/date-fns/formatdistancetonowstrict.d.ts","./node_modules/date-fns/formatduration.d.ts","./node_modules/date-fns/formatiso.d.ts","./node_modules/date-fns/formatiso9075.d.ts","./node_modules/date-fns/formatisoduration.d.ts","./node_modules/date-fns/formatrfc3339.d.ts","./node_modules/date-fns/formatrfc7231.d.ts","./node_modules/date-fns/formatrelative.d.ts","./node_modules/date-fns/fromunixtime.d.ts","./node_modules/date-fns/getdate.d.ts","./node_modules/date-fns/getday.d.ts","./node_modules/date-fns/getdayofyear.d.ts","./node_modules/date-fns/getdaysinmonth.d.ts","./node_modules/date-fns/getdaysinyear.d.ts","./node_modules/date-fns/getdecade.d.ts","./node_modules/date-fns/_lib/defaultoptions.d.ts","./node_modules/date-fns/getdefaultoptions.d.ts","./node_modules/date-fns/gethours.d.ts","./node_modules/date-fns/getisoday.d.ts","./node_modules/date-fns/getisoweek.d.ts","./node_modules/date-fns/getisoweekyear.d.ts","./node_modules/date-fns/getisoweeksinyear.d.ts","./node_modules/date-fns/getmilliseconds.d.ts","./node_modules/date-fns/getminutes.d.ts","./node_modules/date-fns/getmonth.d.ts","./node_modules/date-fns/getoverlappingdaysinintervals.d.ts","./node_modules/date-fns/getquarter.d.ts","./node_modules/date-fns/getseconds.d.ts","./node_modules/date-fns/gettime.d.ts","./node_modules/date-fns/getunixtime.d.ts","./node_modules/date-fns/getweek.d.ts","./node_modules/date-fns/getweekofmonth.d.ts","./node_modules/date-fns/getweekyear.d.ts","./node_modules/date-fns/getweeksinmonth.d.ts","./node_modules/date-fns/getyear.d.ts","./node_modules/date-fns/hourstomilliseconds.d.ts","./node_modules/date-fns/hourstominutes.d.ts","./node_modules/date-fns/hourstoseconds.d.ts","./node_modules/date-fns/interval.d.ts","./node_modules/date-fns/intervaltoduration.d.ts","./node_modules/date-fns/intlformat.d.ts","./node_modules/date-fns/intlformatdistance.d.ts","./node_modules/date-fns/isafter.d.ts","./node_modules/date-fns/isbefore.d.ts","./node_modules/date-fns/isdate.d.ts","./node_modules/date-fns/isequal.d.ts","./node_modules/date-fns/isexists.d.ts","./node_modules/date-fns/isfirstdayofmonth.d.ts","./node_modules/date-fns/isfriday.d.ts","./node_modules/date-fns/isfuture.d.ts","./node_modules/date-fns/islastdayofmonth.d.ts","./node_modules/date-fns/isleapyear.d.ts","./node_modules/date-fns/ismatch.d.ts","./node_modules/date-fns/ismonday.d.ts","./node_modules/date-fns/ispast.d.ts","./node_modules/date-fns/issameday.d.ts","./node_modules/date-fns/issamehour.d.ts","./node_modules/date-fns/issameisoweek.d.ts","./node_modules/date-fns/issameisoweekyear.d.ts","./node_modules/date-fns/issameminute.d.ts","./node_modules/date-fns/issamemonth.d.ts","./node_modules/date-fns/issamequarter.d.ts","./node_modules/date-fns/issamesecond.d.ts","./node_modules/date-fns/issameweek.d.ts","./node_modules/date-fns/issameyear.d.ts","./node_modules/date-fns/issaturday.d.ts","./node_modules/date-fns/issunday.d.ts","./node_modules/date-fns/isthishour.d.ts","./node_modules/date-fns/isthisisoweek.d.ts","./node_modules/date-fns/isthisminute.d.ts","./node_modules/date-fns/isthismonth.d.ts","./node_modules/date-fns/isthisquarter.d.ts","./node_modules/date-fns/isthissecond.d.ts","./node_modules/date-fns/isthisweek.d.ts","./node_modules/date-fns/isthisyear.d.ts","./node_modules/date-fns/isthursday.d.ts","./node_modules/date-fns/istoday.d.ts","./node_modules/date-fns/istomorrow.d.ts","./node_modules/date-fns/istuesday.d.ts","./node_modules/date-fns/isvalid.d.ts","./node_modules/date-fns/iswednesday.d.ts","./node_modules/date-fns/isweekend.d.ts","./node_modules/date-fns/iswithininterval.d.ts","./node_modules/date-fns/isyesterday.d.ts","./node_modules/date-fns/lastdayofdecade.d.ts","./node_modules/date-fns/lastdayofisoweek.d.ts","./node_modules/date-fns/lastdayofisoweekyear.d.ts","./node_modules/date-fns/lastdayofmonth.d.ts","./node_modules/date-fns/lastdayofquarter.d.ts","./node_modules/date-fns/lastdayofweek.d.ts","./node_modules/date-fns/lastdayofyear.d.ts","./node_modules/date-fns/_lib/format/lightformatters.d.ts","./node_modules/date-fns/lightformat.d.ts","./node_modules/date-fns/max.d.ts","./node_modules/date-fns/milliseconds.d.ts","./node_modules/date-fns/millisecondstohours.d.ts","./node_modules/date-fns/millisecondstominutes.d.ts","./node_modules/date-fns/millisecondstoseconds.d.ts","./node_modules/date-fns/min.d.ts","./node_modules/date-fns/minutestohours.d.ts","./node_modules/date-fns/minutestomilliseconds.d.ts","./node_modules/date-fns/minutestoseconds.d.ts","./node_modules/date-fns/monthstoquarters.d.ts","./node_modules/date-fns/monthstoyears.d.ts","./node_modules/date-fns/nextday.d.ts","./node_modules/date-fns/nextfriday.d.ts","./node_modules/date-fns/nextmonday.d.ts","./node_modules/date-fns/nextsaturday.d.ts","./node_modules/date-fns/nextsunday.d.ts","./node_modules/date-fns/nextthursday.d.ts","./node_modules/date-fns/nexttuesday.d.ts","./node_modules/date-fns/nextwednesday.d.ts","./node_modules/date-fns/parse/_lib/types.d.ts","./node_modules/date-fns/parse/_lib/setter.d.ts","./node_modules/date-fns/parse/_lib/parser.d.ts","./node_modules/date-fns/parse/_lib/parsers.d.ts","./node_modules/date-fns/parse.d.ts","./node_modules/date-fns/parseiso.d.ts","./node_modules/date-fns/parsejson.d.ts","./node_modules/date-fns/previousday.d.ts","./node_modules/date-fns/previousfriday.d.ts","./node_modules/date-fns/previousmonday.d.ts","./node_modules/date-fns/previoussaturday.d.ts","./node_modules/date-fns/previoussunday.d.ts","./node_modules/date-fns/previousthursday.d.ts","./node_modules/date-fns/previoustuesday.d.ts","./node_modules/date-fns/previouswednesday.d.ts","./node_modules/date-fns/quarterstomonths.d.ts","./node_modules/date-fns/quarterstoyears.d.ts","./node_modules/date-fns/roundtonearesthours.d.ts","./node_modules/date-fns/roundtonearestminutes.d.ts","./node_modules/date-fns/secondstohours.d.ts","./node_modules/date-fns/secondstomilliseconds.d.ts","./node_modules/date-fns/secondstominutes.d.ts","./node_modules/date-fns/set.d.ts","./node_modules/date-fns/setdate.d.ts","./node_modules/date-fns/setday.d.ts","./node_modules/date-fns/setdayofyear.d.ts","./node_modules/date-fns/setdefaultoptions.d.ts","./node_modules/date-fns/sethours.d.ts","./node_modules/date-fns/setisoday.d.ts","./node_modules/date-fns/setisoweek.d.ts","./node_modules/date-fns/setisoweekyear.d.ts","./node_modules/date-fns/setmilliseconds.d.ts","./node_modules/date-fns/setminutes.d.ts","./node_modules/date-fns/setmonth.d.ts","./node_modules/date-fns/setquarter.d.ts","./node_modules/date-fns/setseconds.d.ts","./node_modules/date-fns/setweek.d.ts","./node_modules/date-fns/setweekyear.d.ts","./node_modules/date-fns/setyear.d.ts","./node_modules/date-fns/startofday.d.ts","./node_modules/date-fns/startofdecade.d.ts","./node_modules/date-fns/startofhour.d.ts","./node_modules/date-fns/startofisoweek.d.ts","./node_modules/date-fns/startofisoweekyear.d.ts","./node_modules/date-fns/startofminute.d.ts","./node_modules/date-fns/startofmonth.d.ts","./node_modules/date-fns/startofquarter.d.ts","./node_modules/date-fns/startofsecond.d.ts","./node_modules/date-fns/startoftoday.d.ts","./node_modules/date-fns/startoftomorrow.d.ts","./node_modules/date-fns/startofweek.d.ts","./node_modules/date-fns/startofweekyear.d.ts","./node_modules/date-fns/startofyear.d.ts","./node_modules/date-fns/startofyesterday.d.ts","./node_modules/date-fns/sub.d.ts","./node_modules/date-fns/subbusinessdays.d.ts","./node_modules/date-fns/subdays.d.ts","./node_modules/date-fns/subhours.d.ts","./node_modules/date-fns/subisoweekyears.d.ts","./node_modules/date-fns/submilliseconds.d.ts","./node_modules/date-fns/subminutes.d.ts","./node_modules/date-fns/submonths.d.ts","./node_modules/date-fns/subquarters.d.ts","./node_modules/date-fns/subseconds.d.ts","./node_modules/date-fns/subweeks.d.ts","./node_modules/date-fns/subyears.d.ts","./node_modules/date-fns/todate.d.ts","./node_modules/date-fns/transpose.d.ts","./node_modules/date-fns/weekstodays.d.ts","./node_modules/date-fns/yearstodays.d.ts","./node_modules/date-fns/yearstomonths.d.ts","./node_modules/date-fns/yearstoquarters.d.ts","./node_modules/date-fns/index.d.ts","./src/components/interviewtable.tsx","./src/components/materials.tsx","./src/components/milestonetracker.tsx","./src/components/outreach.tsx","./src/components/progressring.tsx","./src/components/progressring.test.tsx","./src/components/segmentchart.tsx","./node_modules/pptxgenjs/types/index.d.ts","./src/components/slides.tsx","./src/components/slides/placeholdersection.tsx","./src/components/ui/orgbadge.tsx","./src/components/ui/progressbar.tsx","./node_modules/@testing-library/user-event/dist/types/event/eventmap.d.ts","./node_modules/@testing-library/user-event/dist/types/event/types.d.ts","./node_modules/@testing-library/user-event/dist/types/event/dispatchevent.d.ts","./node_modules/@testing-library/user-event/dist/types/event/focus.d.ts","./node_modules/@testing-library/user-event/dist/types/event/input.d.ts","./node_modules/@testing-library/user-event/dist/types/utils/click/isclickableinput.d.ts","./node_modules/@testing-library/user-event/dist/types/utils/datatransfer/blob.d.ts","./node_modules/@testing-library/user-event/dist/types/utils/datatransfer/datatransfer.d.ts","./node_modules/@testing-library/user-event/dist/types/utils/datatransfer/filelist.d.ts","./node_modules/@testing-library/user-event/dist/types/utils/datatransfer/clipboard.d.ts","./node_modules/@testing-library/user-event/dist/types/utils/edit/timevalue.d.ts","./node_modules/@testing-library/user-event/dist/types/utils/edit/iscontenteditable.d.ts","./node_modules/@testing-library/user-event/dist/types/utils/edit/iseditable.d.ts","./node_modules/@testing-library/user-event/dist/types/utils/edit/maxlength.d.ts","./node_modules/@testing-library/user-event/dist/types/utils/edit/setfiles.d.ts","./node_modules/@testing-library/user-event/dist/types/utils/focus/cursor.d.ts","./node_modules/@testing-library/user-event/dist/types/utils/focus/getactiveelement.d.ts","./node_modules/@testing-library/user-event/dist/types/utils/focus/gettabdestination.d.ts","./node_modules/@testing-library/user-event/dist/types/utils/focus/isfocusable.d.ts","./node_modules/@testing-library/user-event/dist/types/utils/focus/selection.d.ts","./node_modules/@testing-library/user-event/dist/types/utils/focus/selector.d.ts","./node_modules/@testing-library/user-event/dist/types/utils/keydef/readnextdescriptor.d.ts","./node_modules/@testing-library/user-event/dist/types/utils/misc/cloneevent.d.ts","./node_modules/@testing-library/user-event/dist/types/utils/misc/findclosest.d.ts","./node_modules/@testing-library/user-event/dist/types/utils/misc/getdocumentfromnode.d.ts","./node_modules/@testing-library/user-event/dist/types/utils/misc/gettreediff.d.ts","./node_modules/@testing-library/user-event/dist/types/utils/misc/getwindow.d.ts","./node_modules/@testing-library/user-event/dist/types/utils/misc/isdescendantorself.d.ts","./node_modules/@testing-library/user-event/dist/types/utils/misc/iselementtype.d.ts","./node_modules/@testing-library/user-event/dist/types/utils/misc/isvisible.d.ts","./node_modules/@testing-library/user-event/dist/types/utils/misc/isdisabled.d.ts","./node_modules/@testing-library/user-event/dist/types/utils/misc/level.d.ts","./node_modules/@testing-library/user-event/dist/types/utils/misc/wait.d.ts","./node_modules/@testing-library/user-event/dist/types/utils/pointer/csspointerevents.d.ts","./node_modules/@testing-library/user-event/dist/types/utils/index.d.ts","./node_modules/@testing-library/user-event/dist/types/document/ui.d.ts","./node_modules/@testing-library/user-event/dist/types/document/getvalueortextcontent.d.ts","./node_modules/@testing-library/user-event/dist/types/document/copyselection.d.ts","./node_modules/@testing-library/user-event/dist/types/document/trackvalue.d.ts","./node_modules/@testing-library/user-event/dist/types/document/index.d.ts","./node_modules/@testing-library/user-event/dist/types/event/selection/getinputrange.d.ts","./node_modules/@testing-library/user-event/dist/types/event/selection/modifyselection.d.ts","./node_modules/@testing-library/user-event/dist/types/event/selection/moveselection.d.ts","./node_modules/@testing-library/user-event/dist/types/event/selection/setselectionpermouse.d.ts","./node_modules/@testing-library/user-event/dist/types/event/selection/modifyselectionpermouse.d.ts","./node_modules/@testing-library/user-event/dist/types/event/selection/selectall.d.ts","./node_modules/@testing-library/user-event/dist/types/event/selection/setselectionrange.d.ts","./node_modules/@testing-library/user-event/dist/types/event/selection/setselection.d.ts","./node_modules/@testing-library/user-event/dist/types/event/selection/updateselectiononfocus.d.ts","./node_modules/@testing-library/user-event/dist/types/event/selection/index.d.ts","./node_modules/@testing-library/user-event/dist/types/event/index.d.ts","./node_modules/@testing-library/user-event/dist/types/system/pointer/buttons.d.ts","./node_modules/@testing-library/user-event/dist/types/system/pointer/shared.d.ts","./node_modules/@testing-library/user-event/dist/types/system/pointer/index.d.ts","./node_modules/@testing-library/user-event/dist/types/system/index.d.ts","./node_modules/@testing-library/user-event/dist/types/system/keyboard.d.ts","./node_modules/@testing-library/user-event/dist/types/options.d.ts","./node_modules/@testing-library/user-event/dist/types/convenience/click.d.ts","./node_modules/@testing-library/user-event/dist/types/convenience/hover.d.ts","./node_modules/@testing-library/user-event/dist/types/convenience/tab.d.ts","./node_modules/@testing-library/user-event/dist/types/convenience/index.d.ts","./node_modules/@testing-library/user-event/dist/types/keyboard/index.d.ts","./node_modules/@testing-library/user-event/dist/types/clipboard/copy.d.ts","./node_modules/@testing-library/user-event/dist/types/clipboard/cut.d.ts","./node_modules/@testing-library/user-event/dist/types/clipboard/paste.d.ts","./node_modules/@testing-library/user-event/dist/types/clipboard/index.d.ts","./node_modules/@testing-library/user-event/dist/types/pointer/index.d.ts","./node_modules/@testing-library/user-event/dist/types/utility/clear.d.ts","./node_modules/@testing-library/user-event/dist/types/utility/selectoptions.d.ts","./node_modules/@testing-library/user-event/dist/types/utility/type.d.ts","./node_modules/@testing-library/user-event/dist/types/utility/upload.d.ts","./node_modules/@testing-library/user-event/dist/types/utility/index.d.ts","./node_modules/@testing-library/user-event/dist/types/setup/api.d.ts","./node_modules/@testing-library/user-event/dist/types/setup/directapi.d.ts","./node_modules/@testing-library/user-event/dist/types/setup/setup.d.ts","./node_modules/@testing-library/user-event/dist/types/setup/index.d.ts","./node_modules/@testing-library/user-event/dist/types/index.d.ts","./src/test/outreach.test.tsx","./node_modules/@testing-library/jest-dom/types/matchers.d.ts","./node_modules/@testing-library/jest-dom/types/jest.d.ts","./node_modules/@testing-library/jest-dom/types/index.d.ts","./src/test/setup.tsx","./node_modules/@babel/types/lib/index.d.ts","./node_modules/@types/babel__generator/index.d.ts","./node_modules/@babel/parser/typings/babel-parser.d.ts","./node_modules/@types/babel__template/index.d.ts","./node_modules/@types/babel__traverse/index.d.ts","./node_modules/@types/babel__core/index.d.ts","./node_modules/@types/d3-array/index.d.ts","./node_modules/@types/d3-color/index.d.ts","./node_modules/@types/d3-ease/index.d.ts","./node_modules/@types/d3-interpolate/index.d.ts","./node_modules/@types/d3-path/index.d.ts","./node_modules/@types/d3-time/index.d.ts","./node_modules/@types/d3-scale/index.d.ts","./node_modules/@types/d3-shape/index.d.ts","./node_modules/@types/d3-timer/index.d.ts","./node_modules/@types/json-schema/index.d.ts","./node_modules/@types/react-dom/index.d.ts","./node_modules/@types/use-sync-external-store/index.d.ts","./node_modules/@types/ws/index.d.ts"],"fileIdsList":[[83,137,154,155],[83,137,154,155,740],[83,137,154,155,329],[83,137,154,155,324],[83,137,154,155,319,327,328],[83,137,154,155,319,323,327,328,329],[83,137,154,155,319,324,327,329,330,331,332],[83,137,154,155,318,327],[83,137,154,155,327],[83,137,154,155,322,327],[83,137,154,155,319,320,321,322,326,328],[83,137,154,155,319,322,324,325,327],[83,137,154,155,302],[83,137,154,155,302,303],[83,137,154,155,306,312,313,314],[83,137,154,155,313],[83,137,154,155,307,309,310,312,314],[83,137,154,155,306,307,308,309,313],[83,137,154,155,311,313],[83,137,154,155,316],[83,137,154,155,304,305,315,317,333],[83,137,154,155,287],[83,137,154,155,284,285,286,287,288,291,292,293,294,295,296,297,298],[83,137,154,155,283],[83,137,154,155,290],[83,137,154,155,284,285,286],[83,137,154,155,284,285],[83,137,154,155,287,288,290],[83,137,154,155,285],[83,137,154,155,737],[83,137,154,155,736],[83,137,154,155,256,282,299,300],[83,137,154,155,733],[83,137,154,155,720,721,722],[83,137,154,155,715,716,717],[83,137,154,155,693,694,695,696],[83,137,154,155,659,733],[83,137,154,155,659],[83,137,154,155,659,660,661,662,707],[83,137,154,155,697],[83,137,154,155,692,698,699,700,701,702,703,704,705,706],[83,137,154,155,707],[83,137,154,155,658],[83,137,154,155,711,713,714,732,733],[83,137,154,155,711,713],[83,137,154,155,708,711,733],[83,137,154,155,718,719,723,724,729],[83,137,154,155,712,714,724,732],[83,137,154,155,731,732],[83,137,154,155,708,712,714,730,731],[83,137,154,155,712,733],[83,137,154,155,710],[83,137,154,155,710,712,733],[83,137,154,155,708,709],[83,137,154,155,725,726,727,728],[83,137,154,155,714,733],[83,137,154,155,669],[83,137,154,155,663,670],[83,137,154,155,663,664,665,666,667,668,669,670,671,672,673,674,675,676,677,678,679,680,681,682,683,684,685,686,687,688,689,690,691],[83,137,154,155,689,733],[83,137,154,155,740,741,742,743,744],[83,137,154,155,740,742],[77,78,83,137,154,155],[83,137,154,155,747],[83,137,154,155,751],[83,137,154,155,750],[83,134,135,137,154,155],[83,136,137,154,155],[137,154,155],[83,137,142,154,155,172],[83,137,138,143,148,154,155,157,169,180],[83,137,138,139,148,154,155,157],[83,137,140,154,155,181],[83,137,141,142,149,154,155,158],[83,137,142,154,155,169,177],[83,137,143,145,148,154,155,157],[83,136,137,144,154,155],[83,137,145,146,154,155],[83,137,147,148,154,155],[83,136,137,148,154,155],[83,137,148,149,150,154,155,169,180],[83,137,148,149,150,154,155,164,169,172],[83,129,137,145,148,151,154,155,157,169,180],[83,137,148,149,151,152,154,155,157,169,177,180],[83,137,151,153,154,155,169,177,180],[81,82,83,84,85,86,87,88,130,131,132,133,134,135,136,137,138,139,140,141,142,143,144,145,146,147,148,149,150,151,152,153,154,155,156,157,158,159,160,161,162,163,164,165,166,167,168,169,170,171,172,173,174,175,176,177,178,179,180,181,182,183,184,185,186],[83,137,148,154,155],[83,137,154,155,156,180],[83,137,145,148,154,155,157,169],[83,137,154,155,158],[83,137,154,155,159],[83,136,137,154,155,160],[83,134,135,136,137,138,139,140,141,142,143,144,145,146,147,148,149,150,151,152,153,154,155,156,157,158,159,160,161,162,163,164,165,166,167,168,169,170,171,172,173,174,175,176,177,178,179,180,181,182,183,184,185,186],[83,137,154,155,162],[83,137,154,155,163],[83,137,148,154,155,164,165],[83,137,154,155,164,166,181,183],[83,137,149,154,155],[83,137,148,154,155,169,170,172],[83,137,154,155,171,172],[83,137,154,155,169,170],[83,137,154,155,172],[83,137,154,155,173],[83,134,137,154,155,169,174],[83,137,148,154,155,175,176],[83,137,154,155,175,176],[83,137,142,154,155,157,169,177],[83,137,154,155,178],[83,137,154,155,157,179],[83,137,151,154,155,163,180],[83,137,142,154,155,181],[83,137,154,155,169,182],[83,137,154,155,156,183],[83,137,154,155,184],[83,137,142,154,155],[83,129,137,154,155],[83,137,154,155,185],[83,129,137,148,150,154,155,160,169,172,180,182,183,185],[83,137,154,155,169,186],[83,137,154,155,256],[83,137,154,155,254,255],[83,137,148,151,153,154,155,157,169,177,180,186,187],[64,68,71,73,74,75,76,79,83,137,154,155,273],[83,137,154,155,235],[83,137,154,155,235,236],[68,69,71,72,83,137,154,155],[68,83,137,154,155],[68,69,71,83,137,154,155],[68,69,83,137,154,155],[63,83,137,154,155,226,227],[63,83,137,154,155,226],[63,70,83,137,154,155],[63,83,137,154,155],[63,70,83,137,154,155,240],[65,83,137,154,155],[63,64,65,66,67,83,137,154,155],[83,137,154,155,391],[83,137,154,155,389,391],[83,137,154,155,389],[83,137,154,155,391,455,456],[83,137,154,155,391,458],[83,137,154,155,391,459],[83,137,154,155,476],[83,137,154,155,391,392,393,394,395,396,397,398,399,400,401,402,403,404,405,406,407,408,409,410,411,412,413,414,415,416,417,418,419,420,421,422,423,424,425,426,427,428,429,430,431,432,433,434,435,436,437,438,439,440,441,442,443,444,445,446,447,448,449,450,451,452,453,454,457,458,459,460,461,462,463,464,465,466,467,468,469,470,471,472,473,474,475,477,478,479,480,481,482,483,484,485,486,487,488,489,490,491,492,493,494,495,496,497,498,499,500,501,502,503,504,505,506,507,508,509,510,511,512,513,514,515,516,517,518,519,520,521,522,523,524,525,526,527,528,529,530,531,532,533,534,535,536,537,538,539,540,541,542,543,544,545,546,547,548,549,550,551,553,554,555,556,557,558,559,560,561,562,563,564,565,566,567,568,569,570,571,572,577,578,579,580,581,582,583,584,585,586,587,588,589,590,591,592,593,594,595,596,597,598,599,600,601,602,603,604,605,606,607,608,609,610,611,612,613,614,615,616,617,618,619,620,621,622,623,624,625,626,627,628,629,630,631,632,633,634,635,636,637,638,639,640,641,642,643,644],[83,137,154,155,391,552],[83,137,154,155,391,456,576],[83,137,154,155,389,573,574],[83,137,154,155,575],[83,137,154,155,391,573],[83,137,154,155,388,389,390],[83,137,154,155,276,277],[83,137,154,155,276,277,278,279],[83,137,154,155,276,278],[83,137,154,155,276],[83,137,154,155,256,381],[83,137,154,155,256,380,381,382,383],[83,137,154,155,219,220],[83,137,154,155,380],[83,137,154,155,213],[83,137,154,155,211,213],[83,137,154,155,202,210,211,212,214,216],[83,137,154,155,200],[83,137,154,155,203,208,213,216],[83,137,154,155,199,216],[83,137,154,155,203,204,207,208,209,216],[83,137,154,155,203,204,205,207,208,216],[83,137,154,155,200,201,202,203,204,208,209,210,212,213,214,216],[83,137,154,155,216],[83,137,154,155,198,200,201,202,203,204,205,207,208,209,210,211,212,213,214,215],[83,137,154,155,198,216],[83,137,154,155,203,205,206,208,209,216],[83,137,154,155,207,216],[83,137,154,155,208,209,213,216],[83,137,154,155,201,211],[83,137,154,155,289],[83,137,154,155,192,224,225],[83,137,154,155,191,192],[83,95,98,101,102,137,154,155,180],[83,98,137,154,155,169,180],[83,98,102,137,154,155,180],[83,137,154,155,169],[83,92,137,154,155],[83,96,137,154,155],[83,94,95,98,137,154,155,180],[83,137,154,155,157,177],[83,137,154,155,187],[83,92,137,154,155,187],[83,94,98,137,154,155,157,180],[83,89,90,91,93,97,137,148,154,155,169,180],[83,98,106,114,137,154,155],[83,90,96,137,154,155],[83,98,123,124,137,154,155],[83,90,93,98,137,154,155,172,180,187],[83,98,137,154,155],[83,94,98,137,154,155,180],[83,89,137,154,155],[83,92,93,94,96,97,98,99,100,102,103,104,105,106,107,108,109,110,111,112,113,114,115,116,117,118,119,120,121,122,124,125,126,127,128,137,154,155],[83,98,116,119,137,145,154,155],[83,98,106,107,108,137,154,155],[83,96,98,107,109,137,154,155],[83,97,137,154,155],[83,90,92,98,137,154,155],[83,98,102,107,109,137,154,155],[83,102,137,154,155],[83,96,98,101,137,154,155,180],[83,90,94,98,106,137,154,155],[83,98,116,137,154,155],[83,109,137,154,155],[83,92,98,123,137,154,155,172,185,187],[83,137,154,155,188],[83,137,148,149,151,152,153,154,155,157,169,177,180,186,187,188,189,190,192,193,195,196,197,217,218,222,223,224,225],[83,137,154,155,188,189,190,194],[83,137,154,155,190],[83,137,154,155,221],[83,137,154,155,192,225],[83,137,154,155,242],[80,83,137,154,155,251,273],[63,64,66,67,68,71,73,74,83,137,154,155,228,229,231,238,239,241,273],[73,83,137,154,155,245,246,273],[73,83,137,154,155,229,233,273],[63,71,73,83,137,154,155,228,273],[83,137,154,155,195],[63,73,80,83,137,154,155,228,230,247,273],[83,137,154,155,225,249,251],[63,68,71,73,80,83,137,140,149,154,155,169,225,228,229,230,231,233,234,237,238,239,243,244,247,248,251,273],[73,83,137,154,155,195,228,229,273],[73,83,137,154,155,245,246,247,273],[73,83,137,154,155,195,230,231,232,273],[63,68,71,73,80,83,137,140,149,154,155,169,195,225,228,229,230,231,232,233,234,237,238,239,243,244,245,246,247,248,249,250,251,273],[63,68,71,73,74,80,83,137,154,155,195,228,229,230,231,232,233,234,245,246,247,273,274,275,280],[83,137,154,155,257,349,350,353,354,356,358,359,364,366,367,368,369,370,371,372,373,374,375,376,377,378],[83,137,154,155,256,270,346,384,385],[83,137,154,155,256,270,271,346,384],[83,137,154,155,257],[83,137,154,155,256,257,258,261,340,352,363],[83,137,154,155,256,258,261,360,361,362],[83,137,154,155,256,270,346,384],[83,137,154,155,256,270,346,384,645],[83,137,154,155,256,346,384],[83,137,154,155,270,346,384,645],[83,137,154,155,346],[83,137,154,155,256,257,341],[83,137,154,155,256,257,272,338,339,344,345,347,348],[83,137,154,155,281,301,650],[83,137,154,155,384],[83,137,154,155,270,384],[83,137,154,155,256,346,384,653],[83,137,154,155,257,258,352,365],[83,137,154,155,257,258,259,352,365],[83,137,154,155,257,258,259,352],[83,137,154,155,257,258,259,352,357],[83,137,154,155,257,258],[83,137,154,155,257,258,262,352,365],[83,137,154,155,257,258,352],[83,137,154,155,257,258,266,352,357],[83,137,154,155,257,258,267,352,365],[83,137,154,155,257,352],[83,137,154,155,257,258,269,352],[83,137,154,155,257,258,260,266,352,357],[83,137,154,155,257,258,263,352,355],[83,137,154,155,257,258,263,268,352],[83,137,154,155,351],[83,137,154,155,256,270],[83,137,154,155,270,281,301,336],[83,137,154,155,256,270,335],[83,137,154,155,270,334],[83,137,154,155,281,301,649,734],[83,137,154,155,281],[83,137,154,155,270,281],[83,137,154,155,159,252]],"fileInfos":[{"version":"c430d44666289dae81f30fa7b2edebf186ecc91a2d4c71266ea6ae76388792e1","affectsGlobalScope":true,"impliedFormat":1},{"version":"45b7ab580deca34ae9729e97c13cfd999df04416a79116c3bfb483804f85ded4","impliedFormat":1},{"version":"3facaf05f0c5fc569c5649dd359892c98a85557e3e0c847964caeb67076f4d75","impliedFormat":1},{"version":"e44bb8bbac7f10ecc786703fe0a6a4b952189f908707980ba8f3c8975a760962","impliedFormat":1},{"version":"5e1c4c362065a6b95ff952c0eab010f04dcd2c3494e813b493ecfd4fcb9fc0d8","impliedFormat":1},{"version":"68d73b4a11549f9c0b7d352d10e91e5dca8faa3322bfb77b661839c42b1ddec7","impliedFormat":1},{"version":"5efce4fc3c29ea84e8928f97adec086e3dc876365e0982cc8479a07954a3efd4","impliedFormat":1},{"version":"feecb1be483ed332fad555aff858affd90a48ab19ba7272ee084704eb7167569","impliedFormat":1},{"version":"ee7bad0c15b58988daa84371e0b89d313b762ab83cb5b31b8a2d1162e8eb41c2","impliedFormat":1},{"version":"080941d9f9ff9307f7e27a83bcd888b7c8270716c39af943532438932ec1d0b9","affectsGlobalScope":true,"impliedFormat":1},{"version":"2e80ee7a49e8ac312cc11b77f1475804bee36b3b2bc896bead8b6e1266befb43","affectsGlobalScope":true,"impliedFormat":1},{"version":"c57796738e7f83dbc4b8e65132f11a377649c00dd3eee333f672b8f0a6bea671","affectsGlobalScope":true,"impliedFormat":1},{"version":"dc2df20b1bcdc8c2d34af4926e2c3ab15ffe1160a63e58b7e09833f616efff44","affectsGlobalScope":true,"impliedFormat":1},{"version":"515d0b7b9bea2e31ea4ec968e9edd2c39d3eebf4a2d5cbd04e88639819ae3b71","affectsGlobalScope":true,"impliedFormat":1},{"version":"0559b1f683ac7505ae451f9a96ce4c3c92bdc71411651ca6ddb0e88baaaad6a3","affectsGlobalScope":true,"impliedFormat":1},{"version":"0dc1e7ceda9b8b9b455c3a2d67b0412feab00bd2f66656cd8850e8831b08b537","affectsGlobalScope":true,"impliedFormat":1},{"version":"ce691fb9e5c64efb9547083e4a34091bcbe5bdb41027e310ebba8f7d96a98671","affectsGlobalScope":true,"impliedFormat":1},{"version":"8d697a2a929a5fcb38b7a65594020fcef05ec1630804a33748829c5ff53640d0","affectsGlobalScope":true,"impliedFormat":1},{"version":"4ff2a353abf8a80ee399af572debb8faab2d33ad38c4b4474cff7f26e7653b8d","affectsGlobalScope":true,"impliedFormat":1},{"version":"fb0f136d372979348d59b3f5020b4cdb81b5504192b1cacff5d1fbba29378aa1","affectsGlobalScope":true,"impliedFormat":1},{"version":"d15bea3d62cbbdb9797079416b8ac375ae99162a7fba5de2c6c505446486ac0a","affectsGlobalScope":true,"impliedFormat":1},{"version":"68d18b664c9d32a7336a70235958b8997ebc1c3b8505f4f1ae2b7e7753b87618","affectsGlobalScope":true,"impliedFormat":1},{"version":"eb3d66c8327153d8fa7dd03f9c58d351107fe824c79e9b56b462935176cdf12a","affectsGlobalScope":true,"impliedFormat":1},{"version":"38f0219c9e23c915ef9790ab1d680440d95419ad264816fa15009a8851e79119","affectsGlobalScope":true,"impliedFormat":1},{"version":"69ab18c3b76cd9b1be3d188eaf8bba06112ebbe2f47f6c322b5105a6fbc45a2e","affectsGlobalScope":true,"impliedFormat":1},{"version":"a680117f487a4d2f30ea46f1b4b7f58bef1480456e18ba53ee85c2746eeca012","affectsGlobalScope":true,"impliedFormat":1},{"version":"2f11ff796926e0832f9ae148008138ad583bd181899ab7dd768a2666700b1893","affectsGlobalScope":true,"impliedFormat":1},{"version":"4de680d5bb41c17f7f68e0419412ca23c98d5749dcaaea1896172f06435891fc","affectsGlobalScope":true,"impliedFormat":1},{"version":"954296b30da6d508a104a3a0b5d96b76495c709785c1d11610908e63481ee667","affectsGlobalScope":true,"impliedFormat":1},{"version":"ac9538681b19688c8eae65811b329d3744af679e0bdfa5d842d0e32524c73e1c","affectsGlobalScope":true,"impliedFormat":1},{"version":"0a969edff4bd52585473d24995c5ef223f6652d6ef46193309b3921d65dd4376","affectsGlobalScope":true,"impliedFormat":1},{"version":"9e9fbd7030c440b33d021da145d3232984c8bb7916f277e8ffd3dc2e3eae2bdb","affectsGlobalScope":true,"impliedFormat":1},{"version":"811ec78f7fefcabbda4bfa93b3eb67d9ae166ef95f9bff989d964061cbf81a0c","affectsGlobalScope":true,"impliedFormat":1},{"version":"717937616a17072082152a2ef351cb51f98802fb4b2fdabd32399843875974ca","affectsGlobalScope":true,"impliedFormat":1},{"version":"d7e7d9b7b50e5f22c915b525acc5a49a7a6584cf8f62d0569e557c5cfc4b2ac2","affectsGlobalScope":true,"impliedFormat":1},{"version":"71c37f4c9543f31dfced6c7840e068c5a5aacb7b89111a4364b1d5276b852557","affectsGlobalScope":true,"impliedFormat":1},{"version":"576711e016cf4f1804676043e6a0a5414252560eb57de9faceee34d79798c850","affectsGlobalScope":true,"impliedFormat":1},{"version":"89c1b1281ba7b8a96efc676b11b264de7a8374c5ea1e6617f11880a13fc56dc6","affectsGlobalScope":true,"impliedFormat":1},{"version":"74f7fa2d027d5b33eb0471c8e82a6c87216223181ec31247c357a3e8e2fddc5b","affectsGlobalScope":true,"impliedFormat":1},{"version":"d6d7ae4d1f1f3772e2a3cde568ed08991a8ae34a080ff1151af28b7f798e22ca","affectsGlobalScope":true,"impliedFormat":1},{"version":"063600664504610fe3e99b717a1223f8b1900087fab0b4cad1496a114744f8df","affectsGlobalScope":true,"impliedFormat":1},{"version":"934019d7e3c81950f9a8426d093458b65d5aff2c7c1511233c0fd5b941e608ab","affectsGlobalScope":true,"impliedFormat":1},{"version":"52ada8e0b6e0482b728070b7639ee42e83a9b1c22d205992756fe020fd9f4a47","affectsGlobalScope":true,"impliedFormat":1},{"version":"3bdefe1bfd4d6dee0e26f928f93ccc128f1b64d5d501ff4a8cf3c6371200e5e6","affectsGlobalScope":true,"impliedFormat":1},{"version":"59fb2c069260b4ba00b5643b907ef5d5341b167e7d1dbf58dfd895658bda2867","affectsGlobalScope":true,"impliedFormat":1},{"version":"639e512c0dfc3fad96a84caad71b8834d66329a1f28dc95e3946c9b58176c73a","affectsGlobalScope":true,"impliedFormat":1},{"version":"368af93f74c9c932edd84c58883e736c9e3d53cec1fe24c0b0ff451f529ceab1","affectsGlobalScope":true,"impliedFormat":1},{"version":"af3dd424cf267428f30ccfc376f47a2c0114546b55c44d8c0f1d57d841e28d74","affectsGlobalScope":true,"impliedFormat":1},{"version":"995c005ab91a498455ea8dfb63aa9f83fa2ea793c3d8aa344be4a1678d06d399","affectsGlobalScope":true,"impliedFormat":1},{"version":"959d36cddf5e7d572a65045b876f2956c973a586da58e5d26cde519184fd9b8a","affectsGlobalScope":true,"impliedFormat":1},{"version":"965f36eae237dd74e6cca203a43e9ca801ce38824ead814728a2807b1910117d","affectsGlobalScope":true,"impliedFormat":1},{"version":"3925a6c820dcb1a06506c90b1577db1fdbf7705d65b62b99dce4be75c637e26b","affectsGlobalScope":true,"impliedFormat":1},{"version":"0a3d63ef2b853447ec4f749d3f368ce642264246e02911fcb1590d8c161b8005","affectsGlobalScope":true,"impliedFormat":1},{"version":"8cdf8847677ac7d20486e54dd3fcf09eda95812ac8ace44b4418da1bbbab6eb8","affectsGlobalScope":true,"impliedFormat":1},{"version":"8444af78980e3b20b49324f4a16ba35024fef3ee069a0eb67616ea6ca821c47a","affectsGlobalScope":true,"impliedFormat":1},{"version":"3287d9d085fbd618c3971944b65b4be57859f5415f495b33a6adc994edd2f004","affectsGlobalScope":true,"impliedFormat":1},{"version":"b4b67b1a91182421f5df999988c690f14d813b9850b40acd06ed44691f6727ad","affectsGlobalScope":true,"impliedFormat":1},{"version":"51ad4c928303041605b4d7ae32e0c1ee387d43a24cd6f1ebf4a2699e1076d4fa","affectsGlobalScope":true,"impliedFormat":1},{"version":"196cb558a13d4533a5163286f30b0509ce0210e4b316c56c38d4c0fd2fb38405","affectsGlobalScope":true,"impliedFormat":1},{"version":"8e7f8264d0fb4c5339605a15daadb037bf238c10b654bb3eee14208f860a32ea","affectsGlobalScope":true,"impliedFormat":1},{"version":"782dec38049b92d4e85c1585fbea5474a219c6984a35b004963b00beb1aab538","affectsGlobalScope":true,"impliedFormat":1},"496898063c834c666510bdb5bb472bcf08e01ca8eef297da101ad12680c8fc93",{"version":"acfb723d81eda39156251aed414c553294870bf53062429ebfcfba8a68cb4753","impliedFormat":99},{"version":"fa69a90381c2f85889722a911a732a5ee3596dc3acecda8a9aa2fa89b9615d8d","impliedFormat":99},{"version":"b5ce343886d23392be9c8280e9f24a87f1d7d3667f6672c2fe4aa61fa4ece7d4","impliedFormat":99},{"version":"57e9e1b0911874c62d743af24b5d56032759846533641d550b12a45ff404bf07","impliedFormat":99},{"version":"b0857bb28fd5236ace84280f79a25093f919fd0eff13e47cc26ea03de60a7294","impliedFormat":99},{"version":"5e43e0824f10cd8c48e7a8c5c673638488925a12c31f0f9e0957965c290eb14c","impliedFormat":99},{"version":"854cd3a3375ffc4e7a92b2168dd065d7ff2614b43341038a65cca865a44c00c5","impliedFormat":99},{"version":"ef13c73d6157a32933c612d476c1524dd674cf5b9a88571d7d6a0d147544d529","impliedFormat":99},{"version":"3b0a56d056d81a011e484b9c05d5e430711aaecd561a788bad1d0498aad782c7","impliedFormat":99},{"version":"2f863ee9b873a65d9c3338ea7aaddbdb41a9673f062f06983d712bd01c25dc6b","impliedFormat":99},{"version":"67aa128c2bc170b93794f191feffc65a4b33e878db211cfcb7658c4b72f7a1f5","impliedFormat":99},{"version":"31fd7c12f6e27154efb52a916b872509a771880f3b20f2dfd045785c13aa813f","impliedFormat":99},{"version":"b481de4ab5379bd481ca12fc0b255cdc47341629a22c240a89cdb4e209522be2","impliedFormat":99},{"version":"bdd14f07b4eca0b4b5203b85b8dbc4d084c749fa590bee5ea613e1641dcd3b29","impliedFormat":99},{"version":"427fe2004642504828c1476d0af4270e6ad4db6de78c0b5da3e4c5ca95052a99","impliedFormat":1},{"version":"2eeffcee5c1661ddca53353929558037b8cf305ffb86a803512982f99bcab50d","impliedFormat":99},{"version":"9afb4cb864d297e4092a79ee2871b5d3143ea14153f62ef0bb04ede25f432030","affectsGlobalScope":true,"impliedFormat":99},{"version":"4e258d11c899cb9ff36b4b5c53df59cf4a5ccae9a9931529686e77431e0a3518","affectsGlobalScope":true,"impliedFormat":99},{"version":"d153a11543fd884b596587ccd97aebbeed950b26933ee000f94009f1ab142848","affectsGlobalScope":true,"impliedFormat":1},{"version":"378281aa35786c27d5811af7e6bcaa492eebd0c7013d48137c35bbc69a2b9751","affectsGlobalScope":true,"impliedFormat":1},{"version":"3af97acf03cc97de58a3a4bc91f8f616408099bc4233f6d0852e72a8ffb91ac9","affectsGlobalScope":true,"impliedFormat":1},{"version":"1b2dd1cbeb0cc6ae20795958ba5950395ebb2849b7c8326853dd15530c77ab0c","affectsGlobalScope":true,"impliedFormat":1},{"version":"1db0b7dca579049ca4193d034d835f6bfe73096c73663e5ef9a0b5779939f3d0","affectsGlobalScope":true,"impliedFormat":1},{"version":"387a023d363f755eb63450a66c28b14cdd7bc30a104565e2dbf0a8988bb4a56c","affectsGlobalScope":true,"impliedFormat":1},{"version":"9798340ffb0d067d69b1ae5b32faa17ab31b82466a3fc00d8f2f2df0c8554aaa","affectsGlobalScope":true,"impliedFormat":1},{"version":"f26b11d8d8e4b8028f1c7d618b22274c892e4b0ef5b3678a8ccbad85419aef43","affectsGlobalScope":true,"impliedFormat":1},{"version":"cdcf9ea426ad970f96ac930cd176d5c69c6c24eebd9fc580e1572d6c6a88f62c","impliedFormat":1},{"version":"23cd712e2ce083d68afe69224587438e5914b457b8acf87073c22494d706a3d0","impliedFormat":1},{"version":"487b694c3de27ddf4ad107d4007ad304d29effccf9800c8ae23c2093638d906a","impliedFormat":1},{"version":"3a80bc85f38526ca3b08007ee80712e7bb0601df178b23fbf0bf87036fce40ce","impliedFormat":1},{"version":"ccf4552357ce3c159ef75f0f0114e80401702228f1898bdc9402214c9499e8c0","impliedFormat":1},{"version":"c6fd2c5a395f2432786c9cb8deb870b9b0e8ff7e22c029954fabdd692bff6195","impliedFormat":1},{"version":"68834d631c8838c715f225509cfc3927913b9cc7a4870460b5b60c8dbdb99baf","impliedFormat":1},{"version":"2931540c47ee0ff8a62860e61782eb17b155615db61e36986e54645ec67f67c2","impliedFormat":1},{"version":"ccab02f3920fc75c01174c47fcf67882a11daf16baf9e81701d0a94636e94556","impliedFormat":1},{"version":"f6faf5f74e4c4cc309a6c6a6c4da02dbb840be5d3e92905a23dcd7b2b0bd1986","impliedFormat":1},{"version":"ea6bc8de8b59f90a7a3960005fd01988f98fd0784e14bc6922dde2e93305ec7d","impliedFormat":1},{"version":"36107995674b29284a115e21a0618c4c2751b32a8766dd4cb3ba740308b16d59","impliedFormat":1},{"version":"914a0ae30d96d71915fc519ccb4efbf2b62c0ddfb3a3fc6129151076bc01dc60","impliedFormat":1},{"version":"33e981bf6376e939f99bd7f89abec757c64897d33c005036b9a10d9587d80187","impliedFormat":1},{"version":"7fd1b31fd35876b0aa650811c25ec2c97a3c6387e5473eb18004bed86cdd76b6","impliedFormat":1},{"version":"b41767d372275c154c7ea6c9d5449d9a741b8ce080f640155cc88ba1763e35b3","impliedFormat":1},{"version":"3bacf516d686d08682751a3bd2519ea3b8041a164bfb4f1d35728993e70a2426","impliedFormat":1},{"version":"7fb266686238369442bd1719bc0d7edd0199da4fb8540354e1ff7f16669b4323","impliedFormat":1},{"version":"0a60a292b89ca7218b8616f78e5bbd1c96b87e048849469cccb4355e98af959a","impliedFormat":1},{"version":"0b6e25234b4eec6ed96ab138d96eb70b135690d7dd01f3dd8a8ab291c35a683a","impliedFormat":1},{"version":"9666f2f84b985b62400d2e5ab0adae9ff44de9b2a34803c2c5bd3c8325b17dc0","impliedFormat":1},{"version":"40cd35c95e9cf22cfa5bd84e96408b6fcbca55295f4ff822390abb11afbc3dca","impliedFormat":1},{"version":"b1616b8959bf557feb16369c6124a97a0e74ed6f49d1df73bb4b9ddf68acf3f3","impliedFormat":1},{"version":"5b03a034c72146b61573aab280f295b015b9168470f2df05f6080a2122f9b4df","impliedFormat":1},{"version":"40b463c6766ca1b689bfcc46d26b5e295954f32ad43e37ee6953c0a677e4ae2b","impliedFormat":1},{"version":"249b9cab7f5d628b71308c7d9bb0a808b50b091e640ba3ed6e2d0516f4a8d91d","impliedFormat":1},{"version":"80aae6afc67faa5ac0b32b5b8bc8cc9f7fa299cff15cf09cc2e11fd28c6ae29e","impliedFormat":1},{"version":"f473cd2288991ff3221165dcf73cd5d24da30391f87e85b3dd4d0450c787a391","impliedFormat":1},{"version":"499e5b055a5aba1e1998f7311a6c441a369831c70905cc565ceac93c28083d53","impliedFormat":1},{"version":"54c3e2371e3d016469ad959697fd257e5621e16296fa67082c2575d0bf8eced0","impliedFormat":1},{"version":"beb8233b2c220cfa0feea31fbe9218d89fa02faa81ef744be8dce5acb89bb1fd","impliedFormat":1},{"version":"c183b931b68ad184bc8e8372bf663f3d33304772fb482f29fb91b3c391031f3e","impliedFormat":1},{"version":"5d0375ca7310efb77e3ef18d068d53784faf62705e0ad04569597ae0e755c401","impliedFormat":1},{"version":"59af37caec41ecf7b2e76059c9672a49e682c1a2aa6f9d7dc78878f53aa284d6","impliedFormat":1},{"version":"addf417b9eb3f938fddf8d81e96393a165e4be0d4a8b6402292f9c634b1cb00d","impliedFormat":1},{"version":"48cc3ec153b50985fb95153258a710782b25975b10dd4ac8a4f3920632d10790","impliedFormat":1},{"version":"adf27937dba6af9f08a68c5b1d3fce0ca7d4b960c57e6d6c844e7d1a8e53adae","impliedFormat":1},{"version":"e1528ca65ac90f6fa0e4a247eb656b4263c470bb22d9033e466463e13395e599","impliedFormat":1},{"version":"2e85db9e6fd73cfa3d7f28e0ab6b55417ea18931423bd47b409a96e4a169e8e6","impliedFormat":1},{"version":"c46e079fe54c76f95c67fb89081b3e399da2c7d109e7dca8e4b58d83e332e605","impliedFormat":1},{"version":"866078923a56d026e39243b4392e282c1c63159723996fa89243140e1388a98d","impliedFormat":1},{"version":"830171b27c5fdf9bcbe4cf7d428fcf3ae2c67780fb7fbdccdf70d1623d938bc4","affectsGlobalScope":true,"impliedFormat":1},{"version":"1cf059eaf468efcc649f8cf6075d3cb98e9a35a0fe9c44419ec3d2f5428d7123","affectsGlobalScope":true,"impliedFormat":1},{"version":"e7721c4f69f93c91360c26a0a84ee885997d748237ef78ef665b153e622b36c1","affectsGlobalScope":true,"impliedFormat":1},{"version":"d97fb21da858fb18b8ae72c314e9743fd52f73ebe2764e12af1db32fc03f853f","affectsGlobalScope":true,"impliedFormat":1},{"version":"4ea15fd99b2e34cb25fe8346c955000bb70c8b423ae4377a972ef46bfb37f595","impliedFormat":1},{"version":"7cf69dd5502c41644c9e5106210b5da7144800670cbe861f66726fa209e231c4","impliedFormat":1},{"version":"72c1f5e0a28e473026074817561d1bc9647909cf253c8d56c41d1df8d95b85f7","impliedFormat":1},{"version":"f9b4137a0d285bd77dba2e6e895530112264310ae47e07bf311feae428fb8b61","affectsGlobalScope":true,"impliedFormat":1},{"version":"8b21e13ed07d0df176ae31d6b7f01f7b17d66dbeb489c0d31d00de2ca14883da","impliedFormat":1},{"version":"51aecd2df90a3cffea1eb4696b33b2d78594ea2aa2138e6b9471ec4841c6c2ee","impliedFormat":1},{"version":"9d8f9e63e29a3396285620908e7f14d874d066caea747dc4b2c378f0599166b4","affectsGlobalScope":true,"impliedFormat":1},{"version":"5524481e56c48ff486f42926778c0a3cce1cc85dc46683b92b1271865bcf015a","impliedFormat":1},{"version":"f929f0b6b3421a2d34344b0f421f45aeb2c84ad365ebf29d04312023b3accc58","impliedFormat":1},{"version":"db9ada976f9e52e13f7ae8b9a320f4b67b87685938c5879187d8864b2fbe97f3","impliedFormat":1},{"version":"9f39e70a354d0fba29ac3cdf6eca00b7f9e96f64b2b2780c432e8ea27f133743","impliedFormat":1},{"version":"0dace96cc0f7bc6d0ee2044921bdf19fe42d16284dbcc8ae200800d1c9579335","impliedFormat":1},{"version":"a2e2bbde231b65c53c764c12313897ffdfb6c49183dd31823ee2405f2f7b5378","impliedFormat":1},{"version":"ad1cc0ed328f3f708771272021be61ab146b32ecf2b78f3224959ff1e2cd2a5c","impliedFormat":1},{"version":"c64e1888baaa3253ca4405b455e4bf44f76357868a1bd0a52998ade9a092ad78","affectsGlobalScope":true,"impliedFormat":1},{"version":"dc8c6f5322961b56d9906601b20798725df60baeab45ec014fba9f795d5596fd","impliedFormat":1},{"version":"0904660ae854e6d41f6ff25356db1d654436c6305b0f0aa89d1532df0253486e","impliedFormat":1},{"version":"148c73ec11318850f571172ceae3e55ce479d850fe18ec8eae0abd99d9f6c319","impliedFormat":1},{"version":"230bdc111d7578276e4a3bb9d075d85c78c6b68f428c3a9935e2eaa10f4ae1f5","impliedFormat":1},{"version":"e8aabbee5e7b9101b03bb4222607d57f38859b8115a8050a4eb91b4ee43a3a73","impliedFormat":1},{"version":"bbf42f98a5819f4f06e18c8b669a994afe9a17fe520ae3454a195e6eabf7700d","impliedFormat":1},{"version":"c0bb1b65757c72bbf8ddf7eaa532223bacf58041ff16c883e76f45506596e925","impliedFormat":1},{"version":"c8b85f7aed29f8f52b813f800611406b0bfe5cf3224d20a4bdda7c7f73ce368e","affectsGlobalScope":true,"impliedFormat":1},{"version":"145dcf25fd4967c610c53d93d7bc4dce8fbb1b6dd7935362472d4ae49363c7ba","impliedFormat":1},{"version":"ff65b8a8bd380c6d129becc35de02f7c29ad7ce03300331ca91311fb4044d1a9","impliedFormat":1},{"version":"04bf1aa481d1adfb16d93d76e44ce71c51c8ef68039d849926551199489637f6","impliedFormat":1},{"version":"9043daec15206650fa119bad6b8d70136021ea7d52673a71f79a87a42ee38d44","affectsGlobalScope":true,"impliedFormat":1},{"version":"d00e86e2e74089bf416b4c5cc433d88eb2e09dcef5e3c5b79ca04a36d8d8d6f5","affectsGlobalScope":true,"impliedFormat":1},{"version":"a58a15da4c5ba3df60c910a043281256fa52d36a0fcdef9b9100c646282e88dd","impliedFormat":1},{"version":"b36beffbf8acdc3ebc58c8bb4b75574b31a2169869c70fc03f82895b93950a12","impliedFormat":1},{"version":"de263f0089aefbfd73c89562fb7254a7468b1f33b61839aafc3f035d60766cb4","impliedFormat":1},{"version":"77fbe5eecb6fac4b6242bbf6eebfc43e98ce5ccba8fa44e0ef6a95c945ff4d98","impliedFormat":1},{"version":"8c81fd4a110490c43d7c578e8c6f69b3af01717189196899a6a44f93daa57a3a","impliedFormat":1},{"version":"5fb39858b2459864b139950a09adae4f38dad87c25bf572ce414f10e4bd7baab","impliedFormat":1},{"version":"65faec1b4bd63564aeec33eab9cacfaefd84ce2400f03903a71a1841fbce195f","impliedFormat":1},{"version":"b33b74b97952d9bf4fbd2951dcfbb5136656ddb310ce1c84518aaa77dbca9992","impliedFormat":1},{"version":"37ba7b45141a45ce6e80e66f2a96c8a5ab1bcef0fc2d0f56bb58df96ec67e972","impliedFormat":1},{"version":"45650f47bfb376c8a8ed39d4bcda5902ab899a3150029684ee4c10676d9fbaee","impliedFormat":1},{"version":"6b306cd4282bbb54d4a6bb23cfb7a271160983dfc38c67b5a132504cfcc34896","affectsGlobalScope":true,"impliedFormat":1},{"version":"c119835edf36415081dfd9ed15fc0cd37aaa28d232be029ad073f15f3d88c323","impliedFormat":1},{"version":"450172a56b944c2d83f45cc11c9a388ea967cd301a21202aa0a23c34c7506a18","impliedFormat":1},{"version":"9705cd157ffbb91c5cab48bdd2de5a437a372e63f870f8a8472e72ff634d47c1","affectsGlobalScope":true,"impliedFormat":1},{"version":"ae86f30d5d10e4f75ce8dcb6e1bd3a12ecec3d071a21e8f462c5c85c678efb41","impliedFormat":1},{"version":"a1a3cbade20430dcb7f00fa23c2f020e827d5620c0d44213db1665c53231f1fc","impliedFormat":1},{"version":"e03460fe72b259f6d25ad029f085e4bedc3f90477da4401d8fbc1efa9793230e","impliedFormat":1},{"version":"4286a3a6619514fca656089aee160bb6f2e77f4dd53dc5a96b26a0b4fc778055","impliedFormat":1},{"version":"69e0a41d620fb678a899c65e073413b452f4db321b858fe422ad93fd686cd49a","affectsGlobalScope":true,"impliedFormat":1},{"version":"3585d6891e9ea18e07d0755a6d90d71331558ba5dc5561933553209f886db106","affectsGlobalScope":true,"impliedFormat":1},{"version":"86be71cbb0593468644932a6eb96d527cfa600cecfc0b698af5f52e51804451d","impliedFormat":1},{"version":"84dd6b0fd2505135692935599d6606f50a421389e8d4535194bcded307ee5cf2","impliedFormat":1},{"version":"0d5b085f36e6dc55bc6332ecb9c733be3a534958c238fb8d8d18d4a2b6f2a15a","impliedFormat":1},{"version":"db19ea066fdc5f97df3f769e582ae3000380ab7942e266654bdb1a4650d19eaf","affectsGlobalScope":true,"impliedFormat":1},{"version":"2a034894bf28c220a331c7a0229d33564803abe2ac1b9a5feee91b6b9b6e88ea","impliedFormat":1},{"version":"d7e9ab1b0996639047c61c1e62f85c620e4382206b3abb430d9a21fb7bc23c77","impliedFormat":1},{"version":"a7ca8df4f2931bef2aa4118078584d84a0b16539598eaadf7dce9104dfaa381c","impliedFormat":1},{"version":"10073cdcf56982064c5337787cc59b79586131e1b28c106ede5bff362f912b70","impliedFormat":99},{"version":"72950913f4900b680f44d8cab6dd1ea0311698fc1eefb014eb9cdfc37ac4a734","impliedFormat":1},{"version":"151ff381ef9ff8da2da9b9663ebf657eac35c4c9a19183420c05728f31a6761d","impliedFormat":1},{"version":"4e741b9c88e80c9e4cedf07b5a698e8e3a3bd73cf649f664d6dd3f868c05c2f3","affectsGlobalScope":true,"impliedFormat":1},{"version":"a660aa95476042d3fdcc1343cf6bb8fdf24772d31712b1db321c5a4dcc325434","impliedFormat":1},{"version":"36977c14a7f7bfc8c0426ae4343875689949fb699f3f84ecbe5b300ebf9a2c55","impliedFormat":1},{"version":"ff0a83c9a0489a627e264ffcb63f2264b935b20a502afa3a018848139e3d8575","impliedFormat":99},{"version":"161c8e0690c46021506e32fda85956d785b70f309ae97011fd27374c065cac9b","affectsGlobalScope":true,"impliedFormat":1},{"version":"f582b0fcbf1eea9b318ab92fb89ea9ab2ebb84f9b60af89328a91155e1afce72","impliedFormat":1},{"version":"402e5c534fb2b85fa771170595db3ac0dd532112c8fa44fc23f233bc6967488b","impliedFormat":1},{"version":"8885cf05f3e2abf117590bbb951dcf6359e3e5ac462af1c901cfd24c6a6472e2","impliedFormat":1},{"version":"333caa2bfff7f06017f114de738050dd99a765c7eb16571c6d25a38c0d5365dc","impliedFormat":1},{"version":"e61df3640a38d535fd4bc9f4a53aef17c296b58dc4b6394fd576b808dd2fe5e6","impliedFormat":1},{"version":"459920181700cec8cbdf2a5faca127f3f17fd8dd9d9e577ed3f5f3af5d12a2e4","impliedFormat":1},{"version":"4719c209b9c00b579553859407a7e5dcfaa1c472994bd62aa5dd3cc0757eb077","impliedFormat":1},{"version":"7ec359bbc29b69d4063fe7dad0baaf35f1856f914db16b3f4f6e3e1bca4099fa","impliedFormat":1},{"version":"70790a7f0040993ca66ab8a07a059a0f8256e7bb57d968ae945f696cbff4ac7a","impliedFormat":1},{"version":"d1b9a81e99a0050ca7f2d98d7eedc6cda768f0eb9fa90b602e7107433e64c04c","impliedFormat":1},{"version":"a022503e75d6953d0e82c2c564508a5c7f8556fad5d7f971372d2d40479e4034","impliedFormat":1},{"version":"b215c4f0096f108020f666ffcc1f072c81e9f2f95464e894a5d5f34c5ea2a8b1","impliedFormat":1},{"version":"644491cde678bd462bb922c1d0cfab8f17d626b195ccb7f008612dc31f445d2d","impliedFormat":1},{"version":"dfe54dab1fa4961a6bcfba68c4ca955f8b5bbeb5f2ab3c915aa7adaa2eabc03a","impliedFormat":1},{"version":"1251d53755b03cde02466064260bb88fd83c30006a46395b7d9167340bc59b73","impliedFormat":1},{"version":"47865c5e695a382a916b1eedda1b6523145426e48a2eae4647e96b3b5e52024f","impliedFormat":1},{"version":"4cdf27e29feae6c7826cdd5c91751cc35559125e8304f9e7aed8faef97dcf572","impliedFormat":1},{"version":"331b8f71bfae1df25d564f5ea9ee65a0d847c4a94baa45925b6f38c55c7039bf","impliedFormat":1},{"version":"2a771d907aebf9391ac1f50e4ad37952943515eeea0dcc7e78aa08f508294668","impliedFormat":1},{"version":"0146fd6262c3fd3da51cb0254bb6b9a4e42931eb2f56329edd4c199cb9aaf804","impliedFormat":1},{"version":"183f480885db5caa5a8acb833c2be04f98056bdcc5fb29e969ff86e07efe57ab","impliedFormat":99},{"version":"960bd764c62ac43edc24eaa2af958a4b4f1fa5d27df5237e176d0143b36a39c6","affectsGlobalScope":true,"impliedFormat":1},{"version":"3fd8a5aefd8c3feb3936ca66f5aa89dff7bf6e6537b4158dbd0f6e0d65ed3b9e","impliedFormat":1},{"version":"a18642ddf216f162052a16cba0944892c4c4c977d3306a87cb673d46abbb0cbf","impliedFormat":1},{"version":"509f8efdfc5f9f6b52284170e8d7413552f02d79518d1db691ee15acc0088676","impliedFormat":1},{"version":"4ec16d7a4e366c06a4573d299e15fe6207fc080f41beac5da06f4af33ea9761e","impliedFormat":1},{"version":"59f8dc89b9e724a6a667f52cdf4b90b6816ae6c9842ce176d38fcc973669009e","affectsGlobalScope":true,"impliedFormat":1},{"version":"e4af494f7a14b226bbe732e9c130d8811f8c7025911d7c58dd97121a85519715","impliedFormat":1},{"version":"47416e41b1af81e53e8c3cc5bf909d47ff632a7b6eddfe7ff43d187b4dcca047","impliedFormat":99},{"version":"324ac98294dab54fbd580c7d0e707d94506d7b2c3d5efe981a8495f02cf9ad96","impliedFormat":99},{"version":"9ec72eb493ff209b470467e24264116b6a8616484bca438091433a545dfba17e","impliedFormat":99},{"version":"c35b8117804c639c53c87f2c23e0c786df61d552e513bd5179f5b88e29964838","impliedFormat":99},{"version":"ac3d263474022e9a14c43f588f485d549641d839b159ecc971978b90f34bdf6b","impliedFormat":99},{"version":"67acaedb46832d66c15f1b09fb7b6a0b7f41bdbf8eaa586ec70459b3e8896eb9","impliedFormat":99},{"version":"c609331c6ed4ad4af54e101088c6a4dcb48f8db7b0b97e44a6efeb130f4331bd","impliedFormat":99},{"version":"bcbd3becd08b4515225880abea0dbfbbf0d1181ce3af8f18f72f61edbe4febfb","impliedFormat":99},{"version":"4535ab977ee871e956eb7bebe2db5de79f5d5ec7dfbbf1d35e08f4a2d6630dac","impliedFormat":99},{"version":"b79b5ed99f26ffb2f8ae4bdcc4b34a9542197dc3fa96cfb425c2a81e618cff28","impliedFormat":99},{"version":"213a00d511892898e9dad3c98efe3b1de230f171b9e91496faca3e40e27ef6a7","impliedFormat":99},{"version":"62486ec77ac020b82d5a65a270096bb7f2a1fd0627a89f29c5a5d3cbd6bd1f59","impliedFormat":99},{"version":"c637a793905f02d354b640fae41a6ae79395ed0d77fbb87c36d9664ecbd95ac1","impliedFormat":99},{"version":"437b7613a30a2fcde463f7b707c6d5567a8823fbc51de50b8641bf5b1d126fad","impliedFormat":99},{"version":"63ea959e28c110923f495576e614fb8b36c09b6828b467b2c7cd7f03b03ccf9f","impliedFormat":99},{"version":"1601a95dbb33059fc3d12638ed2a9aecff899e339c5c0f3a0b28768866d385b4","impliedFormat":99},{"version":"a8dd232837b1d83f76a47a5193c1afd9e17b9bf352cb84345f86f7759ee346d0","impliedFormat":99},{"version":"be5fc0dd37f64420b0423059370b8319521e0b58060d7b07b8f62fe1c145b02e","impliedFormat":99},{"version":"45f770f2ae71acc1cacfac137f50911e1a004ccba52b2b55c4432c0d4bd97814","impliedFormat":99},{"version":"8124828a11be7db984fcdab052fd4ff756b18edcfa8d71118b55388176210923","impliedFormat":99},{"version":"a5ae67a67f786ffe92d34b55467a40fb50fb0093e92388cadce6168fa42690fd","impliedFormat":99},{"version":"69bf2422313487956e4dacf049f30cb91b34968912058d244cb19e4baa24da97","impliedFormat":99},{"version":"6987dfb4b0c4e02112cc4e548e7a77b3d9ddfeffa8c8a2db13ceac361a4567d9","impliedFormat":99},{"version":"b62006bbc815fe8190c7aee262aad6bff993e3f9ade70d7057dfceab6de79d2f","impliedFormat":99},{"version":"a20c4976da01d1c823b165275cef98a896d4758388c6409bc4ce24f0a5b49900","impliedFormat":99},{"version":"dffffa77f7716aa110e4253c6cd73a067e4729d95c97a538dbb20e58f0eb3e1d","impliedFormat":99},{"version":"0daddd6f389da2b55770e95c9ef8831bf2520aab44fb941bae38bb7ddfe1d6b6","impliedFormat":99},{"version":"7bbff6783e96c691a41a7cf12dd5486b8166a01b0c57d071dbcfca55c9525ec4","impliedFormat":99},"b62d8595f65f5e0d150b526f838a33f2d24465aa23d1f95bfd69b31e9275a0ac",{"version":"170d4db14678c68178ee8a3d5a990d5afb759ecb6ec44dbd885c50f6da6204f6","affectsGlobalScope":true,"impliedFormat":1},{"version":"ac51dd7d31333793807a6abaa5ae168512b6131bd41d9c5b98477fc3b7800f9f","impliedFormat":1},{"version":"cf8db38686dfd74567ea692266fe44fbb32fa0e25fc0888ad6fc40e65873607e","impliedFormat":1},"d7bb11ff88c9d33c458e7badf849cb336aee1e3fa7f6bd04cb37095b75c39d9b","4d56d2058b25168b70b8e4fd5f67dc303d24fd9bab8c65af156bb24311784208","0e9297d99b34620b3d184b4b3cac2df0db4cdf5e7f76f089e7e128d5bcc3969f","acfb66f07b80d3f53a12fb2da1f81931af5156e4a5cad3af25c047ce6b8f9ba0","17c78393e169ce609d8d99fdd63c1901fd965dc791ae243602b9cb6eeb94a431","750a8d4c0e7bfe5072c82558ce606ab7dbdef679de217c0850f198a54639cc0e","c0ea6e78b1089bebe0a2fe3bfbcfe2a5a720fcd3e2379935b30bcb7960a8174f","5e9642405fd159ea235b21bf558f107ccb0a88c5f17459b2b69edce310b81957","d3b141db993170bb6e98d616f341b359dc8390a55a67551f111a8a5c15acc5a8","416bbf0277ae61afbefb9c64a0406f559375c2ef3d017a26c62f5822fdda43f7","40a9a76ad9a9dadc743473e58a2e404948e1f64c4813dd7ea17857cd0dd1a216","e9e9000decf7ad2e0653b02b2b765dce8bbe0e57e761aebb690af7083acd0bd7","47f9696c7e5836389c5a5c1a5b80b0a3bac108082c040c63616ae8718a271cd6","54671bea3ea513ce0d88d2bfaa7f709d9a11c19a9be182939ac42714d24af030","60c802fddd66dd6ef9754ae5bff1b21ac076f87df5ea3a8b59508d2bb8c4fe97","2be524ba87e511262ddc38b4868045706c5f94b7cfacd805b854a15ebb053ca1",{"version":"a534e61c2f06a147d97aebad720db97dffd8066b7142212e46bcbcdcb640b81a","impliedFormat":99},{"version":"ddf569d04470a4d629090d43a16735185001f3fcf0ae036ead99f2ceab62be48","impliedFormat":99},{"version":"b413fbc6658fe2774f8bf9a15cf4c53e586fc38a2d5256b3b9647da242c14389","impliedFormat":99},{"version":"c30a41267fc04c6518b17e55dcb2b810f267af4314b0b6d7df1c33a76ce1b330","impliedFormat":1},{"version":"72422d0bac4076912385d0c10911b82e4694fc106e2d70added091f88f0824ba","impliedFormat":1},{"version":"da251b82c25bee1d93f9fd80c5a61d945da4f708ca21285541d7aff83ecb8200","impliedFormat":1},{"version":"64db14db2bf37ac089766fdb3c7e1160fabc10e9929bc2deeede7237e4419fc8","impliedFormat":1},{"version":"98b94085c9f78eba36d3d2314affe973e8994f99864b8708122750788825c771","impliedFormat":1},{"version":"53c448183c7177c83d3eb0b40824cf8952721a6584cf22052adc24f778986732","impliedFormat":99},{"version":"bc03c3c352f689e38c0ddd50c39b1e65d59273991bfc8858a9e3c0ebb79c023b","impliedFormat":1},{"version":"ae77d81a5541a8abb938a0efedf9ac4bea36fb3a24cc28cfa11c598863aba571","impliedFormat":1},{"version":"3cfb7c0c642b19fb75132154040bb7cd840f0002f9955b14154e69611b9b3f81","impliedFormat":1},{"version":"8387ec1601cf6b8948672537cf8d430431ba0d87b1f9537b4597c1ab8d3ade5b","impliedFormat":1},{"version":"d16f1c460b1ca9158e030fdf3641e1de11135e0c7169d3e8cf17cc4cc35d5e64","impliedFormat":1},{"version":"a934063af84f8117b8ce51851c1af2b76efe960aa4c7b48d0343a1b15c01aedf","impliedFormat":1},{"version":"e3c5ad476eb2fca8505aee5bdfdf9bf11760df5d0f9545db23f12a5c4d72a718","impliedFormat":1},{"version":"462bccdf75fcafc1ae8c30400c9425e1a4681db5d605d1a0edb4f990a54d8094","impliedFormat":1},{"version":"5923d8facbac6ecf7c84739a5c701a57af94a6f6648d6229a6c768cf28f0f8cb","impliedFormat":1},{"version":"d0570ce419fb38287e7b39c910b468becb5b2278cf33b1000a3d3e82a46ecae2","impliedFormat":1},{"version":"3aca7f4260dad9dcc0a0333654cb3cde6664d34a553ec06c953bce11151764d7","impliedFormat":1},{"version":"a0a6f0095f25f08a7129bc4d7cb8438039ec422dc341218d274e1e5131115988","impliedFormat":1},{"version":"b58f396fe4cfe5a0e4d594996bc8c1bfe25496fbc66cf169d41ac3c139418c77","impliedFormat":1},{"version":"45785e608b3d380c79e21957a6d1467e1206ac0281644e43e8ed6498808ace72","impliedFormat":1},{"version":"bece27602416508ba946868ad34d09997911016dbd6893fb884633017f74e2c5","impliedFormat":1},{"version":"2a90177ebaef25de89351de964c2c601ab54d6e3a157cba60d9cd3eaf5a5ee1a","impliedFormat":1},{"version":"82200e963d3c767976a5a9f41ecf8c65eca14a6b33dcbe00214fcbe959698c46","impliedFormat":1},{"version":"b4966c503c08bbd9e834037a8ab60e5f53c5fd1092e8873c4a1c344806acdab2","impliedFormat":1},{"version":"3d3208d0f061e4836dd5f144425781c172987c430f7eaee483fadaa3c5780f9f","impliedFormat":1},{"version":"34a8a5b4c21e7a6d07d3b6bce72371da300ec1aed58961067e13f1f4dc849712","impliedFormat":1},{"version":"c9a77ed9a04fea1f0ff41787598704ec316d1ce2c727306019acbeaf3764cd73","impliedFormat":1},{"version":"59bf5a79d7de85f8743543977bafb4b478b60bf6ee7d1aa5ac3b4332968659f3","impliedFormat":1},{"version":"a3628f430f8d502a5c026a0c932a5c41e6361d8e0248287872cd8999bc534399","impliedFormat":1},{"version":"0ee3d04609df9b9ecb513559c7b966da27323f2e5bcb7b5a82a883d6d2305b84","impliedFormat":99},{"version":"14d2c82e20688a04591f3f936c0a3d976c702af336dac78ff06f4a5a238f3d69","impliedFormat":1},{"version":"94c738e056bbf3574d4bb6bed57ec33d55596dc7f1a1ce83b87aae454bfd009b","impliedFormat":1},{"version":"2b6c6039f4d2f656904d66f82231488f4852f861d27147884895097f74e3e812","impliedFormat":1},{"version":"1f84dff7964146377785aa684028ca62290e0639ac41fd0c5f391a5f5d414adc","impliedFormat":1},{"version":"4edf6371c3fd1f12c91cab0b0c42340ba0205e1a24f95757551ba46b6ab0e8a4","impliedFormat":1},{"version":"54d2709d08dc65b1cb180673e8f667f965a41b35be47e9aade190e931f3e29e8","impliedFormat":1},{"version":"727ba8cceee36c0b20288e608971ba2c438d3f99fb75f99614d659020f7c932f","impliedFormat":1},{"version":"9fbdf9aaeb8cc18ec1d39f2eaf16e19919fa2ede071cd0948d5f7fd8ed0613b1","impliedFormat":1},{"version":"f1a206ed186f24b2f0fd520f59111a1b035f02e0e200717b7301e84ad2592628","impliedFormat":1},{"version":"c0e42e780d502d530ce67e30d09a3b81c5d37d500c1f7ef04f4bd806f648b96a","impliedFormat":1},{"version":"447b6a80636a59c918ed18af1019de1efa94109a086e8fd8f3d20eb9b9a6937b","impliedFormat":99},{"version":"30dd510398f44e20640bafabbaa61738e65388ad63d8df15409b361dbf053a2e","impliedFormat":99},{"version":"05c9c065eadecdce0ee370455e3c36674bfb08673f1a268a398002a0d2d801b7","impliedFormat":1},{"version":"596c5e157764a7859c6cd9c34313b24820dbea63717c9deec9cd789964ffcd7f","impliedFormat":1},{"version":"0eae63800777384563d5727e572982c220d47acf736dcdb569a2749a32378f19","impliedFormat":1},{"version":"9bf41a89bd0bbd4f8a23a7925d04f99267cb84a5a5b239185f3320edea329b9c","impliedFormat":1},{"version":"ba69d5ef968a0350e3216f4dfd39f846ed9a500f360acbe473e4f88278b3c746","impliedFormat":1},{"version":"ca2d1749803143fc680e7f89c0ee9e59fdbf1b4139666016fb152121e3e2c53c","impliedFormat":1},{"version":"5a057f30b519ba4d3b0bb52790ddbcb53fc27a050773d65e2a559d8d5df80080","impliedFormat":1},{"version":"ecfb7796212d2f1d7fc48d7d42dd6ec4c270f3080572d19f24b2638ae0defac3","impliedFormat":1},{"version":"717c42dfb8774242bcf05836fbc643bd7ccbf21908e5b8fe7920c950617ffc19","impliedFormat":1},{"version":"8ca5cb592a7f95466981253718b6eb21e850cfa1c7001381f88d3547fdd9e67e","impliedFormat":1},{"version":"18eaffdf9c5aaf96d3ba7e3d9d788193a119be6792c1f32da4ac3595687a3a59","impliedFormat":1},{"version":"3ee9a230c94e4a17ccdfabdaf6a9a9e749308d42fd9c3e884605560109b2cdab","impliedFormat":1},{"version":"4ae9b50481136302de9c77668621ed3a0b34998f3e091ca3701426f4fe369c8a","impliedFormat":1},{"version":"9ba9ecc57d2f52b3ed3ac229636ee9a36e92e18b80eeae11ffb546c12e56d5e5","impliedFormat":1},{"version":"17644c49b3a6c1907a292b491472a609f342d069c660043b96e398574e34b6a7","impliedFormat":1},{"version":"d182d419bb30a1408784ed95fbabd973dde7517641e04525f0ce761df5d193a5","impliedFormat":1},{"version":"dff4434fb1c7fb4fc8fb742d8cf6d9adbc6a5cf0eaef1a9a6068ca5c301da22c","impliedFormat":99},"1b898345b9ec50c72fb18cdccd7e3d4d1322dc83af84312357158ed3e9034585","0fe90d66bd0674456de14d98d92036f8de4c726546e665a55089b55e545c7b0a","fd18435c83edd66b45aff49b50f44717263062c12da070341f534018a9014f5f","436d1692bb751b5774d1bfac9aef04281b583529f1231390c03324f511d2d61c","7a5884c5bf55d0debe7a400df61afe898842641bf1e431cf1ce4e48a9e0c34be","b9a79c0c1a23daa763250e41f95c917b2e193d5ae5c37dcafeebad60b6bce9d0","b601e3165f2be49250a497114cb7ef8e57deb6da201ce38696d344331da8c12f","14b09f56a1d2d74efdc8471b3a028a527b924af7da641e187fb41ba43d0f58dc","a948c229ae2fa14b02c8354cc79732247701a54bcf7765afad9b63e30cc9aa52","a853f39ede085c37dc2f09dafa068f49fc87a3465b8a1a600a437994c4df1ab5","534cec6b2869f8b37738b36451d5827ceeae4a7a0896835d2f6f493dd33a2e40",{"version":"1fd7bfea6c425ce8ec33a7d92edae59f10bc09f86ae01658447509d09ca663f1","impliedFormat":1},"7da0f75578775d1874ed8ac871d791b05c6a65303f32ce474fa701711daa0854","82290076dd107be3a32e04b58a2c91a1d164da3312388f59a439ded70ed64d79","21aff8ce6e1827989dc518e52276ec774c18626cc62a0ded4fd3bf1715619c0f","642bb32939820a6dcb09eea929eecbd55a2cdcf3e1d62aeb22ab447dcd541a69","d5b12ea13a423459b83c664f575572e9a7e2dd4daadcf635230add554b456578","4805083847f97cb5ada47f8c6e553cd9d442288f293096a0dfa2e566e1415352","c6e4877afea92eb410969aebe880def60894c104c6a50028747f16eff83788ee","0777af0a1b3991843737b6c95600ea99eb50ce1f682004056f421d97e0da6de4","e9d39992c899240565d1e5910031a9c27201cd6f70765718c9eefbc8c660afb1","a3a7a3411876e7a3d9843ecbac9fa15c0078fff04752c11a2af7cf9065bbabf7","05b54a19e370b5e9450825766d7f752a22819e67c4a6eb5ed62eb986d67d536f","210aef64a0a6e2faf63cb17aece17f8a8251e2bec36416231cf0e15651cad0e3","8fec99eeee25f683334525611f2f20085af572cf73a2c61f033e8bd001df868e","c3ec04fb04260a54c9e3e12d26e8915b14015ddd63cf9711ebe281155875bf4f","bd25a59ce47516669002de94a19b77aecd07f838653da0c68396b085f6411362","8719eebacbfe1714953cd1f8ed59e770e8d82ffed295f93ee7c074a964d42316","3465d3996d09bba158ad4b677abca052d1c0b18dc49df3b7fc93476149c33938","3234f3a902050cf03e60ae90509670a4cd0ba5dd61244c77e4805ffff3a1442f","509b1748aca0e1d1eef02bbb41f821cf1ec9c768269021ff1a5466a913a5447d","86db42e9fb2d06d67a281bab37e824686418a544783f192c8eedede772156817","e5ad0ca76ded2723e5f98a6fea14af76ef6b75faa7e07f1e31d7aea9f7b997ad","2ea60324ff360012ce11b07283475ad9d5dda47b867148506f4f71fae5450ffe","6251dc7417a0250601cc57f6a85be944ff105e909409acae09c1e665b1bff78a","eee4e6409b32ccf39ee2d8ab993413d56118ef2eab1099de555beacbe3919ede","de16a5f5ffabe9e6942e3afd1a23caf84527dc1c7272306d5abf85995e875aff","cc5cfa6206d35bbe1bcb8b3db8e02b1c5e34878195aac721db59decb51cd38ed","b2063f63a379a681ff476611d007ef71270ba7841e31f13b6fc3ffce6accd183","d032447a951bb3e236fcfcea83b2fcf73d12ff9df229f700ac0544e87e60cd2d","43555efc73fa0633fdb23379d6a9af448a881e6563da67b5a78a6e8ec7c1b418","f13b7be1eddafde3feccaffe66f115bf67bf9ce3e32b65cabf02532586893082","b11c2f5ea8b0e8f45b96d3820844785bd4df0f1be4b373773bd852219acb7334","799f09779a8261ad8326c40ae0a9d80b91ca590639ee80648d71a8e8c9006255","c6a1050def3e61a8492394a7c1db31c29c2f438efe2a318ecdff28588ecc534f",{"version":"37c7961117708394f64361ade31a41f96cef7f2a6606300821c72438dd4abda3","impliedFormat":1},{"version":"9db04d354c4df77dc82ed645c1698d272284f4ad596fc71544e907f2e106b19c","affectsGlobalScope":true,"impliedFormat":1},{"version":"42c169fb8c2d42f4f668c624a9a11e719d5d07dacbebb63cbcf7ef365b0a75b3","impliedFormat":1},{"version":"64d4c41b11c1c817ddd39c4febdba05b560e4bdc4aef196ca48799b732ec8241","impliedFormat":1},{"version":"b9d31776c215f35fd76d4426cc7046f8c1ade1f2f5a1b59158363f5004790b03","impliedFormat":1},"76a890865e2aeeb8f6facaa4f504db75f08b238a2143b8c0c6fc3609af9d42e7","7ab095e6afc69e90039f04bffc3137e2e62cf2261ad9d376811e3c72b91beb3a","bc3d3ad7b5a9d69a7e2f7f3ee2a82de8e10c91b083f55141d2f930b629558269",{"version":"2cef84bf00cbdb452fdc5d8ecfe7b8c0aa3fa788bdc4ad8961e2e636530dbb60","impliedFormat":99},{"version":"24104650185414f379d5cc35c0e2c19f06684a73de5b472bae79e0d855771ecf","impliedFormat":99},{"version":"799003c0ab928582fca04977f47b8d85b43a8de610f4eef0ad2d069fbb9f9399","impliedFormat":99},{"version":"b13dd41c344a23e085f81b2f5cd96792e6b35ae814f32b25e39d9841844ad240","impliedFormat":99},{"version":"17d8b4e6416e48b6e23b73d05fd2fde407e2af8fddbe9da2a98ede14949c3489","impliedFormat":99},{"version":"6d17b2b41f874ab4369b8e04bdbe660163ea5c8239785c850f767370604959e3","impliedFormat":99},{"version":"04b4c044c8fe6af77b6c196a16c41e0f7d76b285d036d79dcaa6d92e24b4982b","impliedFormat":99},{"version":"30bdeead5293c1ddfaea4097d3e9dd5a6b0bc59a1e07ff4714ea1bbe7c5b2318","impliedFormat":99},{"version":"e7df226dcc1b0ce76b32f160556f3d1550124c894aae2d5f73cefaaf28df7779","impliedFormat":99},{"version":"f2b7eef5c46c61e6e72fba9afd7cc612a08c0c48ed44c3c5518559d8508146a2","impliedFormat":99},{"version":"00f0ba57e829398d10168b7db1e16217f87933e61bd8612b53a894bd7d6371da","impliedFormat":99},{"version":"126b20947d9fa74a88bb4e9281462bda05e529f90e22d08ee9f116a224291e84","impliedFormat":99},{"version":"40d9e43acee39702745eb5c641993978ac40f227475eacc99a83ba893ad995db","impliedFormat":99},{"version":"8a66b69b21c8de9cb88b4b6d12f655d5b7636e692a014c5aa1bd81745c8c51d5","impliedFormat":99},{"version":"ebbb846bdd5a78fdacff59ae04cea7a097912aeb1a2b34f8d88f4ebb84643069","impliedFormat":99},{"version":"7321adb29ffd637acb33ee67ea035f1a97d0aa0b14173291cc2fd58e93296e04","impliedFormat":99},{"version":"320816f1a4211188f07a782bdb6c1a44555b3e716ce13018f528ad7387108d5f","impliedFormat":99},{"version":"b2cc8a474b7657f4a03c67baf6bff75e26635fd4b5850675e8cad524a09ddd0c","impliedFormat":99},{"version":"0d081e9dc251063cc69611041c17d25847e8bdbe18164baaa89b7f1f1633c0ab","impliedFormat":99},{"version":"a64c25d8f4ec16339db49867ea2324e77060782993432a875d6e5e8608b0de1e","impliedFormat":99},{"version":"0739310b6b777f3e2baaf908c0fbc622c71160e6310eb93e0d820d86a52e2e23","impliedFormat":99},{"version":"37b32e4eadd8cd3c263e7ac1681c58b2ac54f3f77bb34c5e4326cc78516d55a9","impliedFormat":99},{"version":"9b7a8974e028c4ed6f7f9abb969e3eb224c069fd7f226e26fcc3a5b0e2a1eba8","impliedFormat":99},{"version":"e8100b569926a5592146ed68a0418109d625a045a94ed878a8c5152b1379237c","impliedFormat":99},{"version":"594201c616c318b7f3149a912abd8d6bdf338d765b7bcbde86bca2e66b144606","impliedFormat":99},{"version":"03e380975e047c5c6ded532cf8589e6cc85abb7be3629e1e4b0c9e703f2fd36f","impliedFormat":99},{"version":"fae14b53b7f52a8eb3274c67c11f261a58530969885599efe3df0277b48909e1","impliedFormat":99},{"version":"c41206757c428186f2e0d1fd373915c823504c249336bdc9a9c9bbdf9da95fef","impliedFormat":99},{"version":"e961f853b7b0111c42b763a6aa46fc70d06a697db3d8ed69b38f7ba0ae42a62b","impliedFormat":99},{"version":"3db90f79e36bcb60b3f8de1bc60321026800979c150e5615047d598c787a64b7","impliedFormat":99},{"version":"639b6fb3afbb8f6067c1564af2bd284c3e883f0f1556d59bd5eb87cdbbdd8486","impliedFormat":99},{"version":"49795f5478cb607fd5965aa337135a8e7fd1c58bc40c0b6db726adf186dd403f","impliedFormat":99},{"version":"7d8890e6e2e4e215959e71d5b5bd49482cf7a23be68d48ea446601a4c99bd511","impliedFormat":99},{"version":"d56f72c4bb518de5702b8b6ae3d3c3045c99e0fd48b3d3b54c653693a8378017","impliedFormat":99},{"version":"4c9ac40163e4265b5750510d6d2933fb7b39023eed69f7b7c68b540ad960826e","impliedFormat":99},{"version":"8dfab17cf48e7be6e023c438a9cdf6d15a9b4d2fa976c26e223ba40c53eb8da8","impliedFormat":99},{"version":"38bdf7ccacfd8e418de3a7b1e3cecc29b5625f90abc2fa4ac7843a290f3bf555","impliedFormat":99},{"version":"9819e46a914735211fbc04b8dc6ba65152c62e3a329ca0601a46ba6e05b2c897","impliedFormat":99},{"version":"50f0dc9a42931fb5d65cdd64ba0f7b378aedd36e0cfca988aa4109aad5e714cb","impliedFormat":99},{"version":"894f23066f9fafccc6e2dd006ed5bd85f3b913de90f17cf1fe15a2eb677fd603","impliedFormat":99},{"version":"abdf39173867e6c2d6045f120a316de451bbb6351a6929546b8470ddf2e4b3b9","impliedFormat":99},{"version":"aa2cb4053f948fbd606228195bbe44d78733861b6f7204558bbee603202ee440","impliedFormat":99},{"version":"6911b41bfe9942ac59c2da1bbcbe5c3c1f4e510bf65cae89ed00f434cc588860","impliedFormat":99},{"version":"7b81bc4d4e2c764e85d869a8dd9fe3652b34b45c065482ac94ffaacc642b2507","impliedFormat":99},{"version":"895df4edb46ccdcbce2ec982f5eed292cf7ea3f7168f1efea738ee346feab273","impliedFormat":99},{"version":"8692bb1a4799eda7b2e3288a6646519d4cebb9a0bddf800085fc1bd8076997a0","impliedFormat":99},{"version":"239c9e98547fe99711b01a0293f8a1a776fc10330094aa261f3970aaba957c82","impliedFormat":99},{"version":"34833ec50360a32efdc12780ae624e9a710dd1fd7013b58c540abf856b54285a","impliedFormat":99},{"version":"647538e4007dcc351a8882067310a0835b5bb8559d1cfa5f378e929bceb2e64d","impliedFormat":99},{"version":"992d6b1abcc9b6092e5a574d51d441238566b6461ade5de53cb9718e4f27da46","impliedFormat":99},{"version":"938702305649bf1050bd79f3803cf5cc2904596fc1edd4e3b91033184eae5c54","impliedFormat":99},{"version":"1e931d3c367d4b96fe043e792196d9c2cf74f672ff9c0b894be54e000280a79d","impliedFormat":99},{"version":"05bec322ea9f6eb9efcd6458bb47087e55bd688afdd232b78379eb5d526816ed","impliedFormat":99},{"version":"4c449a874c2d2e5e5bc508e6aa98f3140218e78c585597a21a508a647acd780a","impliedFormat":99},{"version":"dae15e326140a633d7693e92b1af63274f7295ea94fb7c322d5cbe3f5e48be88","impliedFormat":99},{"version":"c2b0a869713bca307e58d81d1d1f4b99ebfc7ec8b8f17e80dde40739aa8a2bc6","impliedFormat":99},{"version":"6e4b4ff6c7c54fa9c6022e88f2f3e675eac3c6923143eb8b9139150f09074049","impliedFormat":99},{"version":"69559172a9a97bbe34a32bff8c24ef1d8c8063feb5f16a6d3407833b7ee504cf","impliedFormat":99},{"version":"86b94a2a3edcb78d9bfcdb3b382547d47cb017e71abe770c9ee8721e9c84857f","impliedFormat":99},{"version":"e3fafafda82853c45c0afc075fea1eaf0df373a06daf6e6c7f382f9f61b2deb3","impliedFormat":99},{"version":"a4ba4b31de9e9140bc49c0addddbfaf96b943a7956a46d45f894822e12bf5560","impliedFormat":99},{"version":"d8a7926fc75f2ed887f17bae732ee31a4064b8a95a406c87e430c58578ee1f67","impliedFormat":99},{"version":"9886ffbb134b0a0059fd82219eba2a75f8af341d98bc6331b6ef8a921e10ec68","impliedFormat":99},{"version":"c2ead057b70d0ae7b87a771461a6222ebdb187ba6f300c974768b0ae5966d10e","impliedFormat":99},{"version":"46687d985aed8485ab2c71085f82fafb11e69e82e8552cf5d3849c00e64a00a5","impliedFormat":99},{"version":"999ca66d4b5e2790b656e0a7ce42267737577fc7a52b891e97644ec418eff7ec","impliedFormat":99},{"version":"ec948ee7e92d0888f92d4a490fdd0afb27fbf6d7aabebe2347a3e8ac82c36db9","impliedFormat":99},{"version":"03ef2386c683707ce741a1c30cb126e8c51a908aa0acc01c3471fafb9baaacd5","impliedFormat":99},{"version":"66a372e03c41d2d5e920df5282dadcec2acae4c629cb51cab850825d2a144cea","impliedFormat":99},{"version":"ddf9b157bd4c06c2e4646c9f034f36267a0fbd028bd4738214709de7ea7c548b","impliedFormat":99},{"version":"3e795aac9be23d4ad9781c00b153e7603be580602e40e5228e2dafe8a8e3aba1","impliedFormat":99},{"version":"98c461ec5953dfb1b5d5bca5fee0833c8a932383b9e651ca6548e55f1e2c71c3","impliedFormat":99},{"version":"5c42107b46cb1d36b6f1dee268df125e930b81f9b47b5fa0b7a5f2a42d556c10","impliedFormat":99},{"version":"7e32f1251d1e986e9dd98b6ff25f62c06445301b94aeebdf1f4296dbd2b8652f","impliedFormat":99},{"version":"2f7e328dda700dcb2b72db0f58c652ae926913de27391bd11505fc5e9aae6c33","impliedFormat":99},{"version":"3de7190e4d37da0c316db53a8a60096dbcd06d1a50677ccf11d182fa26882080","impliedFormat":99},{"version":"a9d6f87e59b32b02c861aade3f4477d7277c30d43939462b93f48644fa548c58","impliedFormat":99},{"version":"2bce8fd2d16a9432110bbe0ba1e663fd02f7d8b8968cd10178ea7bc306c4a5df","impliedFormat":99},{"version":"798bedbf45a8f1e55594e6879cd46023e8767757ecce1d3feaa78d16ad728703","impliedFormat":99},{"version":"62723d5ac66f7ed6885a3931dd5cfa017797e73000d590492988a944832e8bc2","impliedFormat":99},{"version":"03db8e7df7514bf17fc729c87fff56ca99567b9aa50821f544587a666537c233","impliedFormat":99},{"version":"9b1f311ba4409968b68bf20b5d892dbd3c5b1d65c673d5841c7dbde351bc0d0b","impliedFormat":99},{"version":"2d1e8b5431502739fe335ceec0aaded030b0f918e758a5d76f61effa0965b189","impliedFormat":99},{"version":"e725839b8f884dab141b42e9d7ff5659212f6e1d7b4054caa23bc719a4629071","impliedFormat":99},{"version":"4fa38a0b8ae02507f966675d0a7d230ed67c92ab8b5736d99a16c5fbe2b42036","impliedFormat":99},{"version":"50ec1e8c23bad160ddedf8debeebc722becbddda127b8fdce06c23eacd3fe689","impliedFormat":99},{"version":"9a0aea3a113064fd607f41375ade308c035911d3c8af5ae9db89593b5ca9f1f9","impliedFormat":99},{"version":"8d643903b58a0bf739ce4e6a8b0e5fb3fbdfaacbae50581b90803934b27d5b89","impliedFormat":99},{"version":"19de2915ccebc0a1482c2337b34cb178d446def2493bf775c4018a4ea355adb8","impliedFormat":99},{"version":"9be8fc03c8b5392cd17d40fd61063d73f08d0ee3457ecf075dcb3768ae1427bd","impliedFormat":99},{"version":"a2d89a8dc5a993514ca79585039eea083a56822b1d9b9d9d85b14232e4782cbe","impliedFormat":99},{"version":"f526f20cae73f17e8f38905de4c3765287575c9c4d9ecacee41cfda8c887da5b","impliedFormat":99},{"version":"d9ec0978b7023612b9b83a71fee8972e290d02f8ff894e95cdd732cd0213b070","impliedFormat":99},{"version":"7ab10c473a058ec8ac4790b05cae6f3a86c56be9b0c0a897771d428a2a48a9f9","impliedFormat":99},{"version":"451d7a93f8249d2e1453b495b13805e58f47784ef2131061821b0e456a9fd0e1","impliedFormat":99},{"version":"21c56fe515d227ed4943f275a8b242d884046001722a4ba81f342a08dbe74ae2","impliedFormat":99},{"version":"d8311f0c39381aa1825081c921efde36e618c5cf46258c351633342a11601208","impliedFormat":99},{"version":"6b50c3bcc92dc417047740810596fcb2df2502aa3f280c9e7827e87896da168a","impliedFormat":99},{"version":"18a6b318d1e7b31e5749a52be0cf9bbce1b275f63190ef32e2c79db0579328ca","impliedFormat":99},{"version":"6a2d0af2c27b993aa85414f3759898502aa198301bc58b0d410948fe908b07b0","impliedFormat":99},{"version":"2da11b6f5c374300e5e66a6b01c3c78ec21b5d3fec0748a28cc28e00be73e006","impliedFormat":99},{"version":"0729691b39c24d222f0b854776b00530877217bfc30aac1dc7fa2f4b1795c536","impliedFormat":99},{"version":"ca45bb5c98c474d669f0e47615e4a5ae65d90a2e78531fda7862ee43e687a059","impliedFormat":99},{"version":"c1c058b91d5b9a24c95a51aea814b0ad4185f411c38ac1d5eef0bf3cebec17dc","impliedFormat":99},{"version":"3ab0ed4060b8e5b5e594138aab3e7f0262d68ad671d6678bcda51568d4fc4ccc","impliedFormat":99},{"version":"e2bf1faba4ff10a6020c41df276411f641d3fdce5c6bae1db0ec84a0bf042106","impliedFormat":99},{"version":"80b0a8fe14d47a71e23d7c3d4dcee9584d4282ef1d843b70cab1a42a4ea1588c","impliedFormat":99},{"version":"a0f02a73f6e3de48168d14abe33bf5970fdacdb52d7c574e908e75ad571e78f7","impliedFormat":99},{"version":"c728002a759d8ec6bccb10eed56184e86aeff0a762c1555b62b5d0fa9d1f7d64","impliedFormat":99},{"version":"586f94e07a295f3d02f847f9e0e47dbf14c16e04ccc172b011b3f4774a28aaea","impliedFormat":99},{"version":"cfe1a0f4ed2df36a2c65ea6bc235dbb8cf6e6c25feb6629989f1fa51210b32e7","impliedFormat":99},{"version":"8ba69c9bf6de79c177329451ffde48ddab7ec495410b86972ded226552f664df","impliedFormat":99},{"version":"15111cbe020f8802ad1d150524f974a5251f53d2fe10eb55675f9df1e82dbb62","impliedFormat":99},{"version":"782dc153c56a99c9ed07b2f6f497d8ad2747764966876dbfef32f3e27ce11421","impliedFormat":99},{"version":"cc2db30c3d8bb7feb53a9c9ff9b0b859dd5e04c83d678680930b5594b2bf99cb","impliedFormat":99},{"version":"46909b8c85a6fd52e0807d18045da0991e3bdc7373435794a6ba425bc23cc6be","impliedFormat":99},{"version":"e4e511ff63bb6bd69a2a51e472c6044298bca2c27835a34a20827bc3ef9b7d13","impliedFormat":99},{"version":"2c86f279d7db3c024de0f21cd9c8c2c972972f842357016bfbbd86955723b223","impliedFormat":99},{"version":"112c895cff9554cf754f928477c7d58a21191c8089bffbf6905c87fe2dc6054f","impliedFormat":99},{"version":"8cfc293b33082003cacbf7856b8b5e2d6dd3bde46abbd575b0c935dc83af4844","impliedFormat":99},{"version":"d2c5c53f85ce0474b3a876d76c4fc44ff7bb766b14ed1bf495f9abac181d7f5f","impliedFormat":99},{"version":"3c523f27926905fcbe20b8301a0cc2da317f3f9aea2273f8fc8d9ae88b524819","impliedFormat":99},{"version":"9ca0d706f6b039cc52552323aeccb4db72e600b67ddc7a54cebc095fc6f35539","impliedFormat":99},{"version":"a64909a9f75081342ddd061f8c6b49decf0d28051bc78e698d347bdcb9746577","impliedFormat":99},{"version":"7d8d55ae58766d0d52033eae73084c4db6a93c4630a3e17f419dd8a0b2a4dcd8","impliedFormat":99},{"version":"b8b5c8ba972d9ffff313b3c8a3321e7c14523fc58173862187e8d1cb814168ac","impliedFormat":99},{"version":"9c42c0fa76ee36cf9cc7cc34b1389fbb4bd49033ec124b93674ec635fabf7ffe","impliedFormat":99},{"version":"6184c8da9d8107e3e67c0b99dedb5d2dfe5ccf6dfea55c2a71d4037caf8ca196","impliedFormat":99},{"version":"4030ceea7bf41449c1b86478b786e3b7eadd13dfe5a4f8f5fe2eb359260e08b3","impliedFormat":99},{"version":"7bf516ec5dfc60e97a5bde32a6b73d772bd9de24a2e0ec91d83138d39ac83d04","impliedFormat":99},{"version":"e6a6fb3e6525f84edf42ba92e261240d4efead3093aca3d6eb1799d5942ba393","impliedFormat":99},{"version":"45df74648934f97d26800262e9b2af2f77ef7191d4a5c2eb1df0062f55e77891","impliedFormat":99},{"version":"3fe361e4e567f32a53af1f2c67ad62d958e3d264e974b0a8763d174102fe3b29","impliedFormat":99},{"version":"28b520acee4bc6911bfe458d1ad3ebc455fa23678463f59946ad97a327c9ab2b","impliedFormat":99},{"version":"121b39b1a9ad5d23ed1076b0db2fe326025150ef476dccb8bf87778fcc4f6dd7","impliedFormat":99},{"version":"f791f92a060b52aa043dde44eb60307938f18d4c7ac13df1b52c82a1e658953f","impliedFormat":99},{"version":"df09443e7743fd6adc7eb108e760084bacdf5914403b7aac5fbd4dc4e24e0c2c","impliedFormat":99},{"version":"eeb4ff4aa06956083eaa2aad59070361c20254b865d986bc997ee345dbd44cbb","impliedFormat":99},{"version":"ed84d5043444d51e1e5908f664addc4472c227b9da8401f13daa565f23624b6e","impliedFormat":99},{"version":"146bf888b703d8baa825f3f2fb1b7b31bda5dff803e15973d9636cdda33f4af3","impliedFormat":99},{"version":"b4ec8b7a8d23bdf7e1c31e43e5beac3209deb7571d2ccf2a9572865bf242da7c","impliedFormat":99},{"version":"3fba0d61d172091638e56fba651aa1f8a8500aac02147d29bd5a9cc0bc8f9ec2","impliedFormat":99},{"version":"a5a57deb0351b03041e0a1448d3a0cc5558c48e0ed9b79b69c99163cdca64ad8","impliedFormat":99},{"version":"9bcecf0cbc2bfc17e33199864c19549905309a0f9ecc37871146107aac6e05ae","impliedFormat":99},{"version":"d6a211db4b4a821e93c978add57e484f2a003142a6aef9dbfa1fe990c66f337b","impliedFormat":99},{"version":"bd4d10bd44ce3f630dd9ce44f102422cb2814ead5711955aa537a52c8d2cae14","impliedFormat":99},{"version":"08e4c39ab1e52eea1e528ee597170480405716bae92ebe7a7c529f490afff1e0","impliedFormat":99},{"version":"625bb2bc3867557ea7912bd4581288a9fca4f3423b8dffa1d9ed57fafc8610e3","impliedFormat":99},{"version":"d1992164ecc334257e0bef56b1fd7e3e1cea649c70c64ffc39999bb480c0ecdf","impliedFormat":99},{"version":"a53ff2c4037481eb357e33b85e0d78e8236e285b6428b93aa286ceea1db2f5dc","impliedFormat":99},{"version":"4fe608d524954b6857d78857efce623852fcb0c155f010710656f9db86e973a5","impliedFormat":99},{"version":"b53b62a9838d3f57b70cc456093662302abb9962e5555f5def046172a4fe0d4e","impliedFormat":99},{"version":"9866369eb72b6e77be2a92589c9df9be1232a1a66e96736170819e8a1297b61f","impliedFormat":99},{"version":"43abfbdf4e297868d780b8f4cfdd8b781b90ecd9f588b05e845192146a86df34","impliedFormat":99},{"version":"582419791241fb851403ae4a08d0712a63d4c94787524a7419c2bc8e0eb1b031","impliedFormat":99},{"version":"18437eeb932fe48590b15f404090db0ab3b32d58f831d5ffc157f63b04885ee5","impliedFormat":99},{"version":"0c5eaedf622d7a8150f5c2ec1f79ac3d51eea1966b0b3e61bfdea35e8ca213a7","impliedFormat":99},{"version":"fac39fc7a9367c0246de3543a6ee866a0cf2e4c3a8f64641461c9f2dac0d8aae","impliedFormat":99},{"version":"3b9f559d0200134f3c196168630997caedeadc6733523c8b6076a09615d5dec8","impliedFormat":99},{"version":"932af64286d9723da5ef7b77a0c4229829ce8e085e6bcc5f874cb0b83e8310d4","impliedFormat":99},{"version":"adeb9278f11f5561157feee565171c72fd48f5fe34ed06f71abf24e561fcaa1e","impliedFormat":99},{"version":"2269fef79b4900fc6b08c840260622ca33524771ff24fda5b9101ad98ea551f3","impliedFormat":99},{"version":"73d47498a1b73d5392d40fb42a3e7b009ae900c8423f4088c4faa663cc508886","impliedFormat":99},{"version":"7efc34cdc4da0968c3ba687bc780d5cacde561915577d8d1c1e46c7ac931d023","impliedFormat":99},{"version":"3c20a3bb0c50c819419f44aa55acc58476dad4754a16884cef06012d02b0722f","impliedFormat":99},{"version":"4569abf6bc7d51a455503670f3f1c0e9b4f8632a3b030e0794c61bfbba2d13be","impliedFormat":99},{"version":"98b2297b4dc1404078a54b61758d8643e4c1d7830af724f3ed2445d77a7a2d57","impliedFormat":99},{"version":"952ba89d75f1b589e07070fea2d8174332e3028752e76fd46e1c16cc51e6e2af","impliedFormat":99},{"version":"b6c9a2deefb6a57ff68d2a38d33c34407b9939487fc9ee9f32ba3ecf2987a88a","impliedFormat":99},{"version":"f6b371377bab3018dac2bca63e27502ecbd5d06f708ad7e312658d3b5315d948","impliedFormat":99},{"version":"31947dd8f1c8eeb7841e1f139a493a73bd520f90e59a6415375d0d8e6a031f01","impliedFormat":99},{"version":"95cd83b807e10b1af408e62caf5fea98562221e8ddca9d7ccc053d482283ddda","impliedFormat":99},{"version":"19287d6b76288c2814f1633bdd68d2b76748757ffd355e73e41151644e4773d6","impliedFormat":99},{"version":"fc4e6ec7dade5f9d422b153c5d8f6ad074bd9cc4e280415b7dc58fb5c52b5df1","impliedFormat":99},{"version":"3aea973106e1184db82d8880f0ca134388b6cbc420f7309d1c8947b842886349","impliedFormat":99},{"version":"765e278c464923da94dda7c2b281ece92f58981642421ae097862effe2bd30fa","impliedFormat":99},{"version":"de260bed7f7d25593f59e859bd7c7f8c6e6bb87e8686a0fcafa3774cb5ca02d8","impliedFormat":99},{"version":"b5c341ce978f5777fbe05bc86f65e9906a492fa6b327bda3c6aae900c22e76c6","impliedFormat":99},{"version":"686ddbfaf88f06b02c6324005042f85317187866ca0f8f4c9584dd9479653344","impliedFormat":99},{"version":"7f789c0c1db29dd3aab6e159d1ba82894a046bf8df595ac48385931ae6ad83e0","impliedFormat":99},{"version":"8eb3057d4fe9b59b2492921b73a795a2455ebe94ccb3d01027a7866612ead137","impliedFormat":99},{"version":"1e43c5d7aee1c5ec20611e28b5417f5840c75d048de9d7f1800d6808499236f8","impliedFormat":99},{"version":"d42610a5a2bee4b71769968a24878885c9910cd049569daa2d2ee94208b3a7a5","impliedFormat":99},{"version":"f6ed95506a6ed2d40ed5425747529befaa4c35fcbbc1e0d793813f6d725690fa","impliedFormat":99},{"version":"a6fcc1cd6583939506c906dff1276e7ebdc38fbe12d3e108ba38ad231bd18d97","impliedFormat":99},{"version":"ed13354f0d96fb6d5878655b1fead51722b54875e91d5e53ef16de5b71a0e278","impliedFormat":99},{"version":"1193b4872c1fb65769d8b164ca48124c7ebacc33eae03abf52087c2b29e8c46c","impliedFormat":99},{"version":"af682dfabe85688289b420d939020a10eb61f0120e393d53c127f1968b3e9f66","impliedFormat":99},{"version":"0dca04006bf13f72240c6a6a502df9c0b49c41c3cab2be75e81e9b592dcd4ea8","impliedFormat":99},{"version":"79d6ac4a2a229047259116688f9cd62fda25422dee3ad304f77d7e9af53a41ef","impliedFormat":99},{"version":"64534c17173990dc4c3d9388d16675a059aac407031cfce8f7fdffa4ee2de988","impliedFormat":99},{"version":"ba46d160a192639f3ca9e5b640b870b1263f24ac77b6895ab42960937b42dcbb","impliedFormat":99},{"version":"5e5ddd6fc5b590190dde881974ab969455e7fad61012e32423415ae3d085b037","impliedFormat":99},{"version":"1c16fd00c42b60b96fe0fa62113a953af58ddf0d93b0a49cb4919cf5644616f0","impliedFormat":99},{"version":"eb240c0e6b412c57f7d9a9f1c6cd933642a929837c807b179a818f6e8d3a4e44","impliedFormat":99},{"version":"4a7bde5a1155107fc7d9483b8830099f1a6072b6afda5b78d91eb5d6549b3956","impliedFormat":99},{"version":"3c1baaffa9a24cc7ef9eea6b64742394498e0616b127ca630aca0e11e3298006","impliedFormat":99},{"version":"87ca1c31a326c898fa3feb99ec10750d775e1c84dbb7c4b37252bcf3742c7b21","impliedFormat":99},{"version":"d7bd26af1f5457f037225602035c2d7e876b80d02663ab4ca644099ad3a55888","impliedFormat":99},{"version":"2ad0a6b93e84a56b64f92f36a07de7ebcb910822f9a72ad22df5f5d642aff6f3","impliedFormat":99},{"version":"523d1775135260f53f672264937ee0f3dc42a92a39de8bee6c48c7ea60b50b5a","impliedFormat":99},{"version":"e441b9eebbc1284e5d995d99b53ed520b76a87cab512286651c4612d86cd408e","impliedFormat":99},{"version":"76f853ee21425c339a79d28e0859d74f2e53dee2e4919edafff6883dd7b7a80f","impliedFormat":99},{"version":"00cf042cd6ba1915648c8d6d2aa00e63bbbc300ea54d28ed087185f0f662e080","impliedFormat":99},{"version":"f57e6707d035ab89a03797d34faef37deefd3dd90aa17d90de2f33dce46a2c56","impliedFormat":99},{"version":"cc8b559b2cf9380ca72922c64576a43f000275c72042b2af2415ce0fb88d7077","impliedFormat":99},{"version":"1a337ca294c428ba8f2eb01e887b28d080ee4a4307ae87e02e468b1d26af4a74","impliedFormat":99},{"version":"5a15362fc2e72765a908c0d4dd89e3ab3b763e8bc8c23f19234a709ecfd202fe","impliedFormat":99},{"version":"2dffdfe62ac8af0943853234519616db6fd8958fc7ff631149fd8364e663f361","impliedFormat":99},{"version":"5dbdb2b2229b5547d8177c34705272da5a10b8d0033c49efbc9f6efba5e617f2","impliedFormat":99},{"version":"6fc0498cd8823d139004baff830343c9a0d210c687b2402c1384fb40f0aa461c","impliedFormat":99},{"version":"8492306a4864a1dc6fc7e0cc0de0ae9279cbd37f3aae3e9dc1065afcdc83dddc","impliedFormat":99},{"version":"c011b378127497d6337a93f020a05f726db2c30d55dc56d20e6a5090f05919a6","impliedFormat":99},{"version":"f4556979e95a274687ae206bbab2bb9a71c3ad923b92df241d9ab88c184b3f40","impliedFormat":99},{"version":"50e82bb6e238db008b5beba16d733b77e8b2a933c9152d1019cf8096845171a4","impliedFormat":99},{"version":"d6011f8b8bbf5163ef1e73588e64a53e8bf1f13533c375ec53e631aad95f1375","impliedFormat":99},{"version":"693cd7936ac7acfa026d4bcb5801fce71cec49835ba45c67af1ef90dbfd30af7","impliedFormat":99},{"version":"195e2cf684ecddfc1f6420564535d7c469f9611ce7a380d6e191811f84556cd2","impliedFormat":99},{"version":"1dc6b6e7b2a7f2962f31c77f4713f3a5a132bbe14c00db75d557568fe82e4311","impliedFormat":99},{"version":"add93b1180e9aaac2dae4ef3b16f7655893e2ecbe62bd9e48366c305f0063d89","impliedFormat":99},{"version":"594bd896fe37c970aafb7a376ebeec4c0d636b62a5f611e2e27d30fb839ad8a5","impliedFormat":99},{"version":"b1c6a6faf60542ba4b4271db045d7faea56e143b326ef507d2797815250f3afc","impliedFormat":99},{"version":"8c8b165beb794260f462679329b131419e9f5f35212de11c4d53e6d4d9cbedf6","impliedFormat":99},{"version":"ee5a4cf57d49fcf977249ab73c690a59995997c4672bb73fcaaf2eed65dbd1b2","impliedFormat":99},{"version":"f9f36051f138ab1c40b76b230c2a12b3ce6e1271179f4508da06a959f8bee4c1","impliedFormat":99},{"version":"9dc2011a3573d271a45c12656326530c0930f92539accbec3531d65131a14a14","impliedFormat":99},{"version":"091521ce3ede6747f784ae6f68ad2ea86bbda76b59d2bf678bcad2f9d141f629","impliedFormat":99},{"version":"202c2be951f53bafe943fb2c8d1245e35ed0e4dfed89f48c9a948e4d186dd6d4","impliedFormat":99},{"version":"c618aead1d799dbf4f5b28df5a6b9ce13d72722000a0ec3fe90a8115b1ea9226","impliedFormat":99},{"version":"9b0bf59708549c3e77fddd36530b95b55419414f88bbe5893f7bc8b534617973","impliedFormat":99},{"version":"7e216f67c4886f1bde564fb4eebdd6b185f262fe85ad1d6128cad9b229b10354","impliedFormat":99},{"version":"cd51e60b96b4d43698df74a665aa7a16604488193de86aa60ec0c44d9f114951","impliedFormat":99},{"version":"b63341fb6c7ba6f2aeabd9fc46b43e6cc2d2b9eec06534cfd583d9709f310ec2","impliedFormat":99},{"version":"be2af50c81b15bcfe54ad60f53eb1c72dae681c72d0a9dce1967825e1b5830a3","impliedFormat":99},{"version":"be5366845dfb9726f05005331b9b9645f237f1ddc594c0def851208e8b7d297b","impliedFormat":99},{"version":"5ddd536aaeadd4bf0f020492b3788ed209a7050ce27abec4e01c7563ff65da81","impliedFormat":99},{"version":"e243b24da119c1ef0d79af2a45217e50682b139cb48e7607efd66cc01bd9dcda","impliedFormat":99},{"version":"5b1398c8257fd180d0bf62e999fe0a89751c641e87089a83b24392efda720476","impliedFormat":99},{"version":"1588b1359f8507a16dbef67cd2759965fc2e8d305e5b3eb71be5aa9506277dff","impliedFormat":99},{"version":"4c99f2524eee1ec81356e2b4f67047a4b7efaf145f1c4eb530cd358c36784423","impliedFormat":99},{"version":"b30c6b9f6f30c35d6ef84daed1c3781e367f4360171b90598c02468b0db2fc3d","impliedFormat":99},{"version":"79c0d32274ccfd45fae74ac61d17a2be27aea74c70806d22c43fc625b7e9f12a","impliedFormat":99},{"version":"1b7e3958f668063c9d24ac75279f3e610755b0f49b1c02bb3b1c232deb958f54","impliedFormat":99},{"version":"779d4022c3d0a4df070f94858a33d9ebf54af3664754536c4ce9fd37c6f4a8db","impliedFormat":99},{"version":"e662f063d46aa8c088edffdf1d96cb13d9a2cbf06bc38dc6fc62b4d125fb7b49","impliedFormat":99},{"version":"d1d612df1e41c90d9678b07740d13d4f8e6acec2f17390d4ff4be5c889a6d37d","impliedFormat":99},{"version":"c95933fe140918892d569186f17b70ef6b1162f851a0f13f6a89e8f4d599c5a1","impliedFormat":99},{"version":"1d8d30677f87c13c2786980a80750ac1e281bdb65aa013ea193766fe9f0edd74","impliedFormat":99},{"version":"4661673cbc984b8a6ee5e14875a71ed529b64e7f8e347e12c0db4cecc25ad67d","impliedFormat":99},{"version":"7f980a414274f0f23658baa9a16e21d828535f9eac538e2eab2bb965325841db","impliedFormat":99},{"version":"20fb747a339d3c1d4a032a31881d0c65695f8167575e01f222df98791a65da9b","impliedFormat":99},{"version":"dd4e7ebd3f205a11becf1157422f98db675a626243d2fbd123b8b93efe5fb505","impliedFormat":99},{"version":"43ec6b74c8d31e88bb6947bb256ad78e5c6c435cbbbad991c3ff39315b1a3dba","impliedFormat":99},{"version":"b27242dd3af2a5548d0c7231db7da63d6373636d6c4e72d9b616adaa2acef7e1","impliedFormat":99},{"version":"e0ee7ba0571b83c53a3d6ec761cf391e7128d8f8f590f8832c28661b73c21b68","impliedFormat":99},{"version":"072bfd97fc61c894ef260723f43a416d49ebd8b703696f647c8322671c598873","impliedFormat":99},{"version":"e70875232f5d5528f1650dd6f5c94a5bed344ecf04bdbb998f7f78a3c1317d02","impliedFormat":99},{"version":"8e495129cb6cd8008de6f4ff8ce34fe1302a9e0dcff8d13714bd5593be3f7898","impliedFormat":99},"2d70bf067b157846642784f82c346e76a2df37e72ddf9a16e4aaa5f51e821a79","677332c79ff12a41d1f9760dc95bb5ee145611b5ea692e1027c30b569de69f6e","bca2f81fa48647dc28939c8cf9f57be62ee560cdcf7fecaa74cad2bcc57c99c6","41157c0574fb7151b5130e1ad9cf54160707ad9fe88d8c2115ccfb07fd2bcd7a","ad5c746b241a24566b92ebff09afd829766fe0aab947de62574ce8fb8b86a6d0","983255108ecdecfdc3043aa082d29e102affe4be5a42d09f6e8c9801e6700e07","c4009f4b929ead774f3aaaf1ef7f62829ed824354b24d4f1a6c37d7c62a01137",{"version":"0726d015dbcb55ccfa75546cb2fd43fe13a0dfeb783d08572f1c62f59193bbe5","impliedFormat":1},"0bebd5dedcec2ebc2244f65ae4e3db37fbb146257482edff27b3ce3b922bbab9","0901abd1fe5aa8a248193a77317200a775325c0225df1942a311481b990b9b3a","61d58ba97635bb1c4028c5a7dc20ffed0f70d8af21ab8136f9e512e1a9b401d4","be41e1b945a0a4962ef4d248a6f1c33ac6beff347df6b2e190b63fce98ee613a",{"version":"da0f84fcd93700b4a5fbf9c6f166a6cc19fc798231bff56dd1e3875bfc6966eb","impliedFormat":1},{"version":"634ff08e0143bec98401c737de7bfc6883bfec09200bd3806d2a4cfc79c62aaa","impliedFormat":1},{"version":"90a86863e3a57143c50fec5129d844ec12cef8fe44d120e56650ed51a6ce9867","impliedFormat":1},{"version":"472c0a98c5de98b8f5206132c941b052f5cc1ae78860cb8712ac4f1ebf4550ca","impliedFormat":1},{"version":"538c4903ef9f8df7d84c6cf2e065d589a2532d152fa44105c7093a606393b814","impliedFormat":1},{"version":"cfcb6acbb793a78b20899e6537c010bfbbf939c77471abcdc2a41faf9682ca1a","impliedFormat":1},{"version":"a7798e86de8e76844f774f8e0e338149893789cdc08970381f0ae78c86e8667f","impliedFormat":1},{"version":"eebc21bb922816f92302a1f9dcefc938e74d4af8c0a111b2a52519d7e25d4868","impliedFormat":1},{"version":"6b359d3c3138a9f4d3a9c9a8fda24be6fd15bd789e692252b53e68ce99db8edc","impliedFormat":1},{"version":"9488b648a6a4146b26c0fd4e85984f617056293092a89861f5259a69be16ca5c","impliedFormat":1},{"version":"e156513655462b5811a8f980e32ccd204c19042f8c9756430fe4e8d6f7c1326e","impliedFormat":1},{"version":"5679b694d138b8c4b3d56c9b1210f903c6b0ca2b5e7f1682a2dd41a6c955f094","impliedFormat":1},{"version":"ca8da035b76fb0136d2c1390dda650b7979202dbe0f5dc7eaefcde1c76dee4f4","impliedFormat":1},{"version":"4b1022a607444684abeee6537e4cace97263d1ef047c31b012c41fdc15838a79","impliedFormat":1},{"version":"dd0271250f1e4314e52d7e0da9f3b25a708827f8a43ceff847a2a5e3fd3283e8","affectsGlobalScope":true,"impliedFormat":1},{"version":"47971d8a8639a2a2dd684091c6e7660ec5909fed540c4479ca24e22ac237194e","affectsGlobalScope":true,"impliedFormat":1},{"version":"e1075312b07671ef1cbf46409a0fa2eb2b90bb59c6215c94f0e530113013eeda","impliedFormat":1},{"version":"1bfd63c3f3749c5dc925bb0c05f229f9a376b8d3f8173d0e01901c08202caf6f","impliedFormat":1},{"version":"da850b4fdbabdd528f8b9c2784c5ba3b3bedc4e2e1e34dcd08b6407f9ec61a25","impliedFormat":1},{"version":"e61c918bb5f4a39b795a06e22bc4d44befcefd22f6a5c8a732c9ed0b565a6128","impliedFormat":1},{"version":"ee56351989b0e6f31fd35c9048e222146ced0aac68c64ce2e034f7c881327d6d","impliedFormat":1},{"version":"f58b2f1c8f4bcf519377d39f9555631b6507977ad2f4d8b73ac04622716dc925","impliedFormat":1},{"version":"4c805d3d1228c73877e7550afd8b881d89d9bc0c6b73c88940cffcdd2931b1f6","impliedFormat":1},{"version":"4aa74b4bc57c535815ae004550c59a953c8f8c3c61418ac47a7dcfefba76d1ba","impliedFormat":1},{"version":"78b17ceb133d95df989a1e073891259b54c968f71f416cd76185308af4f9a185","impliedFormat":1},{"version":"d76e5d04d111581b97e0aa35de3063022d20d572f22f388d3846a73f6ce0b788","impliedFormat":1},{"version":"0a53bb48eba6e9f5a56e3b85529fbbe786d96e84871579d10593d4f3ae0f9dba","impliedFormat":1},{"version":"d34fb8b0a66f0a406c7ce63a36f16dda7ff4500b11b0bd30a491aa0d59336d1f","impliedFormat":1},{"version":"282b31893b18a06114e5173f775dd085597ca220d183b8bd474d21846c048334","impliedFormat":1},{"version":"ed27d5ce258f069acf0036471d1fbb56b4cb3c16d7401b52a51297eca651db62","impliedFormat":1},{"version":"ec203a515afd88589bf1d384535024f5b90ebe6b5c416fb3dcca0abd428a8ba4","impliedFormat":1},{"version":"32a2a1374b57f0744d284ca93b477bd97825922513a24dfe262cbf3497377d96","impliedFormat":1},{"version":"a8b60d24dc1eb26c0e987f9461c893744339a7f48e4496f8077f258a644cffab","impliedFormat":1},{"version":"3f9df27a77a23d69088e369b42af5f95bcb3e605e6b5c2395f0bfcd82045e051","affectsGlobalScope":true,"impliedFormat":1},{"version":"9fd080a9458c6d6f3eb6d4e2b12a3ec498d7d219863e9dca0646bdee9acce875","impliedFormat":1},{"version":"e5d31928bee2ba0e72aeb858881891f8948326e4f91823028d0aea5c6f9e7564","affectsGlobalScope":true,"impliedFormat":1},{"version":"9a9ba9f6fd097bb2f57d68da8a39403bbe4dc818b8ccd155a780e4e23fa556f2","impliedFormat":1},{"version":"e50c4cd1f5cbce3e74c19a5bbf503c460e6ae86597e6d648a98c7f6c90b596dd","impliedFormat":1},{"version":"fa140f881e20591ce163039a7968b54c5e51c11228708b4f9147473d06471cf5","affectsGlobalScope":true,"impliedFormat":1},{"version":"295eca0c47be1191690fd2fe588195fff9d4dc43852aceb8b4cab2aa634579f0","impliedFormat":1},{"version":"59ee7346e19b0050508a592702871dc943083c6dcb69a47d52e888115d840781","impliedFormat":1},{"version":"067712491fb2094c212c733dd8e2d56e74c309a9ce9dac9e919286b7245a1eb4","impliedFormat":1},{"version":"a5eae58ac55bd30c42359e4b01fb2be5eddac336869d3f04ffb4daa54b58f009","impliedFormat":1},{"version":"d12d691ef8933e8db39f2ca81d6973940ff5e37bb421752f5b6e7bc15dea3abf","impliedFormat":1},{"version":"4c5f8bd9b3a1aae4e4fddfee41667e495a045f73ed603993038fa6a8ba92fa14","impliedFormat":1},{"version":"dfb274ab0f319cf18ce7152067c25f984c7fd1924fc72b3f66734588444c934a","impliedFormat":1},{"version":"108c8c05cbc3fbbbd4ff4fc0779c9bef55655c28528eb0f77829795dc9f0b484","impliedFormat":1},{"version":"a7e5444d24cdec45f113f4fb8a687e1c83a5d30c55d2da19a04be71108ad77bd","impliedFormat":1},{"version":"41ec17e218b7358fcff25c719bc419fec8ec98f13e561b9a33b07392d4fec24c","impliedFormat":1},{"version":"23c204326746e981e02d7f0a15ab6f8015f9035998cb3766c9ddbf8ea247aea2","impliedFormat":1},{"version":"25f994b5d76ce6a3186a3319555bbba79706dac2174019915c39ac6080e98c7e","impliedFormat":1},{"version":"dfa4e2c6a612d43851ccbc499598cb006a3a78bc8c7f972c52078f862fa84e47","impliedFormat":1},{"version":"02c1705fa902f172be6e9020d74bcd92ce5db8d2ef3e1b03aabc2ac8eb46c3db","impliedFormat":1},{"version":"99d2d8a0c7bb3dd77459552269a7b5865fa912cedab69db686d40d2586b551f7","impliedFormat":1},{"version":"b47abe58626d76d258472b1d5f76752dd29efe681545f32698db84e7f83517df","impliedFormat":1},{"version":"3a99bbbbbf42e45c3d203e7c74f1319b79f9821c5e5f3cdd03249184d3e003ce","impliedFormat":1},{"version":"aaacc0e12ab4de27bdf131f666e315d8e60abec26c7f87501e0a7806fc824ae6","impliedFormat":1},{"version":"3b4195afd41a9215afc7be0820f8083f6bd2e85e5e0b45bb0061fb041944711e","impliedFormat":1},{"version":"108df8095f5e25d7189dd0d1433ac2df75ec40c779d8faf7d2670f1485beb643","impliedFormat":1},{"version":"ddd3c1d3c9ff67140191a3cf49b09875e20f28f2fc5535ae5ea16e14293a989b","impliedFormat":1},{"version":"7b496e53d5f7e1737adcb5610516476ee055bf547918797348f245c68e7418fe","impliedFormat":1},{"version":"577f44389d7faedd7fc9c0330caf73140e5d0d5f6c968210bff78be569f398a7","impliedFormat":1},{"version":"3046c57724587a59bceefadd30040d418e9df81b9f3cfd680618a3511302ed7a","impliedFormat":1},{"version":"15ccc911ed15397e838471bfe6d476c28deffe976c05cb057e6b1ea7491242c2","impliedFormat":1},{"version":"64b5a5ebdaead77a9a564aa938f4fb7a45e27cda7441d3bee8c9de8a4df5a04f","impliedFormat":1},{"version":"a48037f7af5f80df8973db5e562e17566407541de284b8dadf1879ea3aed8a2f","impliedFormat":1},{"version":"dab97d96ce986857150db03f0d435b44c060d126b4a387c7807f4e9f6c92e531","impliedFormat":1},{"version":"85f39366ea7bc5e34b596fc97de18a7e377856755e789d8e931054f2191d9b8b","impliedFormat":1},{"version":"daf3ea3d49f6e8a2fa70b7ca1f21bd97f1b65021b31fbfccb73dd55f86abb792","impliedFormat":1},{"version":"b15bd260805f9dd06cd4b2b741057209994823942c5696fd835e8a04fb4aab6b","impliedFormat":1},{"version":"6635a824edf99ed52dbd3502d5bce35990c3ed5e2ec5cef88229df8ac0c52b06","impliedFormat":1},{"version":"d6577effa37aae713c34363b7cc4c84851cbabe399882c60e2b70bcbb02bfa01","impliedFormat":1},{"version":"8eaf80ad438890fe5880c39a7bbf2c998ce7d29d4c14dd56d82db63bd871eefb","impliedFormat":1},{"version":"9b3e7f776f312c76ac67e1060e5398d7ac2c69d6a3a928a9daaae2eb05b15f56","impliedFormat":1},{"version":"202042eccb4789b7dee51ba9ecab0b854834ea5c1d6a3946504bfc733d4468c3","impliedFormat":1},{"version":"2b2ef76a9f36094b07ee6f76a5ac6903f2f65c0a20283201814a8d1e752cb592","impliedFormat":1},{"version":"8882e4e087d0bc8cc713cb3d8090c45d33e373e6f5c83e0f8d00fe6a950ef875","impliedFormat":1},"2599033254acb41304c246e171896a421a9cab65e60597e727875865d9465c2c",{"version":"f329dfad7970297cbf07ddc8fce2ad4a24e2a3855917c661922ef86eb24dd1f1","impliedFormat":1},{"version":"841784cfa9046a2b3e453d638ea5c3e53680eb8225a45db1c13813f6ea4095e5","affectsGlobalScope":true,"impliedFormat":1},{"version":"646ef1cff0ec3cf8e96adb1848357788f244b217345944c2be2942a62764b771","impliedFormat":1},"04f9cff54e99e16855924e45a5af463ae4f2e0057d57a62749948029e941f1aa",{"version":"511a5f4f77165dc1b73ceae1e28b4a8f78f3443d8e18a1fd43bfafd2b0133bbe","impliedFormat":1},{"version":"b6d03c9cfe2cf0ba4c673c209fcd7c46c815b2619fd2aad59fc4229aaef2ed43","impliedFormat":1},{"version":"95aba78013d782537cc5e23868e736bec5d377b918990e28ed56110e3ae8b958","impliedFormat":1},{"version":"670a76db379b27c8ff42f1ba927828a22862e2ab0b0908e38b671f0e912cc5ed","impliedFormat":1},{"version":"13b77ab19ef7aadd86a1e54f2f08ea23a6d74e102909e3c00d31f231ed040f62","impliedFormat":1},{"version":"069bebfee29864e3955378107e243508b163e77ab10de6a5ee03ae06939f0bb9","impliedFormat":1},{"version":"b1538a92b9bae8d230267210c5db38c2eb6bdb352128a3ce3aa8c6acf9fc9622","impliedFormat":1},{"version":"6fc1a4f64372593767a9b7b774e9b3b92bf04e8785c3f9ea98973aa9f4bbe490","impliedFormat":1},{"version":"ff09b6fbdcf74d8af4e131b8866925c5e18d225540b9b19ce9485ca93e574d84","impliedFormat":1},{"version":"d5895252efa27a50f134a9b580aa61f7def5ab73d0a8071f9b5bf9a317c01c2d","impliedFormat":1},{"version":"2c378d9368abcd2eba8c29b294d40909845f68557bc0b38117e4f04fc56e5f9c","impliedFormat":1},{"version":"56208c500dcb5f42be7e18e8cb578f257a1a89b94b3280c506818fed06391805","impliedFormat":1},{"version":"0c94c2e497e1b9bcfda66aea239d5d36cd980d12a6d9d59e66f4be1fa3da5d5a","impliedFormat":1},{"version":"9b048390bcffe88c023a4cd742a720b41d4cd7df83bc9270e6f2339bf38de278","affectsGlobalScope":true,"impliedFormat":1},{"version":"1f366bde16e0513fa7b64f87f86689c4d36efd85afce7eb24753e9c99b91c319","impliedFormat":1},{"version":"f3d8c757e148ad968f0d98697987db363070abada5f503da3c06aefd9d4248c1","impliedFormat":1},{"version":"be1cc4d94ea60cbe567bc29ed479d42587bf1e6cba490f123d329976b0fe4ee5","impliedFormat":1},{"version":"7fa8d75d229eeaee235a801758d9c694e94405013fe77d5d1dd8e3201fc414f1","impliedFormat":1},{"version":"1ba59c8bbeed2cb75b239bb12041582fa3e8ef32f8d0bd0ec802e38442d3f317","impliedFormat":1}],"root":[62,253,[257,272],[335,345],[347,379],[385,387],[646,652],[654,657],735,739],"options":{"allowJs":true,"esModuleInterop":true,"jsx":1,"module":99,"skipLibCheck":true,"strict":true,"target":9},"referencedMap":[[62,1],[742,2],[740,1],[76,1],[330,3],[331,4],[329,5],[324,6],[333,7],[318,1],[319,8],[328,9],[323,10],[332,1],[327,11],[320,1],[321,1],[326,12],[322,9],[325,10],[303,13],[304,14],[302,1],[305,1],[315,15],[307,1],[310,16],[308,1],[309,1],[306,1],[313,17],[314,18],[312,19],[317,20],[334,21],[297,1],[294,1],[293,1],[288,22],[299,23],[284,24],[295,25],[287,26],[286,27],[296,1],[291,28],[298,1],[292,29],[285,1],[738,30],[737,31],[736,24],[301,32],[720,33],[721,33],[723,34],[722,33],[715,33],[716,33],[718,35],[717,33],[695,1],[694,1],[697,36],[696,1],[693,1],[660,37],[658,38],[661,1],[708,39],[662,33],[698,40],[707,41],[699,1],[702,42],[700,1],[703,1],[705,1],[701,42],[704,1],[706,1],[659,43],[734,44],[719,33],[714,45],[724,46],[730,47],[731,48],[733,49],[732,50],[712,45],[713,51],[709,52],[711,53],[710,54],[725,33],[729,55],[726,33],[727,56],[728,33],[663,1],[664,1],[667,1],[665,1],[666,1],[669,1],[670,57],[671,1],[672,1],[668,1],[673,1],[674,1],[675,1],[676,1],[677,58],[678,1],[692,59],[679,1],[680,1],[681,1],[682,1],[683,1],[684,1],[685,1],[688,1],[686,1],[687,1],[689,33],[690,33],[691,60],[283,1],[745,61],[741,2],[743,62],[744,2],[79,63],[746,1],[747,1],[748,1],[749,64],[750,1],[752,65],[753,66],[751,1],[754,1],[77,1],[191,1],[755,1],[134,67],[135,67],[136,68],[83,69],[137,70],[138,71],[139,72],[81,1],[140,73],[141,74],[142,75],[143,76],[144,77],[145,78],[146,78],[147,79],[148,80],[149,81],[150,82],[84,1],[82,1],[151,83],[152,84],[153,85],[187,86],[154,87],[155,1],[156,88],[157,89],[158,90],[159,91],[160,92],[161,93],[162,94],[163,95],[164,96],[165,96],[166,97],[167,1],[168,98],[169,99],[171,100],[170,101],[172,102],[173,103],[174,104],[175,105],[176,106],[177,107],[178,108],[179,109],[180,110],[181,111],[182,112],[183,113],[184,114],[85,1],[86,115],[87,1],[88,1],[130,116],[131,117],[132,1],[133,102],[185,118],[186,119],[311,1],[282,120],[756,120],[300,120],[254,1],[256,121],[382,120],[757,1],[758,122],[80,123],[236,124],[237,125],[235,1],[63,1],[73,126],[69,127],[72,128],[245,129],[226,1],[228,130],[248,130],[227,131],[74,1],[71,132],[64,133],[241,134],[66,135],[68,136],[240,1],[238,135],[67,1],[70,133],[65,1],[78,1],[255,1],[476,137],[455,138],[552,1],[456,139],[392,137],[393,137],[394,137],[395,137],[396,137],[397,137],[398,137],[399,137],[400,137],[401,137],[402,137],[403,137],[404,137],[405,137],[406,137],[407,137],[408,137],[409,137],[388,1],[410,137],[411,137],[412,1],[413,137],[414,137],[416,137],[415,137],[417,137],[418,137],[419,137],[420,137],[421,137],[422,137],[423,137],[424,137],[425,137],[426,137],[427,137],[428,137],[429,137],[430,137],[431,137],[432,137],[433,137],[434,137],[435,137],[437,137],[438,137],[439,137],[436,137],[440,137],[441,137],[442,137],[443,137],[444,137],[445,137],[446,137],[447,137],[448,137],[449,137],[450,137],[451,137],[452,137],[453,137],[454,137],[457,140],[458,137],[459,137],[460,141],[461,142],[462,137],[463,137],[464,137],[465,137],[468,137],[466,137],[467,137],[390,1],[469,137],[470,137],[471,137],[472,137],[473,137],[474,137],[475,137],[477,143],[478,137],[479,137],[480,137],[482,137],[481,137],[483,137],[484,137],[485,137],[486,137],[487,137],[488,137],[489,137],[490,137],[491,137],[492,137],[494,137],[493,137],[495,137],[496,1],[497,1],[498,1],[645,144],[499,137],[500,137],[501,137],[502,137],[503,137],[504,137],[505,1],[506,137],[507,1],[508,137],[509,137],[510,137],[511,137],[512,137],[513,137],[514,137],[515,137],[516,137],[517,137],[518,137],[519,137],[520,137],[521,137],[522,137],[523,137],[524,137],[525,137],[526,137],[527,137],[528,137],[529,137],[530,137],[531,137],[532,137],[533,137],[534,137],[535,137],[536,137],[537,137],[538,137],[539,137],[540,1],[541,137],[542,137],[543,137],[544,137],[545,137],[546,137],[547,137],[548,137],[549,137],[550,137],[551,137],[553,145],[389,137],[554,137],[555,137],[556,1],[557,1],[558,1],[559,137],[560,1],[561,1],[562,1],[563,1],[564,1],[565,137],[566,137],[567,137],[568,137],[569,137],[570,137],[571,137],[572,137],[577,146],[575,147],[576,148],[574,149],[573,137],[578,137],[579,137],[580,137],[581,137],[582,137],[583,137],[584,137],[585,137],[586,137],[587,137],[588,1],[589,1],[590,137],[591,137],[592,1],[593,1],[594,1],[595,137],[596,137],[597,137],[598,137],[599,143],[600,137],[601,137],[602,137],[603,137],[604,137],[605,137],[606,137],[607,137],[608,137],[609,137],[610,137],[611,137],[612,137],[613,137],[614,137],[615,137],[616,137],[617,137],[618,137],[619,137],[620,137],[621,137],[622,137],[623,137],[624,137],[625,137],[626,137],[627,137],[628,137],[629,137],[630,137],[631,137],[632,137],[633,137],[634,137],[635,137],[636,137],[637,137],[638,137],[639,137],[640,137],[391,150],[641,1],[642,1],[643,1],[644,1],[196,1],[278,151],[280,152],[279,153],[277,154],[276,1],[383,155],[384,156],[316,1],[219,1],[221,157],[220,1],[346,120],[381,158],[380,1],[214,159],[212,160],[213,161],[201,162],[202,160],[209,163],[200,164],[205,165],[215,1],[206,166],[211,167],[217,168],[216,169],[199,170],[207,171],[208,172],[203,173],[210,159],[204,174],[653,1],[290,175],[289,1],[193,176],[192,177],[198,1],[246,1],[75,1],[60,1],[61,1],[10,1],[11,1],[13,1],[12,1],[2,1],[14,1],[15,1],[16,1],[17,1],[18,1],[19,1],[20,1],[21,1],[3,1],[22,1],[23,1],[4,1],[24,1],[28,1],[25,1],[26,1],[27,1],[29,1],[30,1],[31,1],[5,1],[32,1],[33,1],[34,1],[35,1],[6,1],[39,1],[36,1],[37,1],[38,1],[40,1],[7,1],[41,1],[46,1],[47,1],[42,1],[43,1],[44,1],[45,1],[8,1],[51,1],[48,1],[49,1],[50,1],[52,1],[9,1],[53,1],[54,1],[55,1],[57,1],[56,1],[1,1],[58,1],[59,1],[106,178],[118,179],[104,180],[119,181],[128,182],[95,183],[96,184],[94,185],[127,186],[122,187],[126,188],[98,189],[115,190],[97,191],[125,192],[92,193],[93,187],[99,194],[100,1],[105,195],[103,194],[90,196],[129,197],[120,198],[109,199],[108,194],[110,200],[113,201],[107,202],[111,203],[123,186],[101,204],[102,205],[114,206],[91,181],[117,207],[116,194],[112,208],[121,1],[89,1],[124,209],[189,210],[225,211],[195,212],[190,210],[188,1],[194,213],[223,1],[218,1],[222,214],[197,1],[224,215],[243,216],[252,217],[242,218],[247,219],[234,220],[231,221],[239,1],[232,127],[275,222],[273,223],[250,224],[249,225],[230,226],[274,227],[229,1],[233,228],[251,229],[281,230],[244,1],[343,1],[379,231],[386,232],[387,233],[361,234],[364,235],[363,236],[360,234],[362,1],[385,237],[646,238],[647,239],[648,240],[649,237],[348,1],[347,241],[344,242],[349,243],[345,234],[651,244],[650,245],[652,246],[654,247],[374,248],[373,249],[376,250],[375,248],[377,250],[371,249],[378,250],[372,249],[370,251],[350,252],[367,253],[354,254],[358,255],[366,256],[655,257],[368,258],[359,259],[369,252],[356,260],[353,261],[351,1],[365,120],[656,1],[657,1],[357,1],[352,262],[355,1],[259,252],[260,252],[261,252],[262,252],[263,252],[264,252],[265,252],[266,234],[267,252],[268,252],[269,252],[271,263],[272,120],[337,264],[336,265],[338,120],[339,120],[340,120],[341,120],[258,1],[335,266],[257,120],[735,267],[739,268],[342,269],[270,1],[253,270]],"semanticDiagnosticsPerFile":[[62,[{"start":32,"length":6,"messageText":"Cannot find module 'next' or its corresponding type declarations.","category":1,"code":2307}]],[343,[{"start":30,"length":6,"messageText":"Cannot find module 'next' or its corresponding type declarations.","category":1,"code":2307},{"start":60,"length":18,"messageText":"Cannot find module 'next/font/google' or its corresponding type declarations.","category":1,"code":2307}]]],"affectedFilesPendingEmit":[62,343,379,386,387,361,364,363,360,362,385,646,647,648,649,348,347,344,349,345,651,650,652,654,374,373,376,375,377,371,378,372,370,350,367,354,358,366,655,368,359,369,356,353,351,365,656,657,357,352,355,259,260,261,262,263,264,265,266,267,268,269,271,272,337,336,338,339,340,341,258,335,257,735,739,342,270,253],"version":"5.9.3"} \ No newline at end of file diff --git a/app/vite.config.ts b/app/vite.config.ts deleted file mode 100644 index 8b0f57b..0000000 --- a/app/vite.config.ts +++ /dev/null @@ -1,7 +0,0 @@ -import { defineConfig } from 'vite' -import react from '@vitejs/plugin-react' - -// https://vite.dev/config/ -export default defineConfig({ - plugins: [react()], -}) diff --git a/app/vitest.config.ts b/app/vitest.config.ts index 304ddfd..a85b288 100644 --- a/app/vitest.config.ts +++ b/app/vitest.config.ts @@ -1,8 +1,14 @@ import { defineConfig } from 'vitest/config' import react from '@vitejs/plugin-react' +import path from 'path' export default defineConfig({ plugins: [react()], + resolve: { + alias: { + '@': path.resolve(__dirname, './src'), + }, + }, test: { environment: 'jsdom', globals: true,