From 6aa71e31c444c49f9fe2efe524cfe2b1aee73c67 Mon Sep 17 00:00:00 2001 From: cerberus-ab Date: Sun, 9 Aug 2026 16:28:22 +0200 Subject: [PATCH 01/20] Refactor tsconfig --- apps/backend/package.json | 4 +- .../agent/llm/OllamaLocalEmbeddingProvider.ts | 11 +- .../src/agent/llm/OllamaLocalLlmProvider.ts | 13 +- apps/backend/tsconfig.json | 33 +-- apps/extension/package.json | 5 +- .../src/background/BackgroundWorker.ts | 6 +- apps/extension/tsconfig.json | 31 +- package-lock.json | 273 ++---------------- packages/contract/package.json | 2 + packages/contract/tsconfig.json | 21 +- packages/page-model/package.json | 5 +- .../src/collector/PageModelCollector.ts | 2 +- .../src/collector/extractors/context.ts | 4 +- .../src/collector/extractors/descriptor.ts | 2 +- .../collector/extractors/primitive/link.ts | 2 +- .../collector/extractors/primitive/role.ts | 2 +- .../collector/extractors/primitive/state.ts | 2 +- .../collector/extractors/primitive/text.ts | 2 +- .../collector/extractors/primitive/view.ts | 2 +- .../src/collector/importance/content.ts | 2 +- .../src/collector/importance/interactive.ts | 2 +- .../src/collector/importance/utils.ts | 2 +- packages/page-model/src/types/pageModel.ts | 4 +- packages/page-model/tsconfig.json | 25 +- 24 files changed, 105 insertions(+), 352 deletions(-) diff --git a/apps/backend/package.json b/apps/backend/package.json index f47c526..97e2472 100644 --- a/apps/backend/package.json +++ b/apps/backend/package.json @@ -20,6 +20,7 @@ "clean:dist": "rm -rf dist/", "clean:data": "rm -rf data/", "clean": "npm run clean:dist && npm run clean:data", + "typecheck": "tsc -p tsconfig.json --noEmit", "setup": "node scripts/quick-setup.js", "build": "npm run clean:dist && tsc -p tsconfig.json", "start": "node dist/server.js", @@ -36,8 +37,8 @@ "user-experience" ], "dependencies": { - "@flowforge/page-model": "*", "@flowforge/contract": "*", + "@flowforge/page-model": "*", "@lancedb/lancedb": "^0.27.1", "@langchain/core": "^1.1.35", "@langchain/ollama": "^1.2.6", @@ -51,6 +52,7 @@ "zod": "^4.3.6" }, "devDependencies": { + "@tsconfig/node22": "^22.0.5", "@types/cors": "^2.8.17", "@types/express": "^5.0.6", "@types/node": "^25.5.0", diff --git a/apps/backend/src/agent/llm/OllamaLocalEmbeddingProvider.ts b/apps/backend/src/agent/llm/OllamaLocalEmbeddingProvider.ts index 384ca81..e69dcba 100644 --- a/apps/backend/src/agent/llm/OllamaLocalEmbeddingProvider.ts +++ b/apps/backend/src/agent/llm/OllamaLocalEmbeddingProvider.ts @@ -1,4 +1,10 @@ import type { EmbeddingProvider } from '#self/types'; +import { z } from 'zod'; + +export const OllamaApiEmbedSchema = z.object({ + model: z.string(), + embeddings: z.array(z.array(z.number())), +}); export class OllamaLocalEmbeddingProvider implements EmbeddingProvider { private readonly baseUrl: string; @@ -34,8 +40,9 @@ export class OllamaLocalEmbeddingProvider implements EmbeddingProvider { keep_alive: '5m', }), }); - const json = await res.json(); + const body = await res.json(); + const data = OllamaApiEmbedSchema.parse(body); - return json.embeddings; + return data.embeddings; } } diff --git a/apps/backend/src/agent/llm/OllamaLocalLlmProvider.ts b/apps/backend/src/agent/llm/OllamaLocalLlmProvider.ts index 36efd3e..b41b56d 100644 --- a/apps/backend/src/agent/llm/OllamaLocalLlmProvider.ts +++ b/apps/backend/src/agent/llm/OllamaLocalLlmProvider.ts @@ -2,6 +2,13 @@ import type { BaseChatModel } from '@langchain/core/language_models/chat_models' import { ChatOllama } from '@langchain/ollama'; import type { ChatModelParams, EmbeddingProvider, LlmProvider, LlmProviderInfo } from '#self/types'; import { OllamaLocalEmbeddingProvider } from './OllamaLocalEmbeddingProvider.ts'; +import { z } from 'zod'; + +const OllamaApiTagsSchema = z.object({ + models: z.array(z.object({ + name: z.string(), + })), +}); export class OllamaLocalLlmProvider implements LlmProvider { private readonly baseUrl: string; @@ -35,8 +42,10 @@ export class OllamaLocalLlmProvider implements LlmProvider { if (!res.ok) { throw new Error('[LLM] Ollama Local is not serving'); } - const data = await res.json(); - if (!data.models?.some((m: any) => m.name === this.model)) { + const body = await res.json(); + const data = OllamaApiTagsSchema.parse(body); + + if (!data.models.some((m) => m.name === this.model)) { throw new Error(`[LLM] Model ${this.model} not found in Ollama Local`); } return true; diff --git a/apps/backend/tsconfig.json b/apps/backend/tsconfig.json index 6cd915b..c840e1e 100644 --- a/apps/backend/tsconfig.json +++ b/apps/backend/tsconfig.json @@ -1,28 +1,17 @@ { + "extends": ["@tsconfig/node22/tsconfig.json"], "compilerOptions": { - "target": "esnext", - "module": "nodenext", - "moduleResolution": "nodenext", "types": ["node"], - "moduleDetection": "force", - "strict": true, - "esModuleInterop": true, - "isolatedModules": true, - "skipLibCheck": true, - "forceConsistentCasingInFileNames": true, - "rewriteRelativeImportExtensions": true, - "verbatimModuleSyntax": true, + "resolveJsonModule": true, - "declaration": true, - "declarationMap": true, - "sourceMap": true, + "noImplicitOverride": true, "erasableSyntaxOnly": true, + "verbatimModuleSyntax": true, "noUncheckedIndexedAccess": true, - "noUncheckedSideEffectImports": true, - "noImplicitOverride": true, - "useDefineForClassFields": true, - "rootDir": "./src", - "outDir": "./dist", + "rewriteRelativeImportExtensions": true, + + "sourceMap": true, + "paths": { "#self/config": ["./src/config.ts"], "#self/types": ["./src/types/index.ts"], @@ -30,8 +19,10 @@ "#self/indexer": ["./src/indexer/index.ts"], "#self/analytics": ["./src/analytics/index.ts"], "#self/server": ["./src/server/index.ts"] - } + }, + "rootDir": "./src", + "outDir": "./dist" }, "include": ["src/**/*"], - "exclude": ["node_modules", "dist", "**/*.test.ts"] + "exclude": ["**/*.test.ts"] } diff --git a/apps/extension/package.json b/apps/extension/package.json index 17bc16c..bbb5f40 100644 --- a/apps/extension/package.json +++ b/apps/extension/package.json @@ -31,12 +31,13 @@ "user-experience" ], "dependencies": { - "@flowforge/page-model": "*", - "@flowforge/contract": "*" + "@flowforge/contract": "*", + "@flowforge/page-model": "*" }, "devDependencies": { "@crxjs/vite-plugin": "^2.4.0", "@preact/preset-vite": "^2.10.5", + "@tsconfig/vite-react": "^8.1.1", "@types/chrome": "^0.1.38", "concurrently": "^9.2.1", "express": "^5.2.1", diff --git a/apps/extension/src/background/BackgroundWorker.ts b/apps/extension/src/background/BackgroundWorker.ts index 953d233..af7b51f 100644 --- a/apps/extension/src/background/BackgroundWorker.ts +++ b/apps/extension/src/background/BackgroundWorker.ts @@ -10,7 +10,6 @@ import { type CollectPageModelMessageResponse, type GetPrevQuestionsMessage, type GetPrevQuestionsMessageResponse, - type GetSettingsMessage, type GetSettingsMessageResponse, type HighlightElementMessage, isGetSettingsMessage, @@ -48,7 +47,7 @@ export class BackgroundWorker { start(): void { this.unsubscribe = this.transport.addMessageListener((message: Message) => { if (isGetSettingsMessage(message)) { - return this.handleGetSettings(message); + return this.handleGetSettings(); } if (isUpdateSettingsMessage(message)) { return this.handleUpdateSettings(message); @@ -74,11 +73,10 @@ export class BackgroundWorker { /** * Retrieves extension settings from storage * - * @param message - Incoming background message * @returns A successful response containing the stored settings. * @throws Rethrows any error that occurs while reading settings storage. */ - private async handleGetSettings(message: GetSettingsMessage): Promise { + private async handleGetSettings(): Promise { try { const settings = await this.settingsStorage.get(); return { success: true, data: settings }; diff --git a/apps/extension/tsconfig.json b/apps/extension/tsconfig.json index 536d9e8..c7eceb4 100644 --- a/apps/extension/tsconfig.json +++ b/apps/extension/tsconfig.json @@ -1,32 +1,23 @@ { + "extends": [ + "@tsconfig/vite-react/tsconfig.json", + ], "compilerOptions": { - "target": "esnext", "lib": ["DOM", "DOM.Iterable", "ESNext"], - "types": ["chrome"], - "module": "esnext", - "moduleResolution": "bundler", - "moduleDetection": "force", - "allowArbitraryExtensions": true, + "types": ["chrome", "vite/client"], + "jsxImportSource": "preact", + "resolveJsonModule": true, + "noImplicitOverride": true, + "noUncheckedIndexedAccess": true, + "paths": { "#self/config": ["./src/config.ts"], "#self/types": ["./src/core/types/index.ts"], "#self/constants": ["./src/core/constants.ts"], "#self/*": ["./src/*"] - }, - "noEmit": true, - "strict": true, - "noUncheckedIndexedAccess": true, - "noUncheckedSideEffectImports": true, - "noImplicitOverride": true, - "isolatedModules": true, - "verbatimModuleSyntax": true, - "allowSyntheticDefaultImports": true, - "skipLibCheck": true, - "forceConsistentCasingInFileNames": true, - "jsx": "react-jsx", - "jsxImportSource": "preact" + } }, "include": ["src/**/*"], - "exclude": ["node_modules", "dist", "sandbox", "**/*.test.ts"] + "exclude": ["sandbox", "**/*.test.ts"] } diff --git a/package-lock.json b/package-lock.json index d07372d..65b5086 100644 --- a/package-lock.json +++ b/package-lock.json @@ -33,6 +33,7 @@ "zod": "^4.3.6" }, "devDependencies": { + "@tsconfig/node22": "^22.0.5", "@types/cors": "^2.8.17", "@types/express": "^5.0.6", "@types/node": "^25.5.0", @@ -52,6 +53,7 @@ "devDependencies": { "@crxjs/vite-plugin": "^2.4.0", "@preact/preset-vite": "^2.10.5", + "@tsconfig/vite-react": "^8.1.1", "@types/chrome": "^0.1.38", "concurrently": "^9.2.1", "express": "^5.2.1", @@ -1847,6 +1849,20 @@ "tslib": "^2.8.0" } }, + "node_modules/@tsconfig/node22": { + "version": "22.0.5", + "resolved": "https://registry.npmjs.org/@tsconfig/node22/-/node22-22.0.5.tgz", + "integrity": "sha512-hLf2ld+sYN/BtOJjHUWOk568dvjFQkHnLNa6zce25GIH+vxKfvTgm3qpaH6ToF5tu/NN0IH66s+Bb5wElHrLcw==", + "dev": true, + "license": "MIT" + }, + "node_modules/@tsconfig/vite-react": { + "version": "8.1.1", + "resolved": "https://registry.npmjs.org/@tsconfig/vite-react/-/vite-react-8.1.1.tgz", + "integrity": "sha512-TdLtRE9INt7aupEC2yhem6y4RN8T+B4oa2OUYsay0ioxSDl8Q4yaq0k2yc86Gb2BEHjKp4RUxgIzqOTk4IQ8dQ==", + "dev": true, + "license": "MIT" + }, "node_modules/@tybys/wasm-util": { "version": "0.10.1", "resolved": "https://registry.npmjs.org/@tybys/wasm-util/-/wasm-util-0.10.1.tgz", @@ -2154,20 +2170,6 @@ "url": "https://github.com/chalk/ansi-styles?sponsor=1" } }, - "node_modules/anymatch": { - "version": "3.1.3", - "resolved": "https://registry.npmjs.org/anymatch/-/anymatch-3.1.3.tgz", - "integrity": "sha512-KMReFUr0B4t+D+OBkjR3KYqvocp2XaSzO55UcB6mgQMd3KbcE+mWTyvVV7D/zsdEbNnV6acZUutkiHQXvTr1Rw==", - "dev": true, - "license": "ISC", - "dependencies": { - "normalize-path": "^3.0.0", - "picomatch": "^2.0.4" - }, - "engines": { - "node": ">= 8" - } - }, "node_modules/apache-arrow": { "version": "18.1.0", "resolved": "https://registry.npmjs.org/apache-arrow/-/apache-arrow-18.1.0.tgz", @@ -2216,16 +2218,6 @@ "node": ">=6" } }, - "node_modules/array-union": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/array-union/-/array-union-2.1.0.tgz", - "integrity": "sha512-HGyxoOTYUyCM6stUe6EJgnd4EoewAI7zMdfqO+kGjnlZmBDz/cR5pf8r/cR4Wq60sL/p0IkcjUEEPwS3GFrIyw==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=8" - } - }, "node_modules/babel-plugin-transform-hook-names": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/babel-plugin-transform-hook-names/-/babel-plugin-transform-hook-names-1.0.2.tgz", @@ -2269,19 +2261,6 @@ "node": ">=6.0.0" } }, - "node_modules/binary-extensions": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/binary-extensions/-/binary-extensions-2.3.0.tgz", - "integrity": "sha512-Ceh+7ox5qe7LJuLHoY0feh3pHuUDHAcRUeyL2VYghZwfpkNIy/+8Ocg0a3UuSoYzavmylwuLWQOf3hl0jjMMIw==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=8" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, "node_modules/body-parser": { "version": "2.2.2", "resolved": "https://registry.npmjs.org/body-parser/-/body-parser-2.2.2.tgz", @@ -2526,31 +2505,6 @@ "url": "https://github.com/chalk/chalk?sponsor=1" } }, - "node_modules/chokidar": { - "version": "3.6.0", - "resolved": "https://registry.npmjs.org/chokidar/-/chokidar-3.6.0.tgz", - "integrity": "sha512-7VT13fmjotKpGipCW9JEQAusEPE+Ei8nl6/g4FBAmIm0GOOLMua9NDDo/DWp0ZAxCr3cPq5ZpBqmPAQgDda2Pw==", - "dev": true, - "license": "MIT", - "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" - }, - "engines": { - "node": ">= 8.10.0" - }, - "funding": { - "url": "https://paulmillr.com/funding/" - }, - "optionalDependencies": { - "fsevents": "~2.3.2" - } - }, "node_modules/cli-boxes": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/cli-boxes/-/cli-boxes-3.0.0.tgz", @@ -2727,16 +2681,6 @@ "node": ">=12.17" } }, - "node_modules/commander": { - "version": "9.5.0", - "resolved": "https://registry.npmjs.org/commander/-/commander-9.5.0.tgz", - "integrity": "sha512-KRs7WVDKg86PWiuAqhDrAQnTXZKraVcCc6vFdL14qrZ/DcWwuRo7VoiYXalXO7S5GKpqYiVEwCbgFDfxNHKJBQ==", - "dev": true, - "license": "MIT", - "engines": { - "node": "^12.20.0 || >=14" - } - }, "node_modules/concurrently": { "version": "9.2.1", "resolved": "https://registry.npmjs.org/concurrently/-/concurrently-9.2.1.tgz", @@ -2988,19 +2932,6 @@ "node": ">=8" } }, - "node_modules/dir-glob": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/dir-glob/-/dir-glob-3.0.1.tgz", - "integrity": "sha512-WkrWp9GR4KXfKGYzOLmTuGVi1UWFfws377n9cc55/tb6DuqyF6pcQ5AbiHEshaDpY9v6oaSr2XCDidGmMwdzIA==", - "dev": true, - "license": "MIT", - "dependencies": { - "path-type": "^4.0.0" - }, - "engines": { - "node": ">=8" - } - }, "node_modules/dom-serializer": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/dom-serializer/-/dom-serializer-2.0.0.tgz", @@ -3496,19 +3427,6 @@ "node": ">= 0.4" } }, - "node_modules/get-tsconfig": { - "version": "4.14.0", - "resolved": "https://registry.npmjs.org/get-tsconfig/-/get-tsconfig-4.14.0.tgz", - "integrity": "sha512-yTb+8DXzDREzgvYmh6s9vHsSVCHeC0G3PI5bEXNBHtmshPnO+S5O7qgLEOn0I5QvMy6kpZN8K1NKGyilLb93wA==", - "dev": true, - "license": "MIT", - "dependencies": { - "resolve-pkg-maps": "^1.0.0" - }, - "funding": { - "url": "https://github.com/privatenumber/get-tsconfig?sponsor=1" - } - }, "node_modules/glob-parent": { "version": "5.1.2", "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-5.1.2.tgz", @@ -3522,27 +3440,6 @@ "node": ">= 6" } }, - "node_modules/globby": { - "version": "11.1.0", - "resolved": "https://registry.npmjs.org/globby/-/globby-11.1.0.tgz", - "integrity": "sha512-jhIXaOzy1sb8IyocaruWSn1TjmnBVs8Ayhcy83rmxNJ8q2uWKCAj3CnJY+KpGSXCueAPc0i05kVvVKtP1t9S3g==", - "dev": true, - "license": "MIT", - "dependencies": { - "array-union": "^2.1.0", - "dir-glob": "^3.0.1", - "fast-glob": "^3.2.9", - "ignore": "^5.2.0", - "merge2": "^1.4.1", - "slash": "^3.0.0" - }, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, "node_modules/gopd": { "version": "1.2.0", "resolved": "https://registry.npmjs.org/gopd/-/gopd-1.2.0.tgz", @@ -3641,16 +3538,6 @@ "url": "https://opencollective.com/express" } }, - "node_modules/ignore": { - "version": "5.3.2", - "resolved": "https://registry.npmjs.org/ignore/-/ignore-5.3.2.tgz", - "integrity": "sha512-hsBTNUqQTDwkWtcdYI2i06Y/nUBEsNEDJKjWdigLvegy8kDuJAS8uRlpkkcQpyEXL0Z/pjDy5HBmMjRCJ2gq+g==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">= 4" - } - }, "node_modules/inherits": { "version": "2.0.4", "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.4.tgz", @@ -3666,19 +3553,6 @@ "node": ">= 0.10" } }, - "node_modules/is-binary-path": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/is-binary-path/-/is-binary-path-2.1.0.tgz", - "integrity": "sha512-ZMERYes6pDydyuGidse7OsHxtbI7WVeUEozgR/g7rd0xUimYNlvZRE/K2MgZTjWy725IfelLeVcEM97mmtRGXw==", - "dev": true, - "license": "MIT", - "dependencies": { - "binary-extensions": "^2.0.0" - }, - "engines": { - "node": ">=8" - } - }, "node_modules/is-extglob": { "version": "2.1.1", "resolved": "https://registry.npmjs.org/is-extglob/-/is-extglob-2.1.1.tgz", @@ -4275,20 +4149,6 @@ "mustache": "bin/mustache" } }, - "node_modules/mylas": { - "version": "2.1.14", - "resolved": "https://registry.npmjs.org/mylas/-/mylas-2.1.14.tgz", - "integrity": "sha512-BzQguy9W9NJgoVn2mRWzbFrFWWztGCcng2QI9+41frfk+Athwgx3qhqhvStz7ExeUUu7Kzw427sNzHpEZNINog==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=16.0.0" - }, - "funding": { - "type": "github", - "url": "https://github.com/sponsors/raouldeheer" - } - }, "node_modules/nanoid": { "version": "3.3.11", "resolved": "https://registry.npmjs.org/nanoid/-/nanoid-3.3.11.tgz", @@ -4335,16 +4195,6 @@ "dev": true, "license": "MIT" }, - "node_modules/normalize-path": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/normalize-path/-/normalize-path-3.0.0.tgz", - "integrity": "sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=0.10.0" - } - }, "node_modules/nth-check": { "version": "2.1.1", "resolved": "https://registry.npmjs.org/nth-check/-/nth-check-2.1.1.tgz", @@ -4501,16 +4351,6 @@ "url": "https://opencollective.com/express" } }, - "node_modules/path-type": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/path-type/-/path-type-4.0.0.tgz", - "integrity": "sha512-gDKb8aZMDeD/tZWs9P6+q0J9Mwkdl6xMV8TjnGP3qJVJ06bdMgkbBlLU8IdfOsIsFz2BW1rNVT3XuNEl8zPAvw==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=8" - } - }, "node_modules/pathe": { "version": "2.0.3", "resolved": "https://registry.npmjs.org/pathe/-/pathe-2.0.3.tgz", @@ -4538,19 +4378,6 @@ "url": "https://github.com/sponsors/jonschlinkert" } }, - "node_modules/plimit-lit": { - "version": "1.6.1", - "resolved": "https://registry.npmjs.org/plimit-lit/-/plimit-lit-1.6.1.tgz", - "integrity": "sha512-B7+VDyb8Tl6oMJT9oSO2CW8XC/T4UcJGrwOVoNGwOQsQYhlpfajmrMj5xeejqaASq3V/EqThyOeATEOMuSEXiA==", - "dev": true, - "license": "MIT", - "dependencies": { - "queue-lit": "^1.5.1" - }, - "engines": { - "node": ">=12" - } - }, "node_modules/postcss": { "version": "8.5.9", "resolved": "https://registry.npmjs.org/postcss/-/postcss-8.5.9.tgz", @@ -4635,16 +4462,6 @@ "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/queue-lit": { - "version": "1.5.2", - "resolved": "https://registry.npmjs.org/queue-lit/-/queue-lit-1.5.2.tgz", - "integrity": "sha512-tLc36IOPeMAubu8BkW8YDBV+WyIgKlYU7zUNs0J5Vk9skSZ4JfGlPOqplP0aHdfv7HL0B2Pg6nwiq60Qc6M2Hw==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=12" - } - }, "node_modules/queue-microtask": { "version": "1.2.3", "resolved": "https://registry.npmjs.org/queue-microtask/-/queue-microtask-1.2.3.tgz", @@ -4700,19 +4517,6 @@ "node": ">=0.10.0" } }, - "node_modules/readdirp": { - "version": "3.6.0", - "resolved": "https://registry.npmjs.org/readdirp/-/readdirp-3.6.0.tgz", - "integrity": "sha512-hOS089on8RduqdbhvQ5Z37A0ESjsqz6qnRcffsMU3495FuTdqSm+7bhJ29JvIOsBDEEnan5DPu9t3To9VRlMzA==", - "dev": true, - "license": "MIT", - "dependencies": { - "picomatch": "^2.2.1" - }, - "engines": { - "node": ">=8.10.0" - } - }, "node_modules/reflect-metadata": { "version": "0.2.2", "resolved": "https://registry.npmjs.org/reflect-metadata/-/reflect-metadata-0.2.2.tgz", @@ -4729,16 +4533,6 @@ "node": ">=0.10.0" } }, - "node_modules/resolve-pkg-maps": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/resolve-pkg-maps/-/resolve-pkg-maps-1.0.0.tgz", - "integrity": "sha512-seS2Tj26TBVOC2NIc2rOe2y2ZO7efxITtLZcGSOnHHNOQ7CkiUBfw0Iw2ck6xkIhPwLhKNLS8BO+hEpngQlqzw==", - "dev": true, - "license": "MIT", - "funding": { - "url": "https://github.com/privatenumber/resolve-pkg-maps?sponsor=1" - } - }, "node_modules/reusify": { "version": "1.1.0", "resolved": "https://registry.npmjs.org/reusify/-/reusify-1.1.0.tgz", @@ -5020,16 +4814,6 @@ "integrity": "sha512-j7piyCjAeTDSjzTSQ7DokZtMNwNlEAyxqSZeCS+CXH7fJ4jx3FuJ/mTW3mE+6JLs4VJBbcll0Kjn+KXI5t21Iw==", "license": "MIT" }, - "node_modules/slash": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/slash/-/slash-3.0.0.tgz", - "integrity": "sha512-g9Q1haeby36OSStwb4ntCGGGaKsaVSjQ68fBxoQcutl5fS1vuY18H3wSt3jFyFtrkx+Kz0V1G85A4MyAdDMi2Q==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=8" - } - }, "node_modules/source-map": { "version": "0.7.6", "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.7.6.tgz", @@ -5218,28 +5002,6 @@ "tree-kill": "cli.js" } }, - "node_modules/tsc-alias": { - "version": "1.8.17", - "resolved": "https://registry.npmjs.org/tsc-alias/-/tsc-alias-1.8.17.tgz", - "integrity": "sha512-EIduCZHqbNwPm8BZYfq1aD7BQ697A4h6uSGMOFQfYGoQwfrYFTKwYfy9Bv42YxHkduVBcn9Zx0DkX111DKskyg==", - "dev": true, - "license": "MIT", - "dependencies": { - "chokidar": "^3.5.3", - "commander": "^9.0.0", - "get-tsconfig": "^4.10.0", - "globby": "^11.0.4", - "mylas": "^2.1.9", - "normalize-path": "^3.0.0", - "plimit-lit": "^1.2.6" - }, - "bin": { - "tsc-alias": "dist/bin/index.js" - }, - "engines": { - "node": ">=16.20.2" - } - }, "node_modules/tslib": { "version": "2.8.1", "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.8.1.tgz", @@ -5676,6 +5438,7 @@ "zod": "^4.3.6" }, "devDependencies": { + "@tsconfig/node22": "^22.0.5", "typescript": "^6.0.2" } }, @@ -5686,7 +5449,7 @@ "css-selector-generator": "^3.9.2" }, "devDependencies": { - "tsc-alias": "^1.8.17", + "@tsconfig/node22": "^22.0.5", "typescript": "^6.0.2" } }, diff --git a/packages/contract/package.json b/packages/contract/package.json index b319fba..fd32081 100644 --- a/packages/contract/package.json +++ b/packages/contract/package.json @@ -11,6 +11,7 @@ }, "scripts": { "clean": "rm -rf dist/", + "typecheck": "tsc -p tsconfig.json --noEmit", "build": "npm run clean && tsc -p tsconfig.json", "dev": "tsc -p tsconfig.json --watch" }, @@ -19,6 +20,7 @@ "zod": "^4.3.6" }, "devDependencies": { + "@tsconfig/node22": "^22.0.5", "typescript": "^6.0.2" } } diff --git a/packages/contract/tsconfig.json b/packages/contract/tsconfig.json index 84a88b6..1bf7bb4 100644 --- a/packages/contract/tsconfig.json +++ b/packages/contract/tsconfig.json @@ -1,23 +1,22 @@ { + "extends": ["@tsconfig/node22/tsconfig.json"], "compilerOptions": { - "target": "esnext", - "module": "nodenext", - "moduleResolution": "nodenext", - "moduleDetection": "force", - "strict": true, + "lib": ["DOM", "ES2022"], + + "isolatedModules": true, + "noImplicitOverride": true, + "verbatimModuleSyntax": true, "noUncheckedIndexedAccess": true, + "allowImportingTsExtensions": true, "rewriteRelativeImportExtensions": true, - "noImplicitOverride": true, - "esModuleInterop": true, - "skipLibCheck": true, - "resolveJsonModule": true, + "declaration": true, "declarationMap": true, "sourceMap": true, - "isolatedModules": true, + "rootDir": "./src", "outDir": "./dist" }, "include": ["src/**/*"], - "exclude": ["node_modules", "dist", "**/*.test.ts"] + "exclude": ["**/*.test.ts"] } diff --git a/packages/page-model/package.json b/packages/page-model/package.json index 8b336b4..42c5fde 100644 --- a/packages/page-model/package.json +++ b/packages/page-model/package.json @@ -11,14 +11,15 @@ }, "scripts": { "clean": "rm -rf dist/", - "build": "npm run clean && tsc -p tsconfig.json && tsc-alias -p tsconfig.json", + "typecheck": "tsc -p tsconfig.json --noEmit", + "build": "npm run clean && tsc -p tsconfig.json", "dev": "tsc -p tsconfig.json --watch" }, "dependencies": { "css-selector-generator": "^3.9.2" }, "devDependencies": { - "tsc-alias": "^1.8.17", + "@tsconfig/node22": "^22.0.5", "typescript": "^6.0.2" } } diff --git a/packages/page-model/src/collector/PageModelCollector.ts b/packages/page-model/src/collector/PageModelCollector.ts index 5c4b6ef..06a9533 100644 --- a/packages/page-model/src/collector/PageModelCollector.ts +++ b/packages/page-model/src/collector/PageModelCollector.ts @@ -1,4 +1,4 @@ -import type { BaseElement, ContentElement, InteractiveElement, PageBasics, PageModel } from '#self/types'; +import type { BaseElement, ContentElement, InteractiveElement, PageBasics, PageModel } from '../types/index.ts'; import { getElementLabels } from './extractors/primitive/label.ts'; import { getInteractiveRole, roleToInteractiveElementType } from './extractors/primitive/role.ts'; diff --git a/packages/page-model/src/collector/extractors/context.ts b/packages/page-model/src/collector/extractors/context.ts index cc2f54d..3cc4473 100644 --- a/packages/page-model/src/collector/extractors/context.ts +++ b/packages/page-model/src/collector/extractors/context.ts @@ -1,7 +1,7 @@ import { getElementAttrAriaLabelledBy } from './primitive/label.ts'; import { getContainerRole } from './primitive/role.ts'; -import type { ContainerElementRole, ElementContext } from '#self/types'; -import { normalizeText } from '#self/utils'; +import type { ContainerElementRole, ElementContext } from '../../types/index.ts'; +import { normalizeText } from '../../utils/index.ts'; // constants const CONTEXT_SECTION_NAME_MIN_LENGTH = 5; diff --git a/packages/page-model/src/collector/extractors/descriptor.ts b/packages/page-model/src/collector/extractors/descriptor.ts index f5359a0..e9c98fa 100644 --- a/packages/page-model/src/collector/extractors/descriptor.ts +++ b/packages/page-model/src/collector/extractors/descriptor.ts @@ -1,5 +1,5 @@ import { getElementBoundingBox } from './primitive/view.ts'; -import type { ElementDescriptor } from '#self/types'; +import type { ElementDescriptor } from '../../types/index.ts'; import getCssSelector from 'css-selector-generator'; /** diff --git a/packages/page-model/src/collector/extractors/primitive/link.ts b/packages/page-model/src/collector/extractors/primitive/link.ts index 8ac8566..ffd865e 100644 --- a/packages/page-model/src/collector/extractors/primitive/link.ts +++ b/packages/page-model/src/collector/extractors/primitive/link.ts @@ -1,4 +1,4 @@ -import type { InteractiveLink, InteractiveLinkType } from '#self/types'; +import type { InteractiveLink, InteractiveLinkType } from '../../../types/index.ts'; function getElementLinkType(href: string): InteractiveLinkType { if (!href || href.trim() === '') return 'unknown'; diff --git a/packages/page-model/src/collector/extractors/primitive/role.ts b/packages/page-model/src/collector/extractors/primitive/role.ts index f1be208..afee2dc 100644 --- a/packages/page-model/src/collector/extractors/primitive/role.ts +++ b/packages/page-model/src/collector/extractors/primitive/role.ts @@ -1,4 +1,4 @@ -import type { ContainerElementRole, InteractiveElementRole, InteractiveElementType } from '#self/types'; +import type { ContainerElementRole, InteractiveElementRole, InteractiveElementType } from '../../../types/index.ts'; // https://developer.mozilla.org/en-US/docs/Web/Accessibility/ARIA/Reference/Roles diff --git a/packages/page-model/src/collector/extractors/primitive/state.ts b/packages/page-model/src/collector/extractors/primitive/state.ts index a50ec79..1d5e279 100644 --- a/packages/page-model/src/collector/extractors/primitive/state.ts +++ b/packages/page-model/src/collector/extractors/primitive/state.ts @@ -1,4 +1,4 @@ -import type { InteractiveElementState } from '#self/types'; +import type { InteractiveElementState } from '../../../types/index.ts'; import { getElementBooleanAttribute } from './attr.ts'; diff --git a/packages/page-model/src/collector/extractors/primitive/text.ts b/packages/page-model/src/collector/extractors/primitive/text.ts index 4929f81..5e93cb6 100644 --- a/packages/page-model/src/collector/extractors/primitive/text.ts +++ b/packages/page-model/src/collector/extractors/primitive/text.ts @@ -1,4 +1,4 @@ -import { normalizeText } from '#self/utils'; +import { normalizeText } from '../../../utils/index.ts'; /** * Extracts normalized user-visible text from an element. diff --git a/packages/page-model/src/collector/extractors/primitive/view.ts b/packages/page-model/src/collector/extractors/primitive/view.ts index 5d464c8..5e84d9b 100644 --- a/packages/page-model/src/collector/extractors/primitive/view.ts +++ b/packages/page-model/src/collector/extractors/primitive/view.ts @@ -1,4 +1,4 @@ -import type { BoundingBox, Viewport } from '#self/types'; +import type { BoundingBox, Viewport } from '../../../types/index.ts'; /** * Check if element is visible diff --git a/packages/page-model/src/collector/importance/content.ts b/packages/page-model/src/collector/importance/content.ts index f41f8b7..8548cf5 100644 --- a/packages/page-model/src/collector/importance/content.ts +++ b/packages/page-model/src/collector/importance/content.ts @@ -1,4 +1,4 @@ -import type { ContentElement } from '#self/types'; +import type { ContentElement } from '../../types/index.ts'; import { getMaxImportanceScore, getMinImportanceScore, normalizeImportanceScore, readContextPath } from './utils.ts'; /** diff --git a/packages/page-model/src/collector/importance/interactive.ts b/packages/page-model/src/collector/importance/interactive.ts index 7a5710c..6f26b30 100644 --- a/packages/page-model/src/collector/importance/interactive.ts +++ b/packages/page-model/src/collector/importance/interactive.ts @@ -1,4 +1,4 @@ -import type { InteractiveElement } from '#self/types'; +import type { InteractiveElement } from '../../types/index.ts'; import { getMaxImportanceScore, getMinImportanceScore, normalizeImportanceScore, readContextPath } from './utils.ts'; /** diff --git a/packages/page-model/src/collector/importance/utils.ts b/packages/page-model/src/collector/importance/utils.ts index 03a2933..0de7c36 100644 --- a/packages/page-model/src/collector/importance/utils.ts +++ b/packages/page-model/src/collector/importance/utils.ts @@ -1,4 +1,4 @@ -import type { ContainerElementRole } from '#self/types'; +import type { ContainerElementRole } from '../../types/index.ts'; /** * Returns the minimum possible score by weights diff --git a/packages/page-model/src/types/pageModel.ts b/packages/page-model/src/types/pageModel.ts index fec2f38..c590e70 100644 --- a/packages/page-model/src/types/pageModel.ts +++ b/packages/page-model/src/types/pageModel.ts @@ -134,10 +134,10 @@ export interface InteractiveElement extends BaseElement { kind: 'interactive'; type: InteractiveElementType; role: InteractiveElementRole; - text?: string; + text: string | undefined; labels: ElementLabel[]; state: InteractiveElementState; - link?: InteractiveLink; // for links only + link: InteractiveLink | undefined; // for links only inViewport: boolean; aboveTheFold: boolean; } diff --git a/packages/page-model/tsconfig.json b/packages/page-model/tsconfig.json index d7cc2fb..f30a14f 100644 --- a/packages/page-model/tsconfig.json +++ b/packages/page-model/tsconfig.json @@ -1,33 +1,22 @@ { + "extends": ["@tsconfig/node22/tsconfig.json"], "compilerOptions": { - "target": "esnext", - "module": "nodenext", - "moduleResolution": "nodenext", "lib": ["DOM", "DOM.Iterable", "ES2022"], - "types": ["chrome"], - "paths": { - "#self/types": ["./src/types/index.ts"], - "#self/utils": ["./src/utils/index.ts"] - }, - "strict": true, - "noUncheckedIndexedAccess": true, - "noImplicitOverride": true, + "isolatedModules": true, + "noImplicitOverride": true, "verbatimModuleSyntax": true, - "resolveJsonModule": true, - "allowSyntheticDefaultImports": true, - "esModuleInterop": true, - "skipLibCheck": true, - "forceConsistentCasingInFileNames": true, + "noUncheckedIndexedAccess": true, "allowImportingTsExtensions": true, "rewriteRelativeImportExtensions": true, - "moduleDetection": "force", + "declaration": true, "declarationMap": true, "sourceMap": true, + "rootDir": "./src", "outDir": "./dist" }, "include": ["src/**/*"], - "exclude": ["node_modules", "dist", "**/*.test.ts"] + "exclude": ["**/*.test.ts"] } From 25a8137273a9bfd30e9e2da1ddaa96391cad4803 Mon Sep 17 00:00:00 2001 From: cerberus-ab Date: Sun, 9 Aug 2026 18:32:17 +0200 Subject: [PATCH 02/20] Add linting, init CI --- .github/workflows/ci.yml | 59 + apps/backend/eslint.config.mjs | 23 + apps/backend/package.json | 8 +- apps/backend/src/agent/WebNavigationAgent.ts | 2 +- .../src/agent/tools/ToolGetPageSummary.ts | 2 +- .../AbstractDocumentTransformer.ts | 2 +- apps/backend/src/server/routes/query.ts | 2 +- apps/backend/src/server/routes/search.ts | 2 +- apps/extension/eslint.config.mjs | 41 + apps/extension/package.json | 6 + .../adapters/embed/EmbedTransportService.ts | 2 +- apps/extension/src/core/services/ApiClient.ts | 4 +- package-lock.json | 1138 ++++++++++++++++- package.json | 10 +- packages/contract/eslint.config.mjs | 22 + packages/contract/package.json | 8 +- packages/page-model/eslint.config.mjs | 22 + packages/page-model/package.json | 8 +- .../src/collector/PageModelCollector.ts | 5 +- .../collector/extractors/primitive/link.ts | 2 +- 20 files changed, 1333 insertions(+), 35 deletions(-) create mode 100644 .github/workflows/ci.yml create mode 100644 apps/backend/eslint.config.mjs create mode 100644 apps/extension/eslint.config.mjs create mode 100644 packages/contract/eslint.config.mjs create mode 100644 packages/page-model/eslint.config.mjs diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml new file mode 100644 index 0000000..bf00839 --- /dev/null +++ b/.github/workflows/ci.yml @@ -0,0 +1,59 @@ +name: CI + +on: + pull_request: + branches: + - master + +jobs: + checks: + runs-on: ubuntu-latest + steps: + - uses: actions/checkout@v5 + - uses: actions/setup-node@v5 + with: + node-version: 22 + cache: npm + - run: npm ci + - run: npm run lint -ws + + packages: + runs-on: ubuntu-latest + steps: + - uses: actions/checkout@v5 + - uses: actions/setup-node@v5 + with: + node-version: 22 + cache: npm + - run: npm ci + - run: npm run typecheck -w @flowforge/page-model + - run: npm run build -w @flowforge/page-model + - run: npm run typecheck -w @flowforge/contract + - run: npm run build -w @flowforge/contract + - uses: actions/upload-artifact@v4 + with: + name: packages-build + path: | + packages/page-model/dist + packages/contract/dist + + apps: + runs-on: ubuntu-latest + needs: + - checks + - packages + steps: + - uses: actions/checkout@v5 + - uses: actions/setup-node@v5 + with: + node-version: 22 + cache: npm + - run: npm ci + - uses: actions/download-artifact@v4 + with: + name: packages-build + path: packages + - run: npm run typecheck -w @flowforge/backend + - run: npm run typecheck -w @flowforge/extension + - run: npm run build -w @flowforge/backend + - run: npm run build -w @flowforge/extension diff --git a/apps/backend/eslint.config.mjs b/apps/backend/eslint.config.mjs new file mode 100644 index 0000000..37f0527 --- /dev/null +++ b/apps/backend/eslint.config.mjs @@ -0,0 +1,23 @@ +import js from '@eslint/js'; +import globals from 'globals'; +import tseslint from 'typescript-eslint'; + +export default tseslint.config( + { + ignores: ['dist/**', 'data/**'], + }, + js.configs.recommended, + ...tseslint.configs.recommended, + { + files: ['src/**/*.ts', 'scripts/**/*.{js,ts}'], + languageOptions: { + globals: { + ...globals.node, + ...globals.es2022, + }, + }, + rules: { + 'no-undef': 'off', + }, + }, +); diff --git a/apps/backend/package.json b/apps/backend/package.json index 97e2472..74334f4 100644 --- a/apps/backend/package.json +++ b/apps/backend/package.json @@ -24,6 +24,8 @@ "setup": "node scripts/quick-setup.js", "build": "npm run clean:dist && tsc -p tsconfig.json", "start": "node dist/server.js", + "lint": "eslint .", + "lint:fix": "eslint . --fix", "dev": "tsc -p tsconfig.json --watch" }, "keywords": [ @@ -52,10 +54,14 @@ "zod": "^4.3.6" }, "devDependencies": { + "@eslint/js": "^10.0.1", "@tsconfig/node22": "^22.0.5", "@types/cors": "^2.8.17", "@types/express": "^5.0.6", "@types/node": "^25.5.0", - "typescript": "^6.0.2" + "eslint": "^10.8.1", + "globals": "^17.9.0", + "typescript": "^6.0.2", + "typescript-eslint": "^8.66.0" } } diff --git a/apps/backend/src/agent/WebNavigationAgent.ts b/apps/backend/src/agent/WebNavigationAgent.ts index 9947cf9..436c389 100644 --- a/apps/backend/src/agent/WebNavigationAgent.ts +++ b/apps/backend/src/agent/WebNavigationAgent.ts @@ -107,7 +107,7 @@ export class WebNavigationAgent { try { const parsed = JSON.parse(aiMessageContent); agentResult = AgentResultSchema.parse(parsed); - } catch (error) { + } catch { if (this.verbose) { console.log(`[Agent] The execution result is not valid JSON, invoking structured prompt...`); } diff --git a/apps/backend/src/agent/tools/ToolGetPageSummary.ts b/apps/backend/src/agent/tools/ToolGetPageSummary.ts index 8350718..932e0b7 100644 --- a/apps/backend/src/agent/tools/ToolGetPageSummary.ts +++ b/apps/backend/src/agent/tools/ToolGetPageSummary.ts @@ -21,7 +21,7 @@ export class ToolGetPageSummary extends AbstractCallableTool { this.elementsInteractionsLimit = params.elementsInteractionsLimit; } - override async callFn(ctx: PageContextProvider, query: string): Promise { + override async callFn(ctx: PageContextProvider): Promise { // Get top headings const sampleHeadings = ctx.pageModel.content .filter((el) => el.type === 'heading') diff --git a/apps/backend/src/indexer/transformers/AbstractDocumentTransformer.ts b/apps/backend/src/indexer/transformers/AbstractDocumentTransformer.ts index 4b1317c..b524c5e 100644 --- a/apps/backend/src/indexer/transformers/AbstractDocumentTransformer.ts +++ b/apps/backend/src/indexer/transformers/AbstractDocumentTransformer.ts @@ -1,4 +1,4 @@ -import type { IndexableDocument, DocumentTransformer, DocumentMetadata, DocumentType } from '#self/types'; +import type { IndexableDocument, DocumentTransformer } from '#self/types'; import { randomUUID } from 'crypto'; import type { BaseElement, PageModel } from '@flowforge/page-model'; diff --git a/apps/backend/src/server/routes/query.ts b/apps/backend/src/server/routes/query.ts index 18110cc..bcceaf4 100644 --- a/apps/backend/src/server/routes/query.ts +++ b/apps/backend/src/server/routes/query.ts @@ -13,7 +13,7 @@ interface QueryHandlerDeps { export function createQueryHandler({ indexer, agent, analytics }: QueryHandlerDeps) { return async function handleQuery( - req: Request<{}, QueryResponse | ErrorResponse, QueryRequest>, + req: Request, QueryResponse | ErrorResponse, QueryRequest>, res: Response, ): Promise { try { diff --git a/apps/backend/src/server/routes/search.ts b/apps/backend/src/server/routes/search.ts index 090d20a..a72936b 100644 --- a/apps/backend/src/server/routes/search.ts +++ b/apps/backend/src/server/routes/search.ts @@ -8,7 +8,7 @@ interface SearchHandlerDeps { export function createSearchHandler({ indexer }: SearchHandlerDeps) { return async function handleSearch( - req: Request<{}, SearchResponse, SearchRequest>, + req: Request, SearchResponse, SearchRequest>, res: Response | ErrorResponse>, ): Promise { try { diff --git a/apps/extension/eslint.config.mjs b/apps/extension/eslint.config.mjs new file mode 100644 index 0000000..a388ae6 --- /dev/null +++ b/apps/extension/eslint.config.mjs @@ -0,0 +1,41 @@ +import js from '@eslint/js'; +import globals from 'globals'; +import tseslint from 'typescript-eslint'; + +export default tseslint.config( + { + ignores: ['dist/**', 'sandbox/**'], + }, + js.configs.recommended, + ...tseslint.configs.recommended, + { + files: ['src/**/*.{ts,tsx}'], + languageOptions: { + globals: { + ...globals.browser, + ...globals.es2022, + chrome: 'readonly', + }, + parserOptions: { + ecmaFeatures: { + jsx: true, + }, + }, + }, + rules: { + 'no-undef': 'off', + }, + }, + { + files: ['scripts/**/*.{js,ts}', 'vite.config.*.ts'], + languageOptions: { + globals: { + ...globals.node, + ...globals.es2022, + }, + }, + rules: { + 'no-undef': 'off', + }, + }, +); diff --git a/apps/extension/package.json b/apps/extension/package.json index bbb5f40..d35342f 100644 --- a/apps/extension/package.json +++ b/apps/extension/package.json @@ -17,6 +17,8 @@ "install:chrome": "node scripts/install-chrome.js", "dev:chrome": "vite build --config vite.config.chrome.ts --watch", "dev:embed": "vite build --config vite.config.embed.ts --watch", + "lint": "eslint .", + "lint:fix": "eslint . --fix", "dev": "concurrently \"npm run dev:chrome\" \"npm run dev:embed\"", "sandbox": "node sandbox/server.js" }, @@ -36,14 +38,18 @@ }, "devDependencies": { "@crxjs/vite-plugin": "^2.4.0", + "@eslint/js": "^10.0.1", "@preact/preset-vite": "^2.10.5", "@tsconfig/vite-react": "^8.1.1", "@types/chrome": "^0.1.38", "concurrently": "^9.2.1", + "eslint": "^10.8.1", "express": "^5.2.1", + "globals": "^17.9.0", "marked": "^18.0.2", "preact": "^10.29.1", "typescript": "^6.0.2", + "typescript-eslint": "^8.66.0", "vite": "^8.0.8" } } diff --git a/apps/extension/src/adapters/embed/EmbedTransportService.ts b/apps/extension/src/adapters/embed/EmbedTransportService.ts index 01c83ab..de411f0 100644 --- a/apps/extension/src/adapters/embed/EmbedTransportService.ts +++ b/apps/extension/src/adapters/embed/EmbedTransportService.ts @@ -10,7 +10,7 @@ export class EmbedTransportService implements TransportService { return 1; // not applicable } - async getSenderHostname(_senderId: number): Promise { + async getSenderHostname(): Promise { return window.location.hostname; } diff --git a/apps/extension/src/core/services/ApiClient.ts b/apps/extension/src/core/services/ApiClient.ts index c662256..f5109f1 100644 --- a/apps/extension/src/core/services/ApiClient.ts +++ b/apps/extension/src/core/services/ApiClient.ts @@ -38,10 +38,10 @@ export class HttpApiClient implements ApiClient { clearTimeout(timeoutId); if (error instanceof DOMException && error.name === 'AbortError') { - throw new Error('Request timeout. Please try again.'); + throw new Error('Request timeout. Please try again.', { cause: error }); } if (error instanceof TypeError) { - throw new Error('Network error. Make sure the backend server is running.'); + throw new Error('Network error. Make sure the backend server is running.', { cause: error }); } throw error instanceof Error ? error : new Error('Unknown error'); } diff --git a/package-lock.json b/package-lock.json index 65b5086..01d4529 100644 --- a/package-lock.json +++ b/package-lock.json @@ -33,11 +33,15 @@ "zod": "^4.3.6" }, "devDependencies": { + "@eslint/js": "^10.0.1", "@tsconfig/node22": "^22.0.5", "@types/cors": "^2.8.17", "@types/express": "^5.0.6", "@types/node": "^25.5.0", - "typescript": "^6.0.2" + "eslint": "^10.8.1", + "globals": "^17.9.0", + "typescript": "^6.0.2", + "typescript-eslint": "^8.66.0" }, "engines": { "node": ">=22" @@ -52,14 +56,18 @@ }, "devDependencies": { "@crxjs/vite-plugin": "^2.4.0", + "@eslint/js": "^10.0.1", "@preact/preset-vite": "^2.10.5", "@tsconfig/vite-react": "^8.1.1", "@types/chrome": "^0.1.38", "concurrently": "^9.2.1", + "eslint": "^10.8.1", "express": "^5.2.1", + "globals": "^17.9.0", "marked": "^18.0.2", "preact": "^10.29.1", "typescript": "^6.0.2", + "typescript-eslint": "^8.66.0", "vite": "^8.0.8" }, "engines": { @@ -944,6 +952,134 @@ "node": ">=18" } }, + "node_modules/@eslint-community/eslint-utils": { + "version": "4.10.1", + "resolved": "https://registry.npmjs.org/@eslint-community/eslint-utils/-/eslint-utils-4.10.1.tgz", + "integrity": "sha512-cuadcxVFE8sDK6iWJbs8Sn0av2Nrh2QSGQhVlBW9AaAHqHwjWsZHT8LJ4hFGPh7ASBV2deFdM7H/DPjulmh8rg==", + "dev": true, + "license": "MIT", + "dependencies": { + "eslint-visitor-keys": "^3.4.3" + }, + "engines": { + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + }, + "funding": { + "url": "https://opencollective.com/eslint" + }, + "peerDependencies": { + "eslint": "^6.0.0 || ^7.0.0 || >=8.0.0" + } + }, + "node_modules/@eslint-community/eslint-utils/node_modules/eslint-visitor-keys": { + "version": "3.4.3", + "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-3.4.3.tgz", + "integrity": "sha512-wpc+LXeiyiisxPlEkUzU6svyS1frIO3Mgxj1fdy7Pm8Ygzguax2N3Fa/D/ag1WqbOprdI+uY6wMUl8/a2G+iag==", + "dev": true, + "license": "Apache-2.0", + "engines": { + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + }, + "funding": { + "url": "https://opencollective.com/eslint" + } + }, + "node_modules/@eslint-community/regexpp": { + "version": "4.12.2", + "resolved": "https://registry.npmjs.org/@eslint-community/regexpp/-/regexpp-4.12.2.tgz", + "integrity": "sha512-EriSTlt5OC9/7SXkRSCAhfSxxoSUgBm33OH+IkwbdpgoqsSsUg7y3uh+IICI/Qg4BBWr3U2i39RpmycbxMq4ew==", + "dev": true, + "license": "MIT", + "engines": { + "node": "^12.0.0 || ^14.0.0 || >=16.0.0" + } + }, + "node_modules/@eslint/config-array": { + "version": "0.23.5", + "resolved": "https://registry.npmjs.org/@eslint/config-array/-/config-array-0.23.5.tgz", + "integrity": "sha512-Y3kKLvC1dvTOT+oGlqNQ1XLqK6D1HU2YXPc52NmAlJZbMMWDzGYXMiPRJ8TYD39muD/OTjlZmNJ4ib7dvSrMBA==", + "dev": true, + "license": "Apache-2.0", + "dependencies": { + "@eslint/object-schema": "^3.0.5", + "debug": "^4.3.1", + "minimatch": "^10.2.4" + }, + "engines": { + "node": "^20.19.0 || ^22.13.0 || >=24" + } + }, + "node_modules/@eslint/config-helpers": { + "version": "0.7.0", + "resolved": "https://registry.npmjs.org/@eslint/config-helpers/-/config-helpers-0.7.0.tgz", + "integrity": "sha512-DObd/KKUsU+FaFv4PLxSRenpXfQWmPXXP3pPZ6/K1PCrMu2vQpMDMuQe/BqYeoLcz8ro0bVDF1RxOJgfVEdhUw==", + "dev": true, + "license": "Apache-2.0", + "dependencies": { + "@eslint/core": "^1.2.1" + }, + "engines": { + "node": "^20.19.0 || ^22.13.0 || >=24" + } + }, + "node_modules/@eslint/core": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/@eslint/core/-/core-1.2.1.tgz", + "integrity": "sha512-MwcE1P+AZ4C6DWlpin/OmOA54mmIZ/+xZuJiQd4SyB29oAJjN30UW9wkKNptW2ctp4cEsvhlLY/CsQ1uoHDloQ==", + "dev": true, + "license": "Apache-2.0", + "dependencies": { + "@types/json-schema": "^7.0.15" + }, + "engines": { + "node": "^20.19.0 || ^22.13.0 || >=24" + } + }, + "node_modules/@eslint/js": { + "version": "10.0.1", + "resolved": "https://registry.npmjs.org/@eslint/js/-/js-10.0.1.tgz", + "integrity": "sha512-zeR9k5pd4gxjZ0abRoIaxdc7I3nDktoXZk2qOv9gCNWx3mVwEn32VRhyLaRsDiJjTs0xq/T8mfPtyuXu7GWBcA==", + "dev": true, + "license": "MIT", + "engines": { + "node": "^20.19.0 || ^22.13.0 || >=24" + }, + "funding": { + "url": "https://eslint.org/donate" + }, + "peerDependencies": { + "eslint": "^10.0.0" + }, + "peerDependenciesMeta": { + "eslint": { + "optional": true + } + } + }, + "node_modules/@eslint/object-schema": { + "version": "3.0.5", + "resolved": "https://registry.npmjs.org/@eslint/object-schema/-/object-schema-3.0.5.tgz", + "integrity": "sha512-vqTaUEgxzm+YDSdElad6PiRoX4t8VGDjCtt05zn4nU810UIx/uNEV7/lZJ6KwFThKZOzOxzXy48da+No7HZaMw==", + "dev": true, + "license": "Apache-2.0", + "engines": { + "node": "^20.19.0 || ^22.13.0 || >=24" + } + }, + "node_modules/@eslint/plugin-kit": { + "version": "0.7.2", + "resolved": "https://registry.npmjs.org/@eslint/plugin-kit/-/plugin-kit-0.7.2.tgz", + "integrity": "sha512-+CNAzxglkrpNf/kKywqQfk74QjtceuOE7Qm+AF8miRvPF/wmmK5+OJOgVh3AVTT3RP2mH3+FOaxlE5v72owk0A==", + "dev": true, + "license": "Apache-2.0", + "dependencies": { + "@eslint/core": "^1.2.1", + "levn": "^0.4.1" + }, + "engines": { + "node": "^20.19.0 || ^22.13.0 || >=24" + } + }, "node_modules/@flowforge/backend": { "resolved": "apps/backend", "link": true @@ -960,6 +1096,72 @@ "resolved": "packages/page-model", "link": true }, + "node_modules/@humanfs/core": { + "version": "0.19.2", + "resolved": "https://registry.npmjs.org/@humanfs/core/-/core-0.19.2.tgz", + "integrity": "sha512-UhXNm+CFMWcbChXywFwkmhqjs3PRCmcSa/hfBgLIb7oQ5HNb1wS0icWsGtSAUNgefHeI+eBrA8I1fxmbHsGdvA==", + "dev": true, + "license": "Apache-2.0", + "dependencies": { + "@humanfs/types": "^0.15.0" + }, + "engines": { + "node": ">=18.18.0" + } + }, + "node_modules/@humanfs/node": { + "version": "0.16.8", + "resolved": "https://registry.npmjs.org/@humanfs/node/-/node-0.16.8.tgz", + "integrity": "sha512-gE1eQNZ3R++kTzFUpdGlpmy8kDZD/MLyHqDwqjkVQI0JMdI1D51sy1H958PNXYkM2rAac7e5/CnIKZrHtPh3BQ==", + "dev": true, + "license": "Apache-2.0", + "dependencies": { + "@humanfs/core": "^0.19.2", + "@humanfs/types": "^0.15.0", + "@humanwhocodes/retry": "^0.4.0" + }, + "engines": { + "node": ">=18.18.0" + } + }, + "node_modules/@humanfs/types": { + "version": "0.15.0", + "resolved": "https://registry.npmjs.org/@humanfs/types/-/types-0.15.0.tgz", + "integrity": "sha512-ZZ1w0aoQkwuUuC7Yf+7sdeaNfqQiiLcSRbfI08oAxqLtpXQr9AIVX7Ay7HLDuiLYAaFPu8oBYNq/QIi9URHJ3Q==", + "dev": true, + "license": "Apache-2.0", + "engines": { + "node": ">=18.18.0" + } + }, + "node_modules/@humanwhocodes/module-importer": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/@humanwhocodes/module-importer/-/module-importer-1.0.1.tgz", + "integrity": "sha512-bxveV4V8v5Yb4ncFTT3rPSgZBOpCkjfK0y4oVVVJwIuDVBRMDXrPyXRL988i5ap9m9bnyEEjWfm5WkBmtffLfA==", + "dev": true, + "license": "Apache-2.0", + "engines": { + "node": ">=12.22" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/nzakas" + } + }, + "node_modules/@humanwhocodes/retry": { + "version": "0.4.3", + "resolved": "https://registry.npmjs.org/@humanwhocodes/retry/-/retry-0.4.3.tgz", + "integrity": "sha512-bV0Tgo9K4hfPCek+aMAn81RppFKv2ySDQeMoSZuvTASywNTnVJCArCZE2FWqpvIatKu7VMRLWlR1EazvVhDyhQ==", + "dev": true, + "license": "Apache-2.0", + "engines": { + "node": ">=18.18" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/nzakas" + } + }, "node_modules/@jridgewell/gen-mapping": { "version": "0.3.13", "resolved": "https://registry.npmjs.org/@jridgewell/gen-mapping/-/gen-mapping-0.3.13.tgz", @@ -1930,6 +2132,13 @@ "@types/node": "*" } }, + "node_modules/@types/esrecurse": { + "version": "4.3.1", + "resolved": "https://registry.npmjs.org/@types/esrecurse/-/esrecurse-4.3.1.tgz", + "integrity": "sha512-xJBAbDifo5hpffDBuHl0Y8ywswbiAp/Wi7Y/GtAgSlZyIABppyurxVueOPE8LUQOxdlgi6Zqce7uoEpqNTeiUw==", + "dev": true, + "license": "MIT" + }, "node_modules/@types/estree": { "version": "1.0.8", "resolved": "https://registry.npmjs.org/@types/estree/-/estree-1.0.8.tgz", @@ -2050,6 +2259,236 @@ "integrity": "sha512-7gqG38EyHgyP1S+7+xomFtL+ZNHcKv6DwNaCZmJmo1vgMugyF3TCnXVg4t1uk89mLNwnLtnY3TpOpCOyp1/xHQ==", "license": "MIT" }, + "node_modules/@typescript-eslint/eslint-plugin": { + "version": "8.66.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/eslint-plugin/-/eslint-plugin-8.66.0.tgz", + "integrity": "sha512-p088eaGrzYz1s+7cov0aMOCkNGTJlVxF4jgubf28c8L0Cv9Rloj8YBHnv4hXLq6IIEE1AsjNWavO+k+8kP2Y0A==", + "dev": true, + "license": "MIT", + "dependencies": { + "@eslint-community/regexpp": "^4.12.2", + "@typescript-eslint/scope-manager": "8.66.0", + "@typescript-eslint/type-utils": "8.66.0", + "@typescript-eslint/utils": "8.66.0", + "@typescript-eslint/visitor-keys": "8.66.0", + "ignore": "^7.0.5", + "natural-compare": "^1.4.0", + "ts-api-utils": "^2.5.0" + }, + "engines": { + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" + }, + "peerDependencies": { + "@typescript-eslint/parser": "^8.66.0", + "eslint": "^8.57.0 || ^9.0.0 || ^10.0.0", + "typescript": ">=4.8.4 <6.1.0" + } + }, + "node_modules/@typescript-eslint/eslint-plugin/node_modules/ignore": { + "version": "7.0.6", + "resolved": "https://registry.npmjs.org/ignore/-/ignore-7.0.6.tgz", + "integrity": "sha512-BAg6QkE8W+TuQLrrw0Ugr7HegXduRuuj8/ti2kSOc+jz1dmx8/WNcjr6XGnq5YpDWxFwwaavqD0+jIUOKelTsw==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 4" + } + }, + "node_modules/@typescript-eslint/parser": { + "version": "8.66.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/parser/-/parser-8.66.0.tgz", + "integrity": "sha512-X6ypGChaWYk6PBtUg2BwuTZEFFcHJAtGTVJ9/lCTOufhZ4i9fNolQNnktq+kkMCwMj7V8Svsq7+TxSDslmhE0g==", + "dev": true, + "license": "MIT", + "dependencies": { + "@typescript-eslint/scope-manager": "8.66.0", + "@typescript-eslint/types": "8.66.0", + "@typescript-eslint/typescript-estree": "8.66.0", + "@typescript-eslint/visitor-keys": "8.66.0", + "debug": "^4.4.3" + }, + "engines": { + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" + }, + "peerDependencies": { + "eslint": "^8.57.0 || ^9.0.0 || ^10.0.0", + "typescript": ">=4.8.4 <6.1.0" + } + }, + "node_modules/@typescript-eslint/project-service": { + "version": "8.66.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/project-service/-/project-service-8.66.0.tgz", + "integrity": "sha512-7MthGPTt4BP69lSryqpqq8HQqxuzynssckL/jyDyk3+TNMQ3y2jFWkptCrktWvBrP+EH787Nl5N5Qpw7WZg+5g==", + "dev": true, + "license": "MIT", + "dependencies": { + "@typescript-eslint/tsconfig-utils": "^8.66.0", + "@typescript-eslint/types": "^8.66.0", + "debug": "^4.4.3" + }, + "engines": { + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" + }, + "peerDependencies": { + "typescript": ">=4.8.4 <6.1.0" + } + }, + "node_modules/@typescript-eslint/scope-manager": { + "version": "8.66.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/scope-manager/-/scope-manager-8.66.0.tgz", + "integrity": "sha512-8TGcH25j9zqJ/IULB/ppyhRvxA8QYfFEZ7nfbg6/BN9spDgb8fPWQXlE5l8TWBL50EtUx007uZ1o9VOwrq2/9g==", + "dev": true, + "license": "MIT", + "dependencies": { + "@typescript-eslint/types": "8.66.0", + "@typescript-eslint/visitor-keys": "8.66.0" + }, + "engines": { + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" + } + }, + "node_modules/@typescript-eslint/tsconfig-utils": { + "version": "8.66.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/tsconfig-utils/-/tsconfig-utils-8.66.0.tgz", + "integrity": "sha512-9D5gLYZG4rOjcoag8MQ/fWI8WqA9wcPDyOGyWtWFhvM1lHRbliqUSPIY5J3zqCU1tvSwzXxnnjhQhz5Ne7mJ4g==", + "dev": true, + "license": "MIT", + "engines": { + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" + }, + "peerDependencies": { + "typescript": ">=4.8.4 <6.1.0" + } + }, + "node_modules/@typescript-eslint/type-utils": { + "version": "8.66.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/type-utils/-/type-utils-8.66.0.tgz", + "integrity": "sha512-LG2dWfjZQQp0ADtAu/EWJVayefGL2UEZ3CDeI44D9v3rXB/WYUqE/jpO28KrEKul5AySrmI+Zh1v6v+xW2U9+g==", + "dev": true, + "license": "MIT", + "dependencies": { + "@typescript-eslint/types": "8.66.0", + "@typescript-eslint/typescript-estree": "8.66.0", + "@typescript-eslint/utils": "8.66.0", + "debug": "^4.4.3", + "ts-api-utils": "^2.5.0" + }, + "engines": { + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" + }, + "peerDependencies": { + "eslint": "^8.57.0 || ^9.0.0 || ^10.0.0", + "typescript": ">=4.8.4 <6.1.0" + } + }, + "node_modules/@typescript-eslint/types": { + "version": "8.66.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/types/-/types-8.66.0.tgz", + "integrity": "sha512-H6gcYaSDOyvL3AD/jHUtUFo2jqGgn/F6nuyuZSu0QTesxL+cP4dQoIMrODRofuJC09g64+WgZ6tE19Y1N2YIFQ==", + "dev": true, + "license": "MIT", + "engines": { + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" + } + }, + "node_modules/@typescript-eslint/typescript-estree": { + "version": "8.66.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/typescript-estree/-/typescript-estree-8.66.0.tgz", + "integrity": "sha512-8/x4INiiQb10jGgXYD7116/zQ+OL84ZIFn0za68wwFHCanT/VLbBEroWht8RV8fn0/ZCAoazHLQgwUC0UQcDfg==", + "dev": true, + "license": "MIT", + "dependencies": { + "@typescript-eslint/project-service": "8.66.0", + "@typescript-eslint/tsconfig-utils": "8.66.0", + "@typescript-eslint/types": "8.66.0", + "@typescript-eslint/visitor-keys": "8.66.0", + "debug": "^4.4.3", + "minimatch": "^10.2.2", + "semver": "^7.7.3", + "tinyglobby": "^0.2.15", + "ts-api-utils": "^2.5.0" + }, + "engines": { + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" + }, + "peerDependencies": { + "typescript": ">=4.8.4 <6.1.0" + } + }, + "node_modules/@typescript-eslint/utils": { + "version": "8.66.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/utils/-/utils-8.66.0.tgz", + "integrity": "sha512-jasearZPolBw5NJNYGMwxzHMF83niVWmMU1VdHzG1CyfI2VS7f7nZltnKtHcg20hW+7Uo5GfK4MeDPoU3qI8EA==", + "dev": true, + "license": "MIT", + "dependencies": { + "@eslint-community/eslint-utils": "^4.9.1", + "@typescript-eslint/scope-manager": "8.66.0", + "@typescript-eslint/types": "8.66.0", + "@typescript-eslint/typescript-estree": "8.66.0" + }, + "engines": { + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" + }, + "peerDependencies": { + "eslint": "^8.57.0 || ^9.0.0 || ^10.0.0", + "typescript": ">=4.8.4 <6.1.0" + } + }, + "node_modules/@typescript-eslint/visitor-keys": { + "version": "8.66.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/visitor-keys/-/visitor-keys-8.66.0.tgz", + "integrity": "sha512-dkKR8q+lKciskj1Y3vthHktl+3cMLWGyVUP23bRiPZ5O9BRT++4EqDDV+TVeIKBL1VXVEqrJlz8MYbcnvJcAlg==", + "dev": true, + "license": "MIT", + "dependencies": { + "@typescript-eslint/types": "8.66.0", + "eslint-visitor-keys": "^5.0.0" + }, + "engines": { + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" + } + }, "node_modules/@webcomponents/custom-elements": { "version": "1.6.0", "resolved": "https://registry.npmjs.org/@webcomponents/custom-elements/-/custom-elements-1.6.0.tgz", @@ -2083,6 +2522,16 @@ "node": ">=0.4.0" } }, + "node_modules/acorn-jsx": { + "version": "5.3.2", + "resolved": "https://registry.npmjs.org/acorn-jsx/-/acorn-jsx-5.3.2.tgz", + "integrity": "sha512-rq9s+JNhf0IChjtDXxllJ7g41oZk5SlXtp0LHwyA5cejwn7vKmKp4pPri6YEePv2PU65sAsegbXtIinmDFDXgQ==", + "dev": true, + "license": "MIT", + "peerDependencies": { + "acorn": "^6.0.0 || ^7.0.0 || ^8.0.0" + } + }, "node_modules/acorn-walk": { "version": "8.3.5", "resolved": "https://registry.npmjs.org/acorn-walk/-/acorn-walk-8.3.5.tgz", @@ -2096,6 +2545,23 @@ "node": ">=0.4.0" } }, + "node_modules/ajv": { + "version": "6.15.0", + "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.15.0.tgz", + "integrity": "sha512-fgFx7Hfoq60ytK2c7DhnF8jIvzYgOMxfugjLOSMHjLIPgenqa7S7oaagATUq99mV6IYvN2tRmC0wnTYX6iPbMw==", + "dev": true, + "license": "MIT", + "dependencies": { + "fast-deep-equal": "^3.1.1", + "fast-json-stable-stringify": "^2.0.0", + "json-schema-traverse": "^0.4.1", + "uri-js": "^4.2.2" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/epoberezkin" + } + }, "node_modules/ansi-align": { "version": "3.0.1", "resolved": "https://registry.npmjs.org/ansi-align/-/ansi-align-3.0.1.tgz", @@ -2228,6 +2694,16 @@ "@babel/core": "^7.12.10" } }, + "node_modules/balanced-match": { + "version": "4.0.4", + "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-4.0.4.tgz", + "integrity": "sha512-BLrgEcRTwX2o6gGxGOCNyMvGSp35YofuYzw9h1IMTRmKqttAZZVU67bdb9Pr2vUHA8+j3i2tJfjO6C6+4myGTA==", + "dev": true, + "license": "MIT", + "engines": { + "node": "18 || 20 || >=22" + } + }, "node_modules/base64-js": { "version": "1.5.1", "resolved": "https://registry.npmjs.org/base64-js/-/base64-js-1.5.1.tgz", @@ -2326,17 +2802,30 @@ "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/braces": { - "version": "3.0.3", - "resolved": "https://registry.npmjs.org/braces/-/braces-3.0.3.tgz", - "integrity": "sha512-yQbXgO/OSZVD2IsiLlro+7Hf6Q18EJrKSEsdoMzKePKXct3gvD8oLcOQdIzGupr5Fj+EDe8gO/lxc1BzfMpxvA==", + "node_modules/brace-expansion": { + "version": "5.0.9", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-5.0.9.tgz", + "integrity": "sha512-ScQ4IuvIEF1TMlP7Zt+vjJ//9zlPb2SDcxWxM3bk8s6t6GGdJ7KO1dCcTidOPJKePW30LE/2cT7wCyPho9/Wxg==", "dev": true, "license": "MIT", "dependencies": { - "fill-range": "^7.1.1" + "balanced-match": "^4.0.2" }, "engines": { - "node": ">=8" + "node": "20 || >=22" + } + }, + "node_modules/braces": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/braces/-/braces-3.0.3.tgz", + "integrity": "sha512-yQbXgO/OSZVD2IsiLlro+7Hf6Q18EJrKSEsdoMzKePKXct3gvD8oLcOQdIzGupr5Fj+EDe8gO/lxc1BzfMpxvA==", + "dev": true, + "license": "MIT", + "dependencies": { + "fill-range": "^7.1.1" + }, + "engines": { + "node": ">=8" } }, "node_modules/browserslist": { @@ -2851,6 +3340,21 @@ "url": "https://opencollective.com/express" } }, + "node_modules/cross-spawn": { + "version": "7.0.6", + "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-7.0.6.tgz", + "integrity": "sha512-uV2QOWP2nWzsy2aMp8aRibhi9dlzF5Hgh5SHaB9OiTGEyDTiJJyx0uy51QXdyWbtAHNua4XJzUKca3OzKUd3vA==", + "dev": true, + "license": "MIT", + "dependencies": { + "path-key": "^3.1.0", + "shebang-command": "^2.0.0", + "which": "^2.0.1" + }, + "engines": { + "node": ">= 8" + } + }, "node_modules/css-select": { "version": "5.2.2", "resolved": "https://registry.npmjs.org/css-select/-/css-select-5.2.2.tgz", @@ -2913,6 +3417,13 @@ "node": ">=0.10.0" } }, + "node_modules/deep-is": { + "version": "0.1.4", + "resolved": "https://registry.npmjs.org/deep-is/-/deep-is-0.1.4.tgz", + "integrity": "sha512-oIPzksmTg4/MriiaYGO+okXDT7ztn/w3Eptv/+gSIdMdKsJo0u4CfYNFJPy+4SKMuCqGw2wxnA+URMg3t8a/bQ==", + "dev": true, + "license": "MIT" + }, "node_modules/depd": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/depd/-/depd-2.0.0.tgz", @@ -3084,9 +3595,9 @@ "license": "MIT" }, "node_modules/es-object-atoms": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/es-object-atoms/-/es-object-atoms-1.1.1.tgz", - "integrity": "sha512-FGgH2h8zKNim9ljj7dankFPcICIK9Cp5bm+c2gQSYePhpaG5+esrLODihIorn+Pe6FGJzWhXQotPv73jTaldXA==", + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/es-object-atoms/-/es-object-atoms-1.1.2.tgz", + "integrity": "sha512-HWcBoN6NileqtSydK2FqHbS/LoDd2pqrnQHLyJzBj4kOp/ky2MWMN694xOfkK8/SnUsW2DH7EfyVlydKCsm1Zw==", "license": "MIT", "dependencies": { "es-errors": "^1.3.0" @@ -3155,6 +3666,177 @@ "integrity": "sha512-NiSupZ4OeuGwr68lGIeym/ksIZMJodUGOSCZ/FSnTxcrekbvqrgdUxlJOMpijaKZVjAJrWrGs/6Jy8OMuyj9ow==", "license": "MIT" }, + "node_modules/escape-string-regexp": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-4.0.0.tgz", + "integrity": "sha512-TtpcNJ3XAzx3Gq8sWRzJaVajRs0uVxA2YAkdb1jm2YkPz4G6egUFAyA3n5vtEIZefPk5Wa4UXbKuS5fKkJWdgA==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/eslint": { + "version": "10.8.1", + "resolved": "https://registry.npmjs.org/eslint/-/eslint-10.8.1.tgz", + "integrity": "sha512-wqA7W2jbsC/BnV9Iv1UZpKVFkO1AdNoSmYW8NWG4HNOBbkAMvIqDZ27pI2f07dqn583NcIC44ckjAcOXDL1QbQ==", + "dev": true, + "license": "MIT", + "workspaces": [ + "packages/*" + ], + "dependencies": { + "@eslint-community/eslint-utils": "^4.8.0", + "@eslint-community/regexpp": "^4.12.2", + "@eslint/config-array": "^0.23.5", + "@eslint/config-helpers": "^0.7.0", + "@eslint/core": "^1.2.1", + "@eslint/plugin-kit": "^0.7.2", + "@humanfs/node": "^0.16.6", + "@humanwhocodes/module-importer": "^1.0.1", + "@humanwhocodes/retry": "^0.4.2", + "@types/estree": "^1.0.6", + "ajv": "^6.14.0", + "cross-spawn": "^7.0.6", + "debug": "^4.3.2", + "escape-string-regexp": "^4.0.0", + "eslint-scope": "^9.1.2", + "eslint-visitor-keys": "^5.0.1", + "espree": "^11.2.0", + "esquery": "^1.7.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", + "minimatch": "^10.2.5", + "natural-compare": "^1.4.0", + "optionator": "^0.9.3" + }, + "bin": { + "eslint": "bin/eslint.js" + }, + "engines": { + "node": "^20.19.0 || ^22.13.0 || >=24" + }, + "funding": { + "url": "https://eslint.org/donate" + }, + "peerDependencies": { + "jiti": "*" + }, + "peerDependenciesMeta": { + "jiti": { + "optional": true + } + } + }, + "node_modules/eslint-scope": { + "version": "9.1.2", + "resolved": "https://registry.npmjs.org/eslint-scope/-/eslint-scope-9.1.2.tgz", + "integrity": "sha512-xS90H51cKw0jltxmvmHy2Iai1LIqrfbw57b79w/J7MfvDfkIkFZ+kj6zC3BjtUwh150HsSSdxXZcsuv72miDFQ==", + "dev": true, + "license": "BSD-2-Clause", + "dependencies": { + "@types/esrecurse": "^4.3.1", + "@types/estree": "^1.0.8", + "esrecurse": "^4.3.0", + "estraverse": "^5.2.0" + }, + "engines": { + "node": "^20.19.0 || ^22.13.0 || >=24" + }, + "funding": { + "url": "https://opencollective.com/eslint" + } + }, + "node_modules/eslint-visitor-keys": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-5.0.1.tgz", + "integrity": "sha512-tD40eHxA35h0PEIZNeIjkHoDR4YjjJp34biM0mDvplBe//mB+IHCqHDGV7pxF+7MklTvighcCPPZC7ynWyjdTA==", + "dev": true, + "license": "Apache-2.0", + "engines": { + "node": "^20.19.0 || ^22.13.0 || >=24" + }, + "funding": { + "url": "https://opencollective.com/eslint" + } + }, + "node_modules/eslint/node_modules/glob-parent": { + "version": "6.0.2", + "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-6.0.2.tgz", + "integrity": "sha512-XxwI8EOhVQgWp6iDL+3b0r86f4d6AX6zSU55HfB4ydCEuXLXc5FcYeOu+nnGftS4TEju/11rt4KJPTMgbfmv4A==", + "dev": true, + "license": "ISC", + "dependencies": { + "is-glob": "^4.0.3" + }, + "engines": { + "node": ">=10.13.0" + } + }, + "node_modules/espree": { + "version": "11.2.0", + "resolved": "https://registry.npmjs.org/espree/-/espree-11.2.0.tgz", + "integrity": "sha512-7p3DrVEIopW1B1avAGLuCSh1jubc01H2JHc8B4qqGblmg5gI9yumBgACjWo4JlIc04ufug4xJ3SQI8HkS/Rgzw==", + "dev": true, + "license": "BSD-2-Clause", + "dependencies": { + "acorn": "^8.16.0", + "acorn-jsx": "^5.3.2", + "eslint-visitor-keys": "^5.0.1" + }, + "engines": { + "node": "^20.19.0 || ^22.13.0 || >=24" + }, + "funding": { + "url": "https://opencollective.com/eslint" + } + }, + "node_modules/esquery": { + "version": "1.7.0", + "resolved": "https://registry.npmjs.org/esquery/-/esquery-1.7.0.tgz", + "integrity": "sha512-Ap6G0WQwcU/LHsvLwON1fAQX9Zp0A2Y6Y/cJBl9r/JbW90Zyg4/zbG6zzKa2OTALELarYHmKu0GhpM5EO+7T0g==", + "dev": true, + "license": "BSD-3-Clause", + "dependencies": { + "estraverse": "^5.1.0" + }, + "engines": { + "node": ">=0.10" + } + }, + "node_modules/esrecurse": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/esrecurse/-/esrecurse-4.3.0.tgz", + "integrity": "sha512-KmfKL3b6G+RXvP8N1vr3Tq1kL/oCFgn2NYXEtqP8/L3pKapUA4G8cFVaoF3SU323CD4XypR/ffioHmkti6/Tag==", + "dev": true, + "license": "BSD-2-Clause", + "dependencies": { + "estraverse": "^5.2.0" + }, + "engines": { + "node": ">=4.0" + } + }, + "node_modules/estraverse": { + "version": "5.3.0", + "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-5.3.0.tgz", + "integrity": "sha512-MMdARuVEQziNTeJD8DgMqmhwR11BRQ/cBP+pLtYdSTnf3MIO8fFeiINEbX36ZdNlfU/7A9f3gUw49B3oQsvwBA==", + "dev": true, + "license": "BSD-2-Clause", + "engines": { + "node": ">=4.0" + } + }, "node_modules/estree-walker": { "version": "2.0.2", "resolved": "https://registry.npmjs.org/estree-walker/-/estree-walker-2.0.2.tgz", @@ -3162,6 +3844,16 @@ "dev": true, "license": "MIT" }, + "node_modules/esutils": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/esutils/-/esutils-2.0.3.tgz", + "integrity": "sha512-kVscqXk4OCp68SZ0dkgEKVi6/8ij300KBWTJq32P/dYeWTSwK41WyTxalN1eRmA5Z9UU/LX9D7FWSmV9SAYx6g==", + "dev": true, + "license": "BSD-2-Clause", + "engines": { + "node": ">=0.10.0" + } + }, "node_modules/etag": { "version": "1.8.1", "resolved": "https://registry.npmjs.org/etag/-/etag-1.8.1.tgz", @@ -3220,6 +3912,13 @@ "url": "https://opencollective.com/express" } }, + "node_modules/fast-deep-equal": { + "version": "3.1.3", + "resolved": "https://registry.npmjs.org/fast-deep-equal/-/fast-deep-equal-3.1.3.tgz", + "integrity": "sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q==", + "dev": true, + "license": "MIT" + }, "node_modules/fast-glob": { "version": "3.3.3", "resolved": "https://registry.npmjs.org/fast-glob/-/fast-glob-3.3.3.tgz", @@ -3237,6 +3936,20 @@ "node": ">=8.6.0" } }, + "node_modules/fast-json-stable-stringify": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/fast-json-stable-stringify/-/fast-json-stable-stringify-2.1.0.tgz", + "integrity": "sha512-lhd/wF+Lk98HZoTCtlVraHtfh5XYijIjalXck7saUtuanSDyLMxnHhSXEDJqHxD7msR8D0uCmqlkwjCV8xvwHw==", + "dev": true, + "license": "MIT" + }, + "node_modules/fast-levenshtein": { + "version": "2.0.6", + "resolved": "https://registry.npmjs.org/fast-levenshtein/-/fast-levenshtein-2.0.6.tgz", + "integrity": "sha512-DCXu6Ifhqcks7TZKY3Hxp3y6qphY5SJZmrWMDrKcERSOXWQdMhU9Ig/PYrzyw/ul9jOIyh0N4M0tbC5hodg8dw==", + "dev": true, + "license": "MIT" + }, "node_modules/fastq": { "version": "1.20.1", "resolved": "https://registry.npmjs.org/fastq/-/fastq-1.20.1.tgz", @@ -3247,6 +3960,19 @@ "reusify": "^1.0.4" } }, + "node_modules/file-entry-cache": { + "version": "8.0.0", + "resolved": "https://registry.npmjs.org/file-entry-cache/-/file-entry-cache-8.0.0.tgz", + "integrity": "sha512-XXTUwCvisa5oacNGRP9SfNtYBNAMi+RPwBFmblZEF7N7swHYQS6/Zfk7SRwx4D5j3CH211YNRco1DEMNVfZCnQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "flat-cache": "^4.0.0" + }, + "engines": { + "node": ">=16.0.0" + } + }, "node_modules/fill-range": { "version": "7.1.1", "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-7.1.1.tgz", @@ -3294,6 +4020,37 @@ "node": ">=4.0.0" } }, + "node_modules/find-up": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/find-up/-/find-up-5.0.0.tgz", + "integrity": "sha512-78/PXT1wlLLDgTzDs7sjq9hzz0vXD+zn+7wypEe4fXQxCmdmqfGsEPQxmiCSQI3ajFV91bVSsvNtrJRiW6nGng==", + "dev": true, + "license": "MIT", + "dependencies": { + "locate-path": "^6.0.0", + "path-exists": "^4.0.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/flat-cache": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/flat-cache/-/flat-cache-4.0.1.tgz", + "integrity": "sha512-f7ccFPK3SXFHpx15UIGyRJ/FJQctuKZ0zVuN3frBo4HnK3cay9VEW0R6yPYFHC0AgqhukPzKjq22t5DmAyqGyw==", + "dev": true, + "license": "MIT", + "dependencies": { + "flatted": "^3.2.9", + "keyv": "^4.5.4" + }, + "engines": { + "node": ">=16" + } + }, "node_modules/flatbuffers": { "version": "24.12.23", "resolved": "https://registry.npmjs.org/flatbuffers/-/flatbuffers-24.12.23.tgz", @@ -3301,6 +4058,13 @@ "license": "Apache-2.0", "peer": true }, + "node_modules/flatted": { + "version": "3.4.4", + "resolved": "https://registry.npmjs.org/flatted/-/flatted-3.4.4.tgz", + "integrity": "sha512-5+ybhBZANEJxaH3X5evAFatUxLfEHSr7n6kYJ+1Qd0mUqr4eu9gIf6GDbWHf8RJijHrjjO8G+la14SlL2SeS1Q==", + "dev": true, + "license": "ISC" + }, "node_modules/forwarded": { "version": "0.2.0", "resolved": "https://registry.npmjs.org/forwarded/-/forwarded-0.2.0.tgz", @@ -3440,6 +4204,19 @@ "node": ">= 6" } }, + "node_modules/globals": { + "version": "17.9.0", + "resolved": "https://registry.npmjs.org/globals/-/globals-17.9.0.tgz", + "integrity": "sha512-m/MvAW61QVU5VDNF1Vj8axt016h8w7L5TU1e9zlab7XIttAT2YAlCwl75K1fOqvMM9apmD7lbCIRhpfkhmxhCg==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=18" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, "node_modules/gopd": { "version": "1.2.0", "resolved": "https://registry.npmjs.org/gopd/-/gopd-1.2.0.tgz", @@ -3481,9 +4258,9 @@ } }, "node_modules/hasown": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/hasown/-/hasown-2.0.2.tgz", - "integrity": "sha512-0hJU9SCPvmMzIBdZFqNPXWa6dqh7WdH0cII9y+CyS8rG3nL48Bclra9HmKhVVUHyPWNH5Y7xDwAB7bfgSjkUMQ==", + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/hasown/-/hasown-2.0.4.tgz", + "integrity": "sha512-T2UbfbBEF32wiepXIsMlTW9+dDYC6wMh/t/vYA4tuOMKqWz/n3vr1NFSxQiyP+zk2mXsoMA/i/7qV6LKut1t1A==", "license": "MIT", "dependencies": { "function-bind": "^1.1.2" @@ -3538,6 +4315,26 @@ "url": "https://opencollective.com/express" } }, + "node_modules/ignore": { + "version": "5.3.2", + "resolved": "https://registry.npmjs.org/ignore/-/ignore-5.3.2.tgz", + "integrity": "sha512-hsBTNUqQTDwkWtcdYI2i06Y/nUBEsNEDJKjWdigLvegy8kDuJAS8uRlpkkcQpyEXL0Z/pjDy5HBmMjRCJ2gq+g==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 4" + } + }, + "node_modules/imurmurhash": { + "version": "0.1.4", + "resolved": "https://registry.npmjs.org/imurmurhash/-/imurmurhash-0.1.4.tgz", + "integrity": "sha512-JmXMZ6wuvDmLiHEml9ykzqO6lwFbof0GG4IkcGaENdCRDDmMVnny7s5HsIgHCbaq0w2MyPhDqkhTUgS2LU2PHA==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=0.8.19" + } + }, "node_modules/inherits": { "version": "2.0.4", "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.4.tgz", @@ -3613,6 +4410,13 @@ "integrity": "sha512-hvpoI6korhJMnej285dSg6nu1+e6uxs7zG3BYAm5byqDsgJNWwxzM6z6iZiAgQR4TJ30JmBTOwqZUw3WlyH3AQ==", "license": "MIT" }, + "node_modules/isexe": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/isexe/-/isexe-2.0.0.tgz", + "integrity": "sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw==", + "dev": true, + "license": "ISC" + }, "node_modules/js-tiktoken": { "version": "1.0.21", "resolved": "https://registry.npmjs.org/js-tiktoken/-/js-tiktoken-1.0.21.tgz", @@ -3651,6 +4455,27 @@ "node": ">=0.8" } }, + "node_modules/json-buffer": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/json-buffer/-/json-buffer-3.0.1.tgz", + "integrity": "sha512-4bV5BfR2mqfQTJm+V5tPPdf+ZpuhiIvTuAB5g8kcrXOZpTT/QwwVRWBywX1ozr6lEuPdbHxwaJlm9G6mI2sfSQ==", + "dev": true, + "license": "MIT" + }, + "node_modules/json-schema-traverse": { + "version": "0.4.1", + "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-0.4.1.tgz", + "integrity": "sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg==", + "dev": true, + "license": "MIT" + }, + "node_modules/json-stable-stringify-without-jsonify": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/json-stable-stringify-without-jsonify/-/json-stable-stringify-without-jsonify-1.0.1.tgz", + "integrity": "sha512-Bdboy+l7tA3OGW6FjyFHWkP5LuByj1Tk33Ljyq0axyzdk9//JSi2u3fP1QSmd1KNwq6VOKYGlAu87CisVir6Pw==", + "dev": true, + "license": "MIT" + }, "node_modules/json5": { "version": "2.2.3", "resolved": "https://registry.npmjs.org/json5/-/json5-2.2.3.tgz", @@ -3677,6 +4502,16 @@ "graceful-fs": "^4.1.6" } }, + "node_modules/keyv": { + "version": "4.5.4", + "resolved": "https://registry.npmjs.org/keyv/-/keyv-4.5.4.tgz", + "integrity": "sha512-oxVHkHR/EJf2CNXnWxRLW6mg7JyCCUcG0DtEGmL2ctUo1PNTin1PUil+r/+4r5MpVgC/fn1kjsx7mjSujKqIpw==", + "dev": true, + "license": "MIT", + "dependencies": { + "json-buffer": "3.0.1" + } + }, "node_modules/kolorist": { "version": "1.8.0", "resolved": "https://registry.npmjs.org/kolorist/-/kolorist-1.8.0.tgz", @@ -3754,6 +4589,20 @@ "uuid": "dist/bin/uuid" } }, + "node_modules/levn": { + "version": "0.4.1", + "resolved": "https://registry.npmjs.org/levn/-/levn-0.4.1.tgz", + "integrity": "sha512-+bT2uH4E5LGE7h/n3evcS/sQlJXCpIp6ym8OWJ5eV6+67Dsql/LaaT7qJBAt2rzfoa/5QBGBhxDix1dMt2kQKQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "prelude-ls": "^1.2.1", + "type-check": "~0.4.0" + }, + "engines": { + "node": ">= 0.8.0" + } + }, "node_modules/lightningcss": { "version": "1.32.0", "resolved": "https://registry.npmjs.org/lightningcss/-/lightningcss-1.32.0.tgz", @@ -4015,6 +4864,22 @@ "url": "https://opencollective.com/parcel" } }, + "node_modules/locate-path": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-6.0.0.tgz", + "integrity": "sha512-iPZK6eYjbxRu3uB4/WZ3EsEIMJFMqAoopl3R+zuq0UjcAm/MO6KCweDgPfP3elTztoKP3KtnVHxTn2NHBSDVUw==", + "dev": true, + "license": "MIT", + "dependencies": { + "p-locate": "^5.0.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, "node_modules/lodash.camelcase": { "version": "4.3.0", "resolved": "https://registry.npmjs.org/lodash.camelcase/-/lodash.camelcase-4.3.0.tgz", @@ -4134,6 +4999,22 @@ "url": "https://opencollective.com/express" } }, + "node_modules/minimatch": { + "version": "10.2.6", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-10.2.6.tgz", + "integrity": "sha512-vpLQEs+VLCr1nU0BXS07maYoFwlDAH0gngQuuttxIwutDFEMHq2blX+8vpgxDdK3J1PwjCJiep77OitTZ4Ll1A==", + "dev": true, + "license": "BlueOak-1.0.0", + "dependencies": { + "brace-expansion": "^5.0.8" + }, + "engines": { + "node": "18 || 20 || >=22" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, "node_modules/ms": { "version": "2.1.3", "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.3.tgz", @@ -4168,6 +5049,13 @@ "node": "^10 || ^12 || ^13.7 || ^14 || >=15.0.1" } }, + "node_modules/natural-compare": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/natural-compare/-/natural-compare-1.4.0.tgz", + "integrity": "sha512-OWND8ei3VtNC9h7V60qff3SVobHr996CTwgxubgyQYEpg290h9J0buyECNNJexkFm5sOajh5G116RYA1c8ZMSw==", + "dev": true, + "license": "MIT" + }, "node_modules/negotiator": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/negotiator/-/negotiator-1.0.0.tgz", @@ -4280,6 +5168,24 @@ } } }, + "node_modules/optionator": { + "version": "0.9.4", + "resolved": "https://registry.npmjs.org/optionator/-/optionator-0.9.4.tgz", + "integrity": "sha512-6IpQ7mKUxRcZNLIObR0hz7lxsapSSIYNZJwXPGeF0mTVqGKFIXj1DQcMoT22S3ROcLyY/rz0PWaWZ9ayWmad9g==", + "dev": true, + "license": "MIT", + "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" + }, + "engines": { + "node": ">= 0.8.0" + } + }, "node_modules/p-finally": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/p-finally/-/p-finally-1.0.0.tgz", @@ -4289,6 +5195,38 @@ "node": ">=4" } }, + "node_modules/p-limit": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-3.1.0.tgz", + "integrity": "sha512-TYOanM3wGwNGsZN2cVTYPArw454xnXj5qmWF1bEoAc4+cU/ol7GVh7odevjp1FNHduHc3KZMcFduxU5Xc6uJRQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "yocto-queue": "^0.1.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/p-locate": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-5.0.0.tgz", + "integrity": "sha512-LaNjtRWUBY++zB5nE/NwcaoMylSPk+S+ZHNB1TzdbMJMny6dynpAGt7X/tl/QYq3TIeE6nxHppbo2LGymrG5Pw==", + "dev": true, + "license": "MIT", + "dependencies": { + "p-limit": "^3.0.2" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, "node_modules/p-queue": { "version": "6.6.2", "resolved": "https://registry.npmjs.org/p-queue/-/p-queue-6.6.2.tgz", @@ -4341,6 +5279,26 @@ "node": ">= 0.8" } }, + "node_modules/path-exists": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-4.0.0.tgz", + "integrity": "sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=8" + } + }, + "node_modules/path-key": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/path-key/-/path-key-3.1.1.tgz", + "integrity": "sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=8" + } + }, "node_modules/path-to-regexp": { "version": "8.4.1", "resolved": "https://registry.npmjs.org/path-to-regexp/-/path-to-regexp-8.4.1.tgz", @@ -4418,6 +5376,16 @@ "url": "https://opencollective.com/preact" } }, + "node_modules/prelude-ls": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/prelude-ls/-/prelude-ls-1.2.1.tgz", + "integrity": "sha512-vkcDPrRZo1QZLbn5RLGPpg/WmIQ65qoWWhcGKf/b5eplkkarX0m9z8ppCat4mlOqUsWpyNuYgO3VRyrYHSzX5g==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 0.8.0" + } + }, "node_modules/prettier": { "version": "3.8.1", "resolved": "https://registry.npmjs.org/prettier/-/prettier-3.8.1.tgz", @@ -4447,6 +5415,16 @@ "node": ">= 0.10" } }, + "node_modules/punycode": { + "version": "2.3.1", + "resolved": "https://registry.npmjs.org/punycode/-/punycode-2.3.1.tgz", + "integrity": "sha512-vYt7UD1U9Wg6138shLtLOvdAu+8DsC/ilFtEVHcH+wydcSpNE20AfSOduf6MkRFahL5FY7X1oU7nKVZFtfq8Fg==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=6" + } + }, "node_modules/qs": { "version": "6.15.0", "resolved": "https://registry.npmjs.org/qs/-/qs-6.15.0.tgz", @@ -4713,6 +5691,29 @@ "integrity": "sha512-E5LDX7Wrp85Kil5bhZv46j8jOeboKq5JMmYM3gVGdGH8xFpPWXUMsNrlODCrkoxMEeNi/XZIwuRvY4XNwYMJpw==", "license": "ISC" }, + "node_modules/shebang-command": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/shebang-command/-/shebang-command-2.0.0.tgz", + "integrity": "sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA==", + "dev": true, + "license": "MIT", + "dependencies": { + "shebang-regex": "^3.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/shebang-regex": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/shebang-regex/-/shebang-regex-3.0.0.tgz", + "integrity": "sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=8" + } + }, "node_modules/shell-quote": { "version": "1.8.3", "resolved": "https://registry.npmjs.org/shell-quote/-/shell-quote-1.8.3.tgz", @@ -5002,12 +6003,38 @@ "tree-kill": "cli.js" } }, + "node_modules/ts-api-utils": { + "version": "2.5.0", + "resolved": "https://registry.npmjs.org/ts-api-utils/-/ts-api-utils-2.5.0.tgz", + "integrity": "sha512-OJ/ibxhPlqrMM0UiNHJ/0CKQkoKF243/AEmplt3qpRgkW8VG7IfOS41h7V8TjITqdByHzrjcS/2si+y4lIh8NA==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=18.12" + }, + "peerDependencies": { + "typescript": ">=4.8.4" + } + }, "node_modules/tslib": { "version": "2.8.1", "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.8.1.tgz", "integrity": "sha512-oJFu94HQb+KVduSUQL7wnpmqnfmLsOA/nAh6b6EH0wCEoK0/mPeXU6c3wKDV83MkOuHPRHtSXKKU99IBazS/2w==", "license": "0BSD" }, + "node_modules/type-check": { + "version": "0.4.0", + "resolved": "https://registry.npmjs.org/type-check/-/type-check-0.4.0.tgz", + "integrity": "sha512-XleUoc9uwGXqjWwXaUTZAmzMcFZ5858QA2vvx1Ur5xIcixXIP+8LnFDgRplU30us6teqdlskFfu+ae4K79Ooew==", + "dev": true, + "license": "MIT", + "dependencies": { + "prelude-ls": "^1.2.1" + }, + "engines": { + "node": ">= 0.8.0" + } + }, "node_modules/type-fest": { "version": "4.41.0", "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-4.41.0.tgz", @@ -5048,6 +6075,30 @@ "node": ">=14.17" } }, + "node_modules/typescript-eslint": { + "version": "8.66.0", + "resolved": "https://registry.npmjs.org/typescript-eslint/-/typescript-eslint-8.66.0.tgz", + "integrity": "sha512-QlEbBPz/RuJ1XUHj29nm3t0F/O/cSlEnntozqPOYHnnTGAXFamnMBu5i9Vn6vhUPHGAjR+Vl+5J8vPN/BMUrJw==", + "dev": true, + "license": "MIT", + "dependencies": { + "@typescript-eslint/eslint-plugin": "8.66.0", + "@typescript-eslint/parser": "8.66.0", + "@typescript-eslint/typescript-estree": "8.66.0", + "@typescript-eslint/utils": "8.66.0" + }, + "engines": { + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" + }, + "peerDependencies": { + "eslint": "^8.57.0 || ^9.0.0 || ^10.0.0", + "typescript": ">=4.8.4 <6.1.0" + } + }, "node_modules/typical": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/typical/-/typical-4.0.0.tgz", @@ -5115,6 +6166,16 @@ "browserslist": ">= 4.21.0" } }, + "node_modules/uri-js": { + "version": "4.4.1", + "resolved": "https://registry.npmjs.org/uri-js/-/uri-js-4.4.1.tgz", + "integrity": "sha512-7rKUyy33Q1yc98pQ1DAmLtwX109F7TIfWlW1Ydo8Wl1ii1SeHieeh0HHfPeL2fMXK6z0s8ecKs9frCuLJvndBg==", + "dev": true, + "license": "BSD-2-Clause", + "dependencies": { + "punycode": "^2.1.0" + } + }, "node_modules/uuid": { "version": "11.1.0", "resolved": "https://registry.npmjs.org/uuid/-/uuid-11.1.0.tgz", @@ -5263,6 +6324,22 @@ "integrity": "sha512-EqhiFU6daOA8kpjOWTL0olhVOF3i7OrFzSYiGsEMB8GcXS+RrzauAERX65xMeNWVqxA6HXH2m69Z9LaKKdisfg==", "license": "MIT" }, + "node_modules/which": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/which/-/which-2.0.2.tgz", + "integrity": "sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==", + "dev": true, + "license": "ISC", + "dependencies": { + "isexe": "^2.0.0" + }, + "bin": { + "node-which": "bin/node-which" + }, + "engines": { + "node": ">= 8" + } + }, "node_modules/widest-line": { "version": "5.0.0", "resolved": "https://registry.npmjs.org/widest-line/-/widest-line-5.0.0.tgz", @@ -5278,6 +6355,16 @@ "url": "https://github.com/sponsors/sindresorhus" } }, + "node_modules/word-wrap": { + "version": "1.2.5", + "resolved": "https://registry.npmjs.org/word-wrap/-/word-wrap-1.2.5.tgz", + "integrity": "sha512-BN22B5eaMMI9UMtjrGd5g5eCYPpCPDUy0FJXbYsaT5zYxjFOckS53SQDE3pWkVoWpHXVb3BrYcEN4Twa55B5cA==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=0.10.0" + } + }, "node_modules/wordwrapjs": { "version": "5.1.1", "resolved": "https://registry.npmjs.org/wordwrapjs/-/wordwrapjs-5.1.1.tgz", @@ -5414,6 +6501,19 @@ "node": ">=8" } }, + "node_modules/yocto-queue": { + "version": "0.1.0", + "resolved": "https://registry.npmjs.org/yocto-queue/-/yocto-queue-0.1.0.tgz", + "integrity": "sha512-rVksvsnNCdJ/ohGc6xgPwyN8eheCxsiLM8mxuE/t/mOVqJewPuO1miLpTHQiRgTKCLexL4MeAFVagts7HmNZ2Q==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, "node_modules/zimmerframe": { "version": "1.1.4", "resolved": "https://registry.npmjs.org/zimmerframe/-/zimmerframe-1.1.4.tgz", @@ -5438,8 +6538,12 @@ "zod": "^4.3.6" }, "devDependencies": { + "@eslint/js": "^10.0.1", "@tsconfig/node22": "^22.0.5", - "typescript": "^6.0.2" + "eslint": "^10.8.1", + "globals": "^17.9.0", + "typescript": "^6.0.2", + "typescript-eslint": "^8.66.0" } }, "packages/page-model": { @@ -5449,8 +6553,12 @@ "css-selector-generator": "^3.9.2" }, "devDependencies": { + "@eslint/js": "^10.0.1", "@tsconfig/node22": "^22.0.5", - "typescript": "^6.0.2" + "eslint": "^10.8.1", + "globals": "^17.9.0", + "typescript": "^6.0.2", + "typescript-eslint": "^8.66.0" } }, "packages/shared": { diff --git a/package.json b/package.json index 50596cc..92f5ad5 100644 --- a/package.json +++ b/package.json @@ -6,11 +6,11 @@ "packages/*" ], "scripts": { - "clean": "npm run clean --workspaces", - "setup": "npm run setup --workspace @flowforge/backend", - "build:packages": "npm run build --workspace @flowforge/page-model && npm run build --workspace @flowforge/contract", - "build": "npm run build:packages && npm run build --workspace @flowforge/backend && npm run build:chrome --workspace @flowforge/extension", - "start": "npm run setup && npm run build && npm run install:chrome --workspace @flowforge/extension && npm run start --workspace @flowforge/backend", + "clean": "npm run clean -ws", + "setup": "npm run setup -w @flowforge/backend", + "build:packages": "npm run build -w @flowforge/page-model && npm run build -w @flowforge/contract", + "build": "npm run build:packages && npm run build -w @flowforge/backend && npm run build:chrome -w @flowforge/extension", + "start": "npm run setup && npm run build && npm run install:chrome -w @flowforge/extension && npm run start -w @flowforge/backend", "format": "prettier . --write --cache", "format:check": "prettier . --check" }, diff --git a/packages/contract/eslint.config.mjs b/packages/contract/eslint.config.mjs new file mode 100644 index 0000000..ac9a37f --- /dev/null +++ b/packages/contract/eslint.config.mjs @@ -0,0 +1,22 @@ +import js from '@eslint/js'; +import globals from 'globals'; +import tseslint from 'typescript-eslint'; + +export default tseslint.config( + { + ignores: ['dist/**'], + }, + js.configs.recommended, + ...tseslint.configs.recommended, + { + files: ['src/**/*.ts'], + languageOptions: { + globals: { + ...globals.es2022, + }, + }, + rules: { + 'no-undef': 'off', + }, + }, +); diff --git a/packages/contract/package.json b/packages/contract/package.json index fd32081..1816a43 100644 --- a/packages/contract/package.json +++ b/packages/contract/package.json @@ -13,6 +13,8 @@ "clean": "rm -rf dist/", "typecheck": "tsc -p tsconfig.json --noEmit", "build": "npm run clean && tsc -p tsconfig.json", + "lint": "eslint .", + "lint:fix": "eslint . --fix", "dev": "tsc -p tsconfig.json --watch" }, "dependencies": { @@ -20,7 +22,11 @@ "zod": "^4.3.6" }, "devDependencies": { + "@eslint/js": "^10.0.1", "@tsconfig/node22": "^22.0.5", - "typescript": "^6.0.2" + "eslint": "^10.8.1", + "globals": "^17.9.0", + "typescript": "^6.0.2", + "typescript-eslint": "^8.66.0" } } diff --git a/packages/page-model/eslint.config.mjs b/packages/page-model/eslint.config.mjs new file mode 100644 index 0000000..56ef36d --- /dev/null +++ b/packages/page-model/eslint.config.mjs @@ -0,0 +1,22 @@ +import js from '@eslint/js'; +import globals from 'globals'; +import tseslint from 'typescript-eslint'; + +export default tseslint.config({ + ignores: ['dist/**'], + }, + js.configs.recommended, + ...tseslint.configs.recommended, + { + files: ['src/**/*.ts'], + languageOptions: { + globals: { + ...globals.browser, + ...globals.es2022, + }, + }, + rules: { + 'no-undef': 'off', + }, + }, +); diff --git a/packages/page-model/package.json b/packages/page-model/package.json index 42c5fde..b95cd92 100644 --- a/packages/page-model/package.json +++ b/packages/page-model/package.json @@ -13,13 +13,19 @@ "clean": "rm -rf dist/", "typecheck": "tsc -p tsconfig.json --noEmit", "build": "npm run clean && tsc -p tsconfig.json", + "lint": "eslint .", + "lint:fix": "eslint . --fix", "dev": "tsc -p tsconfig.json --watch" }, "dependencies": { "css-selector-generator": "^3.9.2" }, "devDependencies": { + "@eslint/js": "^10.0.1", "@tsconfig/node22": "^22.0.5", - "typescript": "^6.0.2" + "eslint": "^10.8.1", + "globals": "^17.9.0", + "typescript": "^6.0.2", + "typescript-eslint": "^8.66.0" } } diff --git a/packages/page-model/src/collector/PageModelCollector.ts b/packages/page-model/src/collector/PageModelCollector.ts index 06a9533..5f67cdd 100644 --- a/packages/page-model/src/collector/PageModelCollector.ts +++ b/packages/page-model/src/collector/PageModelCollector.ts @@ -51,7 +51,7 @@ export class PageModelCollector { return { basics, - content: this.collectPageModelContent(basics), + content: this.collectPageModelContent(), interactive: this.collectPageModelInteractive(basics), timestamp: Date.now(), }; @@ -89,10 +89,9 @@ export class PageModelCollector { * Scans common content tags and returns normalized entries that include * locator metadata, content type, and extracted text. * - * @param basics - Page basics data extracted from the document. * @returns {ContentElement[]} A list of extracted content elements. */ - private collectPageModelContent(basics: PageBasics): ContentElement[] { + private collectPageModelContent(): ContentElement[] { const allElements: ContentElement[] = []; const contentSelectors = 'h1, h2, h3, h4, h5, h6, p, li, blockquote, figcaption'; diff --git a/packages/page-model/src/collector/extractors/primitive/link.ts b/packages/page-model/src/collector/extractors/primitive/link.ts index ffd865e..ecddbd7 100644 --- a/packages/page-model/src/collector/extractors/primitive/link.ts +++ b/packages/page-model/src/collector/extractors/primitive/link.ts @@ -30,7 +30,7 @@ function getElementLinkType(href: string): InteractiveLinkType { * or `undefined` if no href is found. */ export function getElementLink(el: Element): InteractiveLink | undefined { - let href = el instanceof HTMLAnchorElement ? el.href : el.getAttribute('href'); + const href = el instanceof HTMLAnchorElement ? el.href : el.getAttribute('href'); if (!href) return undefined; return { From 4c9c8342063423c2942a7cda2fb20948101cf6fd Mon Sep 17 00:00:00 2001 From: cerberus-ab Date: Sun, 9 Aug 2026 21:08:55 +0200 Subject: [PATCH 03/20] Unit-tests for page-model --- .github/workflows/ci.yml | 18 +- package-lock.json | 641 +++++++++++++++++- packages/page-model/.gitignore | 1 + packages/page-model/package.json | 7 +- .../src/collector/PageModelCollector.test.ts | 174 +++++ .../src/collector/extractors/context.test.ts | 73 ++ .../collector/extractors/descriptor.test.ts | 34 + .../extractors/primitive/attr.test.ts | 24 + .../extractors/primitive/label.test.ts | 65 ++ .../extractors/primitive/link.test.ts | 39 ++ .../extractors/primitive/role.test.ts | 64 ++ .../extractors/primitive/sensitive.test.ts | 28 + .../extractors/primitive/state.test.ts | 34 + .../extractors/primitive/text.test.ts | 16 + .../extractors/primitive/view.test.ts | 86 +++ .../src/collector/importance/content.test.ts | 44 ++ .../collector/importance/interactive.test.ts | 52 ++ .../src/collector/importance/scoring.test.ts | 10 + .../src/collector/importance/utils.test.ts | 41 ++ .../page-model/src/semantic/format.test.ts | 93 +++ packages/page-model/src/test/dom.ts | 52 ++ packages/page-model/src/test/fixtures.ts | 53 ++ packages/page-model/src/utils/array.test.ts | 28 + packages/page-model/src/utils/text.test.ts | 23 + packages/page-model/tsconfig.json | 2 +- packages/page-model/vitest.config.mjs | 25 + 26 files changed, 1707 insertions(+), 20 deletions(-) create mode 100644 packages/page-model/src/collector/PageModelCollector.test.ts create mode 100644 packages/page-model/src/collector/extractors/context.test.ts create mode 100644 packages/page-model/src/collector/extractors/descriptor.test.ts create mode 100644 packages/page-model/src/collector/extractors/primitive/attr.test.ts create mode 100644 packages/page-model/src/collector/extractors/primitive/label.test.ts create mode 100644 packages/page-model/src/collector/extractors/primitive/link.test.ts create mode 100644 packages/page-model/src/collector/extractors/primitive/role.test.ts create mode 100644 packages/page-model/src/collector/extractors/primitive/sensitive.test.ts create mode 100644 packages/page-model/src/collector/extractors/primitive/state.test.ts create mode 100644 packages/page-model/src/collector/extractors/primitive/text.test.ts create mode 100644 packages/page-model/src/collector/extractors/primitive/view.test.ts create mode 100644 packages/page-model/src/collector/importance/content.test.ts create mode 100644 packages/page-model/src/collector/importance/interactive.test.ts create mode 100644 packages/page-model/src/collector/importance/scoring.test.ts create mode 100644 packages/page-model/src/collector/importance/utils.test.ts create mode 100644 packages/page-model/src/semantic/format.test.ts create mode 100644 packages/page-model/src/test/dom.ts create mode 100644 packages/page-model/src/test/fixtures.ts create mode 100644 packages/page-model/src/utils/array.test.ts create mode 100644 packages/page-model/src/utils/text.test.ts create mode 100644 packages/page-model/vitest.config.mjs diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index bf00839..fb425f4 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -19,6 +19,12 @@ jobs: packages: runs-on: ubuntu-latest + permissions: + contents: read + actions: read + checks: write + needs: + - checks steps: - uses: actions/checkout@v5 - uses: actions/setup-node@v5 @@ -26,10 +32,21 @@ jobs: node-version: 22 cache: npm - run: npm ci + # page-model - run: npm run typecheck -w @flowforge/page-model + - run: npm run test -w @flowforge/page-model + - if: ${{ !cancelled() }} + uses: dorny/test-reporter@v3 + with: + name: page-model/unit-tests + path: packages/page-model/reports/unit-tests/results/junit.xml + reporter: jest-junit + fail-on-error: false - run: npm run build -w @flowforge/page-model + # contract - run: npm run typecheck -w @flowforge/contract - run: npm run build -w @flowforge/contract + # artifacts - uses: actions/upload-artifact@v4 with: name: packages-build @@ -40,7 +57,6 @@ jobs: apps: runs-on: ubuntu-latest needs: - - checks - packages steps: - uses: actions/checkout@v5 diff --git a/package-lock.json b/package-lock.json index 01d4529..c75ca8c 100644 --- a/package-lock.json +++ b/package-lock.json @@ -257,9 +257,9 @@ } }, "node_modules/@babel/helper-string-parser": { - "version": "7.27.1", - "resolved": "https://registry.npmjs.org/@babel/helper-string-parser/-/helper-string-parser-7.27.1.tgz", - "integrity": "sha512-qMlSxKbpRlAridDExk92nSobyDdpPijUq2DW6oDnUqd0iOGxmQjyqhMIihI9+zv4LPyZdRje2cavWPbCbWm3eA==", + "version": "7.29.7", + "resolved": "https://registry.npmjs.org/@babel/helper-string-parser/-/helper-string-parser-7.29.7.tgz", + "integrity": "sha512-Pb5ijPrZ89GDH8223L4UP8i6QApWxs04RbPQJTeWDV0/keR2E36MeKnyr6LYmUUvqRRI+Iv87SuF1W6ErINzYw==", "dev": true, "license": "MIT", "engines": { @@ -267,9 +267,9 @@ } }, "node_modules/@babel/helper-validator-identifier": { - "version": "7.28.5", - "resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.28.5.tgz", - "integrity": "sha512-qSs4ifwzKJSV39ucNjsvc6WVHs6b7S03sOh2OcHF9UHfVPqWWALUsNUVzhSBiItjRZoLHx7nIarVjqKVusUZ1Q==", + "version": "7.29.7", + "resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.29.7.tgz", + "integrity": "sha512-qehxGkRj55h/ff8EMaJ+cYhyaKlHIxqYDn682wQD7RNp9UujOQsHog2uS0r2vzr4pW+sXf90NeeayjcNaX3fFg==", "dev": true, "license": "MIT", "engines": { @@ -301,13 +301,13 @@ } }, "node_modules/@babel/parser": { - "version": "7.29.2", - "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.29.2.tgz", - "integrity": "sha512-4GgRzy/+fsBa72/RZVJmGKPmZu9Byn8o4MoLpmNe1m8ZfYnz5emHLQz3U4gLud6Zwl0RZIcgiLD7Uq7ySFuDLA==", + "version": "7.29.8", + "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.29.8.tgz", + "integrity": "sha512-E8lTAYNB1KW+FH+VGJuZM1ioAx2E6oVlvQFRrf5P8ZZmsiJXYAD9vTFV7yyEURNzgh1dFqMZuO6tUwcARbqFCA==", "dev": true, "license": "MIT", "dependencies": { - "@babel/types": "^7.29.0" + "@babel/types": "^7.29.8" }, "bin": { "parser": "bin/babel-parser.js" @@ -403,19 +403,29 @@ } }, "node_modules/@babel/types": { - "version": "7.29.0", - "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.29.0.tgz", - "integrity": "sha512-LwdZHpScM4Qz8Xw2iKSzS+cfglZzJGvofQICy7W7v4caru4EaAmyUuO6BGrbyQ2mYV11W0U8j5mBhd14dd3B0A==", + "version": "7.29.8", + "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.29.8.tgz", + "integrity": "sha512-Vj1jF3cPfxg7OAfoI7QnVKLoILlm2JF9pnVHrX8qx7AHMiYWT+NDAA7jChlNgRS4WTLc/fD1lXLmPixluj+3Gg==", "dev": true, "license": "MIT", "dependencies": { - "@babel/helper-string-parser": "^7.27.1", - "@babel/helper-validator-identifier": "^7.28.5" + "@babel/helper-string-parser": "^7.29.7", + "@babel/helper-validator-identifier": "^7.29.7" }, "engines": { "node": ">=6.9.0" } }, + "node_modules/@bcoe/v8-coverage": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/@bcoe/v8-coverage/-/v8-coverage-1.0.2.tgz", + "integrity": "sha512-6zABk/ECA/QYSCQ1NGiVwwbQerUCZ+TQbp64Q3AgmfNvurHH0j8TtXa1qbShXA6qqkpAj4V5W8pP6mLe1mcMqA==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=18" + } + }, "node_modules/@cfworker/json-schema": { "version": "4.1.1", "resolved": "https://registry.npmjs.org/@cfworker/json-schema/-/json-schema-4.1.1.tgz", @@ -2087,6 +2097,17 @@ "@types/node": "*" } }, + "node_modules/@types/chai": { + "version": "5.2.3", + "resolved": "https://registry.npmjs.org/@types/chai/-/chai-5.2.3.tgz", + "integrity": "sha512-Mw558oeA9fFbv65/y4mHtXDs9bPnFMZAL/jxdPFUpOHHIXX91mcgEHbS5Lahr+pwZFR8A7GQleRWeI6cGFC2UA==", + "dev": true, + "license": "MIT", + "dependencies": { + "@types/deep-eql": "*", + "assertion-error": "^2.0.1" + } + }, "node_modules/@types/chrome": { "version": "0.1.38", "resolved": "https://registry.npmjs.org/@types/chrome/-/chrome-0.1.38.tgz", @@ -2132,6 +2153,13 @@ "@types/node": "*" } }, + "node_modules/@types/deep-eql": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/@types/deep-eql/-/deep-eql-4.0.2.tgz", + "integrity": "sha512-c9h9dVVMigMPc4bwTvC5dxqtqJZwQPePsWjPlpSOnojbor6pGqdk541lfA7AqFQr5pB1BRdq0juY9db81BwyFw==", + "dev": true, + "license": "MIT" + }, "node_modules/@types/esrecurse": { "version": "4.3.1", "resolved": "https://registry.npmjs.org/@types/esrecurse/-/esrecurse-4.3.1.tgz", @@ -2259,6 +2287,23 @@ "integrity": "sha512-7gqG38EyHgyP1S+7+xomFtL+ZNHcKv6DwNaCZmJmo1vgMugyF3TCnXVg4t1uk89mLNwnLtnY3TpOpCOyp1/xHQ==", "license": "MIT" }, + "node_modules/@types/whatwg-mimetype": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/@types/whatwg-mimetype/-/whatwg-mimetype-3.0.2.tgz", + "integrity": "sha512-c2AKvDT8ToxLIOUlN51gTiHXflsfIFisS4pO7pDPoKouJCESkhZnEy623gwP9laCy5lnLDAw1vAzu2vM2YLOrA==", + "dev": true, + "license": "MIT" + }, + "node_modules/@types/ws": { + "version": "8.18.1", + "resolved": "https://registry.npmjs.org/@types/ws/-/ws-8.18.1.tgz", + "integrity": "sha512-ThVF6DCVhA8kUGy+aazFQ4kXQ7E1Ty7A3ypFOe0IcJV8O/M511G99AW24irKrW56Wt44yG9+ij8FaqoBGkuBXg==", + "dev": true, + "license": "MIT", + "dependencies": { + "@types/node": "*" + } + }, "node_modules/@typescript-eslint/eslint-plugin": { "version": "8.66.0", "resolved": "https://registry.npmjs.org/@typescript-eslint/eslint-plugin/-/eslint-plugin-8.66.0.tgz", @@ -2489,6 +2534,167 @@ "url": "https://opencollective.com/typescript-eslint" } }, + "node_modules/@vitest/coverage-v8": { + "version": "4.1.10", + "resolved": "https://registry.npmjs.org/@vitest/coverage-v8/-/coverage-v8-4.1.10.tgz", + "integrity": "sha512-IM49HmthevbgAO4anp1hwtoT9wYe59w0LR00gr+eagHE+ZJ5lK4sLPeO0ubgoJcwLk6dehU3R24N+FbEEKDc8g==", + "dev": true, + "license": "MIT", + "dependencies": { + "@bcoe/v8-coverage": "^1.0.2", + "@vitest/utils": "4.1.10", + "ast-v8-to-istanbul": "^1.0.0", + "istanbul-lib-coverage": "^3.2.2", + "istanbul-lib-report": "^3.0.1", + "istanbul-reports": "^3.2.0", + "magicast": "^0.5.2", + "obug": "^2.1.1", + "std-env": "^4.0.0-rc.1", + "tinyrainbow": "^3.1.0" + }, + "funding": { + "url": "https://opencollective.com/vitest" + }, + "peerDependencies": { + "@vitest/browser": "4.1.10", + "vitest": "4.1.10" + }, + "peerDependenciesMeta": { + "@vitest/browser": { + "optional": true + } + } + }, + "node_modules/@vitest/expect": { + "version": "4.1.10", + "resolved": "https://registry.npmjs.org/@vitest/expect/-/expect-4.1.10.tgz", + "integrity": "sha512-YsCn+qAk1GWjQOWFEsEcL2gNQ0zmVmQu3T03qP6UyjhtmdtwtbuI+DASn/7iQB3HGTXkdBwGddzxPlmiql5vlA==", + "dev": true, + "license": "MIT", + "dependencies": { + "@standard-schema/spec": "^1.1.0", + "@types/chai": "^5.2.2", + "@vitest/spy": "4.1.10", + "@vitest/utils": "4.1.10", + "chai": "^6.2.2", + "tinyrainbow": "^3.1.0" + }, + "funding": { + "url": "https://opencollective.com/vitest" + } + }, + "node_modules/@vitest/mocker": { + "version": "4.1.10", + "resolved": "https://registry.npmjs.org/@vitest/mocker/-/mocker-4.1.10.tgz", + "integrity": "sha512-v0xaezt+DKEmKfaxg133ldzADrwLGd7Ze1MfQQTYfvs8OqZIwbxyxaYURivwV7sWy5fqn3rH5uOrSp07bp44Ow==", + "dev": true, + "license": "MIT", + "dependencies": { + "@vitest/spy": "4.1.10", + "estree-walker": "^3.0.3", + "magic-string": "^0.30.21" + }, + "funding": { + "url": "https://opencollective.com/vitest" + }, + "peerDependencies": { + "msw": "^2.4.9", + "vite": "^6.0.0 || ^7.0.0 || ^8.0.0" + }, + "peerDependenciesMeta": { + "msw": { + "optional": true + }, + "vite": { + "optional": true + } + } + }, + "node_modules/@vitest/mocker/node_modules/estree-walker": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/estree-walker/-/estree-walker-3.0.3.tgz", + "integrity": "sha512-7RUKfXgSMMkzt6ZuXmqapOurLGPPfgj6l9uRZ7lRGolvk0y2yocc35LdcxKC5PQZdn2DMqioAQ2NoWcrTKmm6g==", + "dev": true, + "license": "MIT", + "dependencies": { + "@types/estree": "^1.0.0" + } + }, + "node_modules/@vitest/pretty-format": { + "version": "4.1.10", + "resolved": "https://registry.npmjs.org/@vitest/pretty-format/-/pretty-format-4.1.10.tgz", + "integrity": "sha512-W1HsjSH4MXQ9YfmmhLAoIYf1HRfekQCGngeIgcei6MP5QQGWUe0gkopdZQaVCFO+JDJMrAJGwa5pRpNpvy4P8Q==", + "dev": true, + "license": "MIT", + "dependencies": { + "tinyrainbow": "^3.1.0" + }, + "funding": { + "url": "https://opencollective.com/vitest" + } + }, + "node_modules/@vitest/runner": { + "version": "4.1.10", + "resolved": "https://registry.npmjs.org/@vitest/runner/-/runner-4.1.10.tgz", + "integrity": "sha512-IKI6kpIH+LmpROplyLwBBaCfMgOZOMsygVa6BARD6ahA04VRuJSa6OaVG7kRvSEMD870Vd91rSSw0eegtWyLGg==", + "dev": true, + "license": "MIT", + "dependencies": { + "@vitest/utils": "4.1.10", + "pathe": "^2.0.3" + }, + "funding": { + "url": "https://opencollective.com/vitest" + } + }, + "node_modules/@vitest/snapshot": { + "version": "4.1.10", + "resolved": "https://registry.npmjs.org/@vitest/snapshot/-/snapshot-4.1.10.tgz", + "integrity": "sha512-xRkfOT1qpTAi/Ti4Y1LtfRc3kEuqxGw59eN2jN9pRWMtS/XDevekhcFSqvQqjUNGksfjMJu3Y+oJ+4Ypn2OaJw==", + "dev": true, + "license": "MIT", + "dependencies": { + "@vitest/pretty-format": "4.1.10", + "@vitest/utils": "4.1.10", + "magic-string": "^0.30.21", + "pathe": "^2.0.3" + }, + "funding": { + "url": "https://opencollective.com/vitest" + } + }, + "node_modules/@vitest/spy": { + "version": "4.1.10", + "resolved": "https://registry.npmjs.org/@vitest/spy/-/spy-4.1.10.tgz", + "integrity": "sha512-PLf/Ugvoq5wO/b4rwYCR1h2PSIdXz7wnkQFMiUpLdtM7l6pqVFcQIBEHyT1+l+cj7mNwAfZHzqXqDyjvOuwbDw==", + "dev": true, + "license": "MIT", + "funding": { + "url": "https://opencollective.com/vitest" + } + }, + "node_modules/@vitest/utils": { + "version": "4.1.10", + "resolved": "https://registry.npmjs.org/@vitest/utils/-/utils-4.1.10.tgz", + "integrity": "sha512-fy9am/HWxbaGt/Sawrp90vt6Y6jQwf1RX77cz3uwoJwJVMli/e1IEwRPnMNJ7vKfPTwo0diXifkpPvwH9v7nGA==", + "dev": true, + "license": "MIT", + "dependencies": { + "@vitest/pretty-format": "4.1.10", + "convert-source-map": "^2.0.0", + "tinyrainbow": "^3.1.0" + }, + "funding": { + "url": "https://opencollective.com/vitest" + } + }, + "node_modules/@vitest/utils/node_modules/convert-source-map": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/convert-source-map/-/convert-source-map-2.0.0.tgz", + "integrity": "sha512-Kvp459HrV2FEJ1CAsi1Ku+MY3kasH19TFykTz2xWmMeq6bk2NU3XXvfJ+Q61m0xktWwt+1HSYf3JZsTms3aRJg==", + "dev": true, + "license": "MIT" + }, "node_modules/@webcomponents/custom-elements": { "version": "1.6.0", "resolved": "https://registry.npmjs.org/@webcomponents/custom-elements/-/custom-elements-1.6.0.tgz", @@ -2684,6 +2890,45 @@ "node": ">=6" } }, + "node_modules/assertion-error": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/assertion-error/-/assertion-error-2.0.1.tgz", + "integrity": "sha512-Izi8RQcffqCeNVgFigKli1ssklIbpHnCYc6AknXGYoB6grJqyeby7jv12JUQgmTAnIDnbck1uxksT4dzN3PWBA==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=12" + } + }, + "node_modules/ast-v8-to-istanbul": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/ast-v8-to-istanbul/-/ast-v8-to-istanbul-1.0.5.tgz", + "integrity": "sha512-UPAgKJFSEGMWSDr3LX4tqnAb4f7KGT8O40Tyx8wbYmmZ/yn58lNCm8h3svs3eXgiGd5AXxz8NDOvXWvicq+rJA==", + "dev": true, + "license": "MIT", + "dependencies": { + "@jridgewell/trace-mapping": "^0.3.31", + "estree-walker": "^3.0.3", + "js-tokens": "^10.0.0" + } + }, + "node_modules/ast-v8-to-istanbul/node_modules/estree-walker": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/estree-walker/-/estree-walker-3.0.3.tgz", + "integrity": "sha512-7RUKfXgSMMkzt6ZuXmqapOurLGPPfgj6l9uRZ7lRGolvk0y2yocc35LdcxKC5PQZdn2DMqioAQ2NoWcrTKmm6g==", + "dev": true, + "license": "MIT", + "dependencies": { + "@types/estree": "^1.0.0" + } + }, + "node_modules/ast-v8-to-istanbul/node_modules/js-tokens": { + "version": "10.0.0", + "resolved": "https://registry.npmjs.org/js-tokens/-/js-tokens-10.0.0.tgz", + "integrity": "sha512-lM/UBzQmfJRo9ABXbPWemivdCW8V2G8FHaHdypQaIy523snUjog0W71ayWXTjiR+ixeMyVHN2XcpnTd/liPg/Q==", + "dev": true, + "license": "MIT" + }, "node_modules/babel-plugin-transform-hook-names": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/babel-plugin-transform-hook-names/-/babel-plugin-transform-hook-names-1.0.2.tgz", @@ -2862,6 +3107,19 @@ "node": "^6 || ^7 || ^8 || ^9 || ^10 || ^11 || ^12 || >=13.7" } }, + "node_modules/buffer-image-size": { + "version": "0.6.4", + "resolved": "https://registry.npmjs.org/buffer-image-size/-/buffer-image-size-0.6.4.tgz", + "integrity": "sha512-nEh+kZOPY1w+gcCMobZ6ETUp9WfibndnosbpwB1iJk/8Gt5ZF2bhS6+B6bPYz424KtwsR6Rflc3tCz1/ghX2dQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "@types/node": "*" + }, + "engines": { + "node": ">=4.0" + } + }, "node_modules/bytes": { "version": "3.1.2", "resolved": "https://registry.npmjs.org/bytes/-/bytes-3.1.2.tgz", @@ -2933,6 +3191,16 @@ ], "license": "CC-BY-4.0" }, + "node_modules/chai": { + "version": "6.2.2", + "resolved": "https://registry.npmjs.org/chai/-/chai-6.2.2.tgz", + "integrity": "sha512-NUPRluOfOiTKBKvWPtSD4PhFvWCqOi0BGStNWs57X9js7XGTprSmFoz5F0tWhR4WPjNeR9jXqdC7/UpSJTnlRg==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=18" + } + }, "node_modules/chalk": { "version": "5.6.2", "resolved": "https://registry.npmjs.org/chalk/-/chalk-5.6.2.tgz", @@ -3869,6 +4137,16 @@ "integrity": "sha512-8guHBZCwKnFhYdHr2ysuRWErTwhoN2X8XELRlrRwpmfeY2jjuUN4taQMsULKUVo1K4DvZl+0pgfyoysHxvmvEw==", "license": "MIT" }, + "node_modules/expect-type": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/expect-type/-/expect-type-1.4.0.tgz", + "integrity": "sha512-KfYbmpRm0VbLjEvVa9yGwCi9GI34xvi7A/HXYWQO65CSD2u3MczUJSuwXKFIxlGsgBQizV9q5J9NHj4VG0n+pA==", + "dev": true, + "license": "Apache-2.0", + "engines": { + "node": ">=12.0.0" + } + }, "node_modules/express": { "version": "5.2.1", "resolved": "https://registry.npmjs.org/express/-/express-5.2.1.tgz", @@ -4236,6 +4514,38 @@ "dev": true, "license": "ISC" }, + "node_modules/happy-dom": { + "version": "20.11.2", + "resolved": "https://registry.npmjs.org/happy-dom/-/happy-dom-20.11.2.tgz", + "integrity": "sha512-7MB+bJLkxu3SowAfBJbjW+c55kNz5tkR45gu2qzrxznezhLeN5YIlJbwUgSzlGc+qWoZ8Ykg71H5ezz69xixrw==", + "dev": true, + "license": "MIT", + "dependencies": { + "@types/node": ">=20.0.0", + "@types/whatwg-mimetype": "^3.0.2", + "@types/ws": "^8.18.1", + "buffer-image-size": "^0.6.4", + "entities": "^7.0.1", + "whatwg-mimetype": "^3.0.0", + "ws": "^8.21.0" + }, + "engines": { + "node": ">=20.0.0" + } + }, + "node_modules/happy-dom/node_modules/entities": { + "version": "7.0.1", + "resolved": "https://registry.npmjs.org/entities/-/entities-7.0.1.tgz", + "integrity": "sha512-TWrgLOFUQTH994YUyl1yT4uyavY5nNB5muff+RtWaqNVCAK408b5ZnnbNAUEWLTCpum9w6arT70i1XdQ4UeOPA==", + "dev": true, + "license": "BSD-2-Clause", + "engines": { + "node": ">=0.12" + }, + "funding": { + "url": "https://github.com/fb55/entities?sponsor=1" + } + }, "node_modules/has-flag": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", @@ -4279,6 +4589,13 @@ "he": "bin/he" } }, + "node_modules/html-escaper": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/html-escaper/-/html-escaper-2.0.2.tgz", + "integrity": "sha512-H2iMtd0I4Mt5eYiapRdIDjp+XzelXQ0tFE4JS7YFwFevXXMmOp9myNrUvCg0D6ws8iqkRPBfKHgbwig1SmlLfg==", + "dev": true, + "license": "MIT" + }, "node_modules/http-errors": { "version": "2.0.1", "resolved": "https://registry.npmjs.org/http-errors/-/http-errors-2.0.1.tgz", @@ -4417,6 +4734,45 @@ "dev": true, "license": "ISC" }, + "node_modules/istanbul-lib-coverage": { + "version": "3.2.2", + "resolved": "https://registry.npmjs.org/istanbul-lib-coverage/-/istanbul-lib-coverage-3.2.2.tgz", + "integrity": "sha512-O8dpsF+r0WV/8MNRKfnmrtCWhuKjxrq2w+jpzBL5UZKTi2LeVWnWOmWRxFlesJONmc+wLAGvKQZEOanko0LFTg==", + "dev": true, + "license": "BSD-3-Clause", + "engines": { + "node": ">=8" + } + }, + "node_modules/istanbul-lib-report": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/istanbul-lib-report/-/istanbul-lib-report-3.0.1.tgz", + "integrity": "sha512-GCfE1mtsHGOELCU8e/Z7YWzpmybrx/+dSTfLrvY8qRmaY6zXTKWn6WQIjaAFw069icm6GVMNkgu0NzI4iPZUNw==", + "dev": true, + "license": "BSD-3-Clause", + "dependencies": { + "istanbul-lib-coverage": "^3.0.0", + "make-dir": "^4.0.0", + "supports-color": "^7.1.0" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/istanbul-reports": { + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/istanbul-reports/-/istanbul-reports-3.2.0.tgz", + "integrity": "sha512-HGYWWS/ehqTV3xN10i23tkPkpH46MLCIMFNCaaKNavAXTF1RkqxawEPtnjnGZ6XKSInBKkiOA5BKS+aZiY3AvA==", + "dev": true, + "license": "BSD-3-Clause", + "dependencies": { + "html-escaper": "^2.0.0", + "istanbul-lib-report": "^3.0.0" + }, + "engines": { + "node": ">=8" + } + }, "node_modules/js-tiktoken": { "version": "1.0.21", "resolved": "https://registry.npmjs.org/js-tiktoken/-/js-tiktoken-1.0.21.tgz", @@ -4907,6 +5263,34 @@ "@jridgewell/sourcemap-codec": "^1.5.5" } }, + "node_modules/magicast": { + "version": "0.5.4", + "resolved": "https://registry.npmjs.org/magicast/-/magicast-0.5.4.tgz", + "integrity": "sha512-llBEhWm1SacoRwgHUoQJYtwp4PBLF4faQi5TCpIGyGs9n4y5+juI0tDgyKIfpqxckRHaHzouUEph3THklWh03w==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/parser": "^7.29.7", + "@babel/types": "^7.29.7", + "source-map-js": "^1.2.1" + } + }, + "node_modules/make-dir": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/make-dir/-/make-dir-4.0.0.tgz", + "integrity": "sha512-hXdUTZYIVOt1Ex//jAQi+wTZZpUpwBj/0QsOzqegb3rGMMeJiSEu5xLHnYfBrRV4RH2+OCSOO95Is/7x1WJ4bw==", + "dev": true, + "license": "MIT", + "dependencies": { + "semver": "^7.5.3" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, "node_modules/marked": { "version": "18.0.2", "resolved": "https://registry.npmjs.org/marked/-/marked-18.0.2.tgz", @@ -5117,6 +5501,20 @@ "url": "https://github.com/sponsors/ljharb" } }, + "node_modules/obug": { + "version": "2.1.4", + "resolved": "https://registry.npmjs.org/obug/-/obug-2.1.4.tgz", + "integrity": "sha512-4a+OsYv9UktOJKE+l1A4OufDgdRF9PifWj+tJnHURo/P+WOxpG4GzUFL9qCalmWauao6ogiG+QvnCovwPoyAWA==", + "dev": true, + "funding": [ + "https://github.com/sponsors/sxzz", + "https://opencollective.com/debug" + ], + "license": "MIT", + "engines": { + "node": ">=12.20.0" + } + }, "node_modules/ollama": { "version": "0.6.3", "resolved": "https://registry.npmjs.org/ollama/-/ollama-0.6.3.tgz", @@ -5799,6 +6197,13 @@ "url": "https://github.com/sponsors/ljharb" } }, + "node_modules/siginfo": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/siginfo/-/siginfo-2.0.0.tgz", + "integrity": "sha512-ybx0WO1/8bSBLEWXZvEd7gMW3Sn3JFlW3TvX1nREbDLRNQNaeNN8WK0meBwPdAaOI7TtRRRJn/Es1zhrrCHu7g==", + "dev": true, + "license": "ISC" + }, "node_modules/simple-code-frame": { "version": "1.3.0", "resolved": "https://registry.npmjs.org/simple-code-frame/-/simple-code-frame-1.3.0.tgz", @@ -5845,6 +6250,13 @@ "node": ">=16" } }, + "node_modules/stackback": { + "version": "0.0.2", + "resolved": "https://registry.npmjs.org/stackback/-/stackback-0.0.2.tgz", + "integrity": "sha512-1XMJE5fQo1jGH6Y/7ebnwPOBEkIEnT4QF32d5R1+VXdXveM0IBMJt8zfaxX1P3QhVwrYe+576+jkANtSS2mBbw==", + "dev": true, + "license": "MIT" + }, "node_modules/statuses": { "version": "2.0.2", "resolved": "https://registry.npmjs.org/statuses/-/statuses-2.0.2.tgz", @@ -5854,6 +6266,13 @@ "node": ">= 0.8" } }, + "node_modules/std-env": { + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/std-env/-/std-env-4.2.0.tgz", + "integrity": "sha512-oCUKSupKTHX53EyjDtuZQ64pjLJ6yYCtpmEw0goYxtjG9KpbRe8KAsl2tBUGU9DyMcJ0RwJ8GqJAFzMXcXW1Rw==", + "dev": true, + "license": "MIT" + }, "node_modules/string-width": { "version": "7.2.0", "resolved": "https://registry.npmjs.org/string-width/-/string-width-7.2.0.tgz", @@ -5891,7 +6310,6 @@ "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", "license": "MIT", - "peer": true, "dependencies": { "has-flag": "^4.0.0" }, @@ -5923,6 +6341,23 @@ "node": ">=12.17" } }, + "node_modules/tinybench": { + "version": "2.9.0", + "resolved": "https://registry.npmjs.org/tinybench/-/tinybench-2.9.0.tgz", + "integrity": "sha512-0+DUvqWMValLmha6lr4kD8iAMK1HzV0/aKnCtWb9v9641TnP/MFb7Pc2bxoxQjTXAErryXVgUOfv2YqNllqGeg==", + "dev": true, + "license": "MIT" + }, + "node_modules/tinyexec": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/tinyexec/-/tinyexec-1.3.0.tgz", + "integrity": "sha512-QKAl9m8gWWGHV8jZcPeym6j+XULi6tOf1mT83WYJ4Lk2ytW/uwAWkrP0uFsdoYMdueVJ0qs26wZ+23xeB4ibNQ==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=18" + } + }, "node_modules/tinyglobby": { "version": "0.2.16", "resolved": "https://registry.npmjs.org/tinyglobby/-/tinyglobby-0.2.16.tgz", @@ -5971,6 +6406,16 @@ "url": "https://github.com/sponsors/jonschlinkert" } }, + "node_modules/tinyrainbow": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/tinyrainbow/-/tinyrainbow-3.1.1.tgz", + "integrity": "sha512-yau8yJdTt989Mm0Bd/236QnzEiPf2xLLTqUZRUJOo/3CB078LSwzei343DgtJVmfJKJE3TMINY1u42SQsP6mXw==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=14.0.0" + } + }, "node_modules/to-regex-range": { "version": "5.0.1", "resolved": "https://registry.npmjs.org/to-regex-range/-/to-regex-range-5.0.1.tgz", @@ -6318,12 +6763,132 @@ "url": "https://github.com/sponsors/jonschlinkert" } }, + "node_modules/vitest": { + "version": "4.1.10", + "resolved": "https://registry.npmjs.org/vitest/-/vitest-4.1.10.tgz", + "integrity": "sha512-R9jUTe5S4Qb0HCd4TNqpC7oGcrMssMRGXLW80ubjWsW9VH5GF8y1Y0SFLY9AbqSk6nt0PnOx4H4WNJYZ13GUPw==", + "dev": true, + "license": "MIT", + "dependencies": { + "@vitest/expect": "4.1.10", + "@vitest/mocker": "4.1.10", + "@vitest/pretty-format": "4.1.10", + "@vitest/runner": "4.1.10", + "@vitest/snapshot": "4.1.10", + "@vitest/spy": "4.1.10", + "@vitest/utils": "4.1.10", + "es-module-lexer": "^2.0.0", + "expect-type": "^1.3.0", + "magic-string": "^0.30.21", + "obug": "^2.1.1", + "pathe": "^2.0.3", + "picomatch": "^4.0.3", + "std-env": "^4.0.0-rc.1", + "tinybench": "^2.9.0", + "tinyexec": "^1.0.2", + "tinyglobby": "^0.2.15", + "tinyrainbow": "^3.1.0", + "vite": "^6.0.0 || ^7.0.0 || ^8.0.0", + "why-is-node-running": "^2.3.0" + }, + "bin": { + "vitest": "vitest.mjs" + }, + "engines": { + "node": "^20.0.0 || ^22.0.0 || >=24.0.0" + }, + "funding": { + "url": "https://opencollective.com/vitest" + }, + "peerDependencies": { + "@edge-runtime/vm": "*", + "@opentelemetry/api": "^1.9.0", + "@types/node": "^20.0.0 || ^22.0.0 || >=24.0.0", + "@vitest/browser-playwright": "4.1.10", + "@vitest/browser-preview": "4.1.10", + "@vitest/browser-webdriverio": "4.1.10", + "@vitest/coverage-istanbul": "4.1.10", + "@vitest/coverage-v8": "4.1.10", + "@vitest/ui": "4.1.10", + "happy-dom": "*", + "jsdom": "*", + "vite": "^6.0.0 || ^7.0.0 || ^8.0.0" + }, + "peerDependenciesMeta": { + "@edge-runtime/vm": { + "optional": true + }, + "@opentelemetry/api": { + "optional": true + }, + "@types/node": { + "optional": true + }, + "@vitest/browser-playwright": { + "optional": true + }, + "@vitest/browser-preview": { + "optional": true + }, + "@vitest/browser-webdriverio": { + "optional": true + }, + "@vitest/coverage-istanbul": { + "optional": true + }, + "@vitest/coverage-v8": { + "optional": true + }, + "@vitest/ui": { + "optional": true + }, + "happy-dom": { + "optional": true + }, + "jsdom": { + "optional": true + }, + "vite": { + "optional": false + } + } + }, + "node_modules/vitest/node_modules/es-module-lexer": { + "version": "2.3.1", + "resolved": "https://registry.npmjs.org/es-module-lexer/-/es-module-lexer-2.3.1.tgz", + "integrity": "sha512-shc1dbU90Yl/xq1QrC7QRtfcwURZuVRfPhZbDoldJ1cn1gzDvBaBWlv0eFolj5+0znnPJz5TXLxsN77X/12KTA==", + "dev": true, + "license": "MIT" + }, + "node_modules/vitest/node_modules/picomatch": { + "version": "4.0.5", + "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-4.0.5.tgz", + "integrity": "sha512-RvwwcruNjI1ncT5xRakeyS9Lf8lcItv34KD+aif+VH9kduAyfYBipGh12274xtenIPZ119/R9BdTBa8gAwSh0A==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/sponsors/jonschlinkert" + } + }, "node_modules/whatwg-fetch": { "version": "3.6.20", "resolved": "https://registry.npmjs.org/whatwg-fetch/-/whatwg-fetch-3.6.20.tgz", "integrity": "sha512-EqhiFU6daOA8kpjOWTL0olhVOF3i7OrFzSYiGsEMB8GcXS+RrzauAERX65xMeNWVqxA6HXH2m69Z9LaKKdisfg==", "license": "MIT" }, + "node_modules/whatwg-mimetype": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/whatwg-mimetype/-/whatwg-mimetype-3.0.0.tgz", + "integrity": "sha512-nt+N2dzIutVRxARx1nghPKGv1xHikU7HKdfafKkLNLindmPU/ch3U31NOCGGA/dmPcmb1VlofO0vnKAcsm0o/Q==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=12" + } + }, "node_modules/which": { "version": "2.0.2", "resolved": "https://registry.npmjs.org/which/-/which-2.0.2.tgz", @@ -6340,6 +6905,23 @@ "node": ">= 8" } }, + "node_modules/why-is-node-running": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/why-is-node-running/-/why-is-node-running-2.3.0.tgz", + "integrity": "sha512-hUrmaWBdVDcxvYqnyh09zunKzROWjbZTiNy8dBEjkS7ehEDQibXJ7XvlmtbwuTclUiIyN+CyXQD4Vmko8fNm8w==", + "dev": true, + "license": "MIT", + "dependencies": { + "siginfo": "^2.0.0", + "stackback": "0.0.2" + }, + "bin": { + "why-is-node-running": "cli.js" + }, + "engines": { + "node": ">=8" + } + }, "node_modules/widest-line": { "version": "5.0.0", "resolved": "https://registry.npmjs.org/widest-line/-/widest-line-5.0.0.tgz", @@ -6410,6 +6992,28 @@ "integrity": "sha512-l4Sp/DRseor9wL6EvV2+TuQn63dMkPjZ/sp9XkghTEbV9KlPS1xUsZ3u7/IQO4wxtcFB4bgpQPRcR3QCvezPcQ==", "license": "ISC" }, + "node_modules/ws": { + "version": "8.21.3", + "resolved": "https://registry.npmjs.org/ws/-/ws-8.21.3.tgz", + "integrity": "sha512-201TZ/kPWxoPr/OKWjquZR1SWKXcvxdH+e1xrx89b3YbmzLMFCLfnaG1HFIgWzJOEWZ7MvpK++odZufgYR50Rw==", + "devOptional": true, + "license": "MIT", + "engines": { + "node": ">=10.0.0" + }, + "peerDependencies": { + "bufferutil": "^4.0.1", + "utf-8-validate": ">=5.0.2" + }, + "peerDependenciesMeta": { + "bufferutil": { + "optional": true + }, + "utf-8-validate": { + "optional": true + } + } + }, "node_modules/y18n": { "version": "5.0.8", "resolved": "https://registry.npmjs.org/y18n/-/y18n-5.0.8.tgz", @@ -6555,10 +7159,13 @@ "devDependencies": { "@eslint/js": "^10.0.1", "@tsconfig/node22": "^22.0.5", + "@vitest/coverage-v8": "^4.1.10", "eslint": "^10.8.1", "globals": "^17.9.0", + "happy-dom": "^20.11.2", "typescript": "^6.0.2", - "typescript-eslint": "^8.66.0" + "typescript-eslint": "^8.66.0", + "vitest": "^4.1.10" } }, "packages/shared": { diff --git a/packages/page-model/.gitignore b/packages/page-model/.gitignore index b8e53c6..cd86c27 100644 --- a/packages/page-model/.gitignore +++ b/packages/page-model/.gitignore @@ -3,6 +3,7 @@ node_modules/ # Build output dist/ +reports/ # Logs logs/ diff --git a/packages/page-model/package.json b/packages/page-model/package.json index b95cd92..9cba73e 100644 --- a/packages/page-model/package.json +++ b/packages/page-model/package.json @@ -13,6 +13,8 @@ "clean": "rm -rf dist/", "typecheck": "tsc -p tsconfig.json --noEmit", "build": "npm run clean && tsc -p tsconfig.json", + "test": "vitest run --coverage", + "test:watch": "vitest", "lint": "eslint .", "lint:fix": "eslint . --fix", "dev": "tsc -p tsconfig.json --watch" @@ -23,9 +25,12 @@ "devDependencies": { "@eslint/js": "^10.0.1", "@tsconfig/node22": "^22.0.5", + "@vitest/coverage-v8": "^4.1.10", "eslint": "^10.8.1", "globals": "^17.9.0", + "happy-dom": "^20.11.2", "typescript": "^6.0.2", - "typescript-eslint": "^8.66.0" + "typescript-eslint": "^8.66.0", + "vitest": "^4.1.10" } } diff --git a/packages/page-model/src/collector/PageModelCollector.test.ts b/packages/page-model/src/collector/PageModelCollector.test.ts new file mode 100644 index 0000000..4d037a9 --- /dev/null +++ b/packages/page-model/src/collector/PageModelCollector.test.ts @@ -0,0 +1,174 @@ +import { afterEach, describe, expect, it, vi } from 'vitest'; + +import { markHidden, markVisible, resetDocument, setViewport } from '../test/dom'; +import { PageModelCollector } from './PageModelCollector'; + +afterEach(() => { + resetDocument(); + vi.restoreAllMocks(); +}); + +describe('PageModelCollector', () => { + it('collects page basics', () => { + document.documentElement.lang = 'en'; + document.head.innerHTML = ``; + document.title = 'Test page'; + + setViewport({ width: 1024, height: 768, scrollY: 100, scrollHeight: 2000 }); + + const model = collect(); + + expect(model.basics).toEqual({ + url: 'http://localhost:3000/', + title: 'Test page', + description: 'Page description', + language: 'en', + viewport: { + width: 1024, + height: 768, + scrollY: 100, + scrollHeight: 2000, + }, + }); + expect(model.timestamp).toBeTypeOf('number'); + }); + + it('collects visible content elements', () => { + document.body.innerHTML = ` +
+

Welcome

+

Useful paragraph text

+

No

+
+ `; + markVisible('#title'); + markVisible('#intro'); + markVisible('#short'); + + const model = collect(); + + expect(model.content).toEqual( + expect.arrayContaining([ + expect.objectContaining({ + kind: 'content', + type: 'heading', + tag: 'h1', + text: 'Welcome', + dataId: 'title', + }), + expect.objectContaining({ + kind: 'content', + type: 'text', + tag: 'p', + text: 'Useful paragraph text', + dataId: 'intro', + }), + ]), + ); + expect(model.content.some((el) => el.dataId === 'short')).toBeFalsy(); + }); + + it('collects visible interactive elements', () => { + document.body.innerHTML = ` +
+ + Docs + +
+ `; + markVisible('#save'); + markVisible('#docs'); + markVisible('#email'); + + const model = collect(); + + expect(model.interactive).toEqual( + expect.arrayContaining([ + expect.objectContaining({ + kind: 'interactive', + type: 'button', + role: 'button', + dataId: 'save', + labels: [{ source: 'aria-label', value: 'Save changes' }], + }), + expect.objectContaining({ + kind: 'interactive', + type: 'link', + role: 'link', + dataId: 'docs', + link: { + type: 'internal', + href: 'http://localhost:3000/docs', + }, + }), + expect.objectContaining({ + kind: 'interactive', + type: 'input', + role: 'textbox', + dataId: 'email', + labels: [{ source: 'placeholder', value: 'Email' }], + }), + ]), + ); + }); + + it('skips hidden and sensitive interactive elements', () => { + document.body.innerHTML = ` + + + + `; + markVisible('#visible'); + markHidden('#hidden'); + markVisible('#password'); + + const model = collect(); + + expect(model.interactive.map((el) => el.dataId)).toEqual(['visible']); + }); + + it('applies content and interactive limits after scoring', () => { + vi.spyOn(console, 'log').mockImplementation(() => {}); + document.body.innerHTML = ` +
+

Important heading

+

Regular paragraph text

+ + Docs +
+ `; + markVisible('#heading'); + markVisible('#paragraph'); + markVisible('#button'); + markVisible('#link'); + + const model = collect({ + contentElementsLimit: 1, + interactiveElementsLimit: 1, + }); + + expect(model.content).toHaveLength(1); + expect(model.content[0]).toEqual(expect.objectContaining({ dataId: 'heading' })); + expect(model.interactive).toHaveLength(1); + expect(model.interactive[0]).toEqual(expect.objectContaining({ dataId: 'button' })); + }); + + it('collectFor returns a collected page model', () => { + document.body.innerHTML = ``; + markVisible('#save'); + + const model = PageModelCollector.collectFor(window, document, { + getElementDataId: (el) => el.id, + }); + + expect(model.interactive).toHaveLength(1); + expect(model.interactive[0]).toEqual(expect.objectContaining({ dataId: 'save' })); + }); +}); + +function collect(options: Partial[2]> = {}) { + return new PageModelCollector(window, document, { + getElementDataId: (el) => el.id, + ...options, + }).collect(); +} diff --git a/packages/page-model/src/collector/extractors/context.test.ts b/packages/page-model/src/collector/extractors/context.test.ts new file mode 100644 index 0000000..ebd9a21 --- /dev/null +++ b/packages/page-model/src/collector/extractors/context.test.ts @@ -0,0 +1,73 @@ +import { describe, expect, it } from 'vitest'; + +import { getElementContext } from './context'; + +describe('getElementContext', () => { + it('collects semantic container path from nearest ancestors', () => { + document.body.innerHTML = ` +
+ +
+ `; + + const button = document.querySelector('button')!; + + expect(getElementContext(button, document).path).toEqual(['form', 'navigation', 'main content']); + }); + + it('deduplicates consecutive container roles', () => { + document.body.innerHTML = ` + + `; + + const link = document.querySelector('a')!; + + expect(getElementContext(link, document).path).toEqual(['navigation']); + }); + + it('uses aria-labelledby as section name', () => { + document.body.innerHTML = ` +
+

Account settings

+ +
+ `; + + const button = document.querySelector('button')!; + + expect(getElementContext(button, document).sectionName).toBe('Account settings'); + }); + + it('falls back to headings for section name', () => { + document.body.innerHTML = ` +
+

Billing details

+ +
+ `; + + const button = document.querySelector('button')!; + + expect(getElementContext(button, document).sectionName).toBe('Billing details'); + }); + + it('ignores section names outside length limits', () => { + document.body.innerHTML = ` +
+ +
+ `; + + const button = document.querySelector('button')!; + + expect(getElementContext(button, document).sectionName).toBeUndefined(); + }); +}); diff --git a/packages/page-model/src/collector/extractors/descriptor.test.ts b/packages/page-model/src/collector/extractors/descriptor.test.ts new file mode 100644 index 0000000..94622ee --- /dev/null +++ b/packages/page-model/src/collector/extractors/descriptor.test.ts @@ -0,0 +1,34 @@ +import { afterEach, describe, expect, it, vi } from 'vitest'; + +import { testDomRect } from '../../test/fixtures'; +import { extractElementDescriptor } from './descriptor'; + +afterEach(() => { + vi.restoreAllMocks(); +}); + +describe('extractElementDescriptor', () => { + it('extracts tag, data id, selector, and bounding box', () => { + document.body.innerHTML = ``; + const button = document.querySelector('button')!; + + vi.spyOn(button, 'getBoundingClientRect').mockReturnValue(testDomRect); + + const descriptor = extractElementDescriptor(button, (el) => `data-${el.id}`); + + expect(descriptor).toEqual({ + tag: 'button', + dataId: 'data-save-button', + selector: expect.any(String), + bbox: { + top: 0, + left: 0, + width: 100, + height: 20, + right: 100, + bottom: 20, + }, + }); + expect(document.querySelector(descriptor.selector)).toBe(button); + }); +}); diff --git a/packages/page-model/src/collector/extractors/primitive/attr.test.ts b/packages/page-model/src/collector/extractors/primitive/attr.test.ts new file mode 100644 index 0000000..dde91dd --- /dev/null +++ b/packages/page-model/src/collector/extractors/primitive/attr.test.ts @@ -0,0 +1,24 @@ +import { describe, expect, it } from 'vitest'; + +import { getElementBooleanAttribute } from './attr'; + +describe('getElementBooleanAttribute', () => { + it('parses true and false values', () => { + const el = document.createElement('div'); + + el.setAttribute('aria-expanded', 'true'); + expect(getElementBooleanAttribute(el, 'aria-expanded')).toBeTruthy(); + + el.setAttribute('aria-expanded', 'false'); + expect(getElementBooleanAttribute(el, 'aria-expanded')).toBeFalsy(); + }); + + it('returns undefined for missing or invalid values', () => { + const el = document.createElement('div'); + + expect(getElementBooleanAttribute(el, 'aria-expanded')).toBeUndefined(); + + el.setAttribute('aria-expanded', 'mixed'); + expect(getElementBooleanAttribute(el, 'aria-expanded')).toBeUndefined(); + }); +}); diff --git a/packages/page-model/src/collector/extractors/primitive/label.test.ts b/packages/page-model/src/collector/extractors/primitive/label.test.ts new file mode 100644 index 0000000..4d41423 --- /dev/null +++ b/packages/page-model/src/collector/extractors/primitive/label.test.ts @@ -0,0 +1,65 @@ +import { describe, expect, it } from 'vitest'; + +import { getElementAttrAriaLabelledBy, getElementLabels } from './label'; + +describe('getElementAttrAriaLabelledBy', () => { + it('resolves referenced label text', () => { + document.body.innerHTML = ` + First + second label + + `; + + const button = document.querySelector('button')!; + + expect(getElementAttrAriaLabelledBy(button, document)).toBe('First second label'); + }); + + it('returns undefined when the attribute is missing', () => { + expect(getElementAttrAriaLabelledBy(document.createElement('button'), document)).toBeUndefined(); + }); +}); + +describe('getElementLabels', () => { + it('returns labels in priority order', () => { + document.body.innerHTML = ` + Visible label + + + `; + + const input = document.querySelector('input')!; + + expect(getElementLabels(input, document)).toEqual([ + { value: 'Visible label', source: 'aria-labelledby' }, + { value: 'Email', source: 'aria-label' }, + { value: 'Email field', source: 'label-for' }, + { value: 'name@example.com', source: 'placeholder' }, + { value: 'Work email', source: 'title' }, + ]); + }); + + it('extracts wrapper labels and deduplicates values case-insensitively', () => { + document.body.innerHTML = ` + + `; + + const button = document.querySelector('button')!; + + expect(getElementLabels(button, document)).toEqual([{ value: 'save', source: 'aria-label' }]); + }); + + it('returns an empty array when no labels are found', () => { + expect(getElementLabels(document.createElement('div'), document)).toEqual([]); + }); +}); diff --git a/packages/page-model/src/collector/extractors/primitive/link.test.ts b/packages/page-model/src/collector/extractors/primitive/link.test.ts new file mode 100644 index 0000000..469acd3 --- /dev/null +++ b/packages/page-model/src/collector/extractors/primitive/link.test.ts @@ -0,0 +1,39 @@ +import { describe, expect, it } from 'vitest'; + +import { getElementLink } from './link'; + +describe('getElementLink', () => { + it('classifies same-origin links as internal', () => { + document.body.innerHTML = `Settings`; + + expect(getElementLink(document.querySelector('a')!)).toEqual({ + type: 'internal', + href: 'http://localhost:3000/settings', + }); + }); + + it('classifies external, anchor, mailto, and tel links', () => { + expect(linkType('https://example.com')).toBe('external'); + expect(linkTypeFromAttribute('#pricing')).toBe('anchor'); + expect(linkType('mailto:hello@app.test')).toBe('mailto'); + expect(linkType('tel:+123456789')).toBe('tel'); + }); + + it('returns undefined without href', () => { + expect(getElementLink(document.createElement('button'))).toBeUndefined(); + }); +}); + +function linkType(href: string) { + const el = document.createElement('a'); + el.setAttribute('href', href); + + return getElementLink(el)?.type; +} + +function linkTypeFromAttribute(href: string) { + const el = document.createElement('div'); + el.setAttribute('href', href); + + return getElementLink(el)?.type; +} diff --git a/packages/page-model/src/collector/extractors/primitive/role.test.ts b/packages/page-model/src/collector/extractors/primitive/role.test.ts new file mode 100644 index 0000000..d108720 --- /dev/null +++ b/packages/page-model/src/collector/extractors/primitive/role.test.ts @@ -0,0 +1,64 @@ +import { describe, expect, it } from 'vitest'; + +import { getContainerRole, getInteractiveRole, roleToInteractiveElementType } from './role'; + +describe('getContainerRole', () => { + it('resolves native container roles', () => { + expect(roleOfContainer('
')).toBe('main content'); + expect(roleOfContainer('')).toBe('navigation'); + expect(roleOfContainer('')).toBe('sidebar'); + }); + + it('resolves aria container roles', () => { + expect(roleOfContainer('
')).toBe('header'); + expect(roleOfContainer('
')).toBe('alert dialog'); + expect(roleOfContainer('
')).toBe('modal dialog'); + }); + + it('returns undefined for unsupported elements', () => { + expect(roleOfContainer('')).toBeUndefined(); + }); +}); + +describe('getInteractiveRole', () => { + it('resolves native interactive roles', () => { + expect(roleOfInteractive('')).toBe('button'); + expect(roleOfInteractive('')).toBe('link'); + expect(roleOfInteractive('')).toBe('textbox'); + }); + + it('resolves input roles by type', () => { + expect(roleOfInteractive('')).toBe('checkbox'); + expect(roleOfInteractive('')).toBe('radio'); + expect(roleOfInteractive('')).toBe('slider'); + expect(roleOfInteractive('')).toBe('searchbox'); + expect(roleOfInteractive('')).toBeUndefined(); + }); + + it('resolves select roles by shape', () => { + expect(roleOfInteractive('')).toBe('combobox'); + expect(roleOfInteractive('')).toBe('listbox'); + expect(roleOfInteractive('')).toBe('listbox'); + }); +}); + +describe('roleToInteractiveElementType', () => { + it('maps roles to element types', () => { + expect(roleToInteractiveElementType('button')).toBe('button'); + expect(roleToInteractiveElementType('link')).toBe('link'); + expect(roleToInteractiveElementType('textbox')).toBe('input'); + expect(roleToInteractiveElementType('checkbox')).toBe('select'); + }); +}); + +function roleOfContainer(html: string) { + document.body.innerHTML = html; + + return getContainerRole(document.body.firstElementChild!); +} + +function roleOfInteractive(html: string) { + document.body.innerHTML = html; + + return getInteractiveRole(document.body.firstElementChild!); +} diff --git a/packages/page-model/src/collector/extractors/primitive/sensitive.test.ts b/packages/page-model/src/collector/extractors/primitive/sensitive.test.ts new file mode 100644 index 0000000..e7a0dac --- /dev/null +++ b/packages/page-model/src/collector/extractors/primitive/sensitive.test.ts @@ -0,0 +1,28 @@ +import { describe, expect, it } from 'vitest'; + +import { isSensitiveElement } from './sensitive'; + +describe('isSensitiveElement', () => { + it('marks sensitive input types', () => { + expect(isSensitiveElement(input(''))).toBeTruthy(); + expect(isSensitiveElement(input(''))).toBeTruthy(); + expect(isSensitiveElement(input(''))).toBeTruthy(); + }); + + it('marks input-like elements with sensitive attributes', () => { + expect(isSensitiveElement(input(''))).toBeTruthy(); + expect(isSensitiveElement(input(''))).toBeTruthy(); + expect(isSensitiveElement(input('
'))).toBeTruthy(); + }); + + it('does not mark regular or non-input-like elements', () => { + expect(isSensitiveElement(input(''))).toBeFalsy(); + expect(isSensitiveElement(input(''))).toBeFalsy(); + }); +}); + +function input(html: string) { + document.body.innerHTML = html; + + return document.body.firstElementChild!; +} diff --git a/packages/page-model/src/collector/extractors/primitive/state.test.ts b/packages/page-model/src/collector/extractors/primitive/state.test.ts new file mode 100644 index 0000000..d7d43ac --- /dev/null +++ b/packages/page-model/src/collector/extractors/primitive/state.test.ts @@ -0,0 +1,34 @@ +import { describe, expect, it } from 'vitest'; + +import { getInteractiveElementState } from './state'; + +describe('getInteractiveElementState', () => { + it('extracts native form states', () => { + document.body.innerHTML = ``; + + expect(getInteractiveElementState(document.querySelector('input')!)).toEqual({ + disabled: true, + readonly: true, + required: true, + checked: true, + }); + }); + + it('lets aria states override native states', () => { + document.body.innerHTML = ``; + + expect(getInteractiveElementState(document.querySelector('button')!)).toEqual({ + disabled: false, + pressed: true, + }); + }); + + it('extracts selected option state', () => { + document.body.innerHTML = ``; + + expect(getInteractiveElementState(document.querySelector('option')!)).toEqual({ + disabled: false, + selected: true, + }); + }); +}); diff --git a/packages/page-model/src/collector/extractors/primitive/text.test.ts b/packages/page-model/src/collector/extractors/primitive/text.test.ts new file mode 100644 index 0000000..086455e --- /dev/null +++ b/packages/page-model/src/collector/extractors/primitive/text.test.ts @@ -0,0 +1,16 @@ +import { describe, expect, it } from 'vitest'; + +import { getElementText } from './text'; + +describe('getElementText', () => { + it('returns normalized text content', () => { + const el = document.createElement('div'); + el.textContent = ' Hello world ! '; + + expect(getElementText(el)).toBe('Hello world!'); + }); + + it('returns undefined for empty text', () => { + expect(getElementText(document.createElement('div'))).toBeUndefined(); + }); +}); diff --git a/packages/page-model/src/collector/extractors/primitive/view.test.ts b/packages/page-model/src/collector/extractors/primitive/view.test.ts new file mode 100644 index 0000000..654b374 --- /dev/null +++ b/packages/page-model/src/collector/extractors/primitive/view.test.ts @@ -0,0 +1,86 @@ +import { afterEach, describe, expect, it, vi } from 'vitest'; + +import { testDomRect } from '../../../test/fixtures'; +import { getElementBoundingBox, isAboveTheFold, isElementVisible, isInViewport } from './view'; + +afterEach(() => { + vi.restoreAllMocks(); +}); + +describe('isElementVisible', () => { + it('returns true for displayed elements with offset parent', () => { + const el = visibleElement(); + + expect(isElementVisible(el, window)).toBeTruthy(); + }); + + it('returns false for hidden computed styles', () => { + const hidden = visibleElement(); + vi.spyOn(window, 'getComputedStyle').mockReturnValue({ + display: 'none', + visibility: 'visible', + opacity: '1', + } as CSSStyleDeclaration); + + expect(isElementVisible(hidden, window)).toBeFalsy(); + }); + + it('returns false without offset parent', () => { + const detached = document.createElement('div'); + Object.defineProperty(detached, 'offsetParent', { + configurable: true, + value: null, + }); + + expect(isElementVisible(detached, window)).toBeFalsy(); + }); +}); + +describe('getElementBoundingBox', () => { + it('maps DOMRect values to a bounding box', () => { + const el = document.createElement('div'); + vi.spyOn(el, 'getBoundingClientRect').mockReturnValue(testDomRect); + + expect(getElementBoundingBox(el)).toEqual({ + top: 0, + left: 0, + width: 100, + height: 20, + right: 100, + bottom: 20, + }); + }); +}); + +describe('viewport helpers', () => { + const viewport = { width: 1024, height: 600, scrollY: 100, scrollHeight: 2000 }; + + it('detects whether a box intersects the viewport', () => { + expect( + isInViewport({ top: 120, bottom: 200, left: 0, right: 10, width: 10, height: 80 }, viewport), + ).toBeTruthy(); + expect( + isInViewport({ top: 800, bottom: 900, left: 0, right: 10, width: 10, height: 100 }, viewport), + ).toBeFalsy(); + }); + + it('detects whether a box starts above the fold', () => { + expect( + isAboveTheFold({ top: 599, bottom: 620, left: 0, right: 10, width: 10, height: 21 }, viewport), + ).toBeTruthy(); + expect( + isAboveTheFold({ top: 600, bottom: 620, left: 0, right: 10, width: 10, height: 20 }, viewport), + ).toBeFalsy(); + }); +}); + +function visibleElement() { + const el = document.createElement('div'); + + Object.defineProperty(el, 'offsetParent', { + configurable: true, + value: document.body, + }); + + return el; +} diff --git a/packages/page-model/src/collector/importance/content.test.ts b/packages/page-model/src/collector/importance/content.test.ts new file mode 100644 index 0000000..d97a834 --- /dev/null +++ b/packages/page-model/src/collector/importance/content.test.ts @@ -0,0 +1,44 @@ +import { describe, expect, it } from 'vitest'; + +import { contentElement } from '../../test/fixtures'; +import { scoreContentElement } from './content'; + +describe('scoreContentElement', () => { + it('returns a normalized score', () => { + const score = scoreContentElement(contentElement()); + + expect(score).toBeGreaterThanOrEqual(0); + expect(score).toBeLessThanOrEqual(1); + }); + + it('scores headings above regular text', () => { + expect(scoreContentElement(contentElement({ type: 'heading' }))).toBeGreaterThan( + scoreContentElement(contentElement()), + ); + }); + + it('scores main named sections above navigation content', () => { + const main = contentElement({ + context: { path: ['main content'], sectionName: 'Pricing' }, + }); + const nav = contentElement({ + context: { path: ['navigation'] }, + }); + + expect(scoreContentElement(main)).toBeGreaterThan(scoreContentElement(nav)); + }); + + it('penalizes footer content', () => { + expect(scoreContentElement(contentElement({ context: { path: ['footer'] } }))).toBeLessThan( + scoreContentElement(contentElement()), + ); + }); + + it('scores medium text above very short text', () => { + const mediumText = 'A useful paragraph with enough words to represent meaningful page content.'.repeat(2); + + expect(scoreContentElement(contentElement({ text: mediumText }))).toBeGreaterThan( + scoreContentElement(contentElement()), + ); + }); +}); diff --git a/packages/page-model/src/collector/importance/interactive.test.ts b/packages/page-model/src/collector/importance/interactive.test.ts new file mode 100644 index 0000000..e416ac0 --- /dev/null +++ b/packages/page-model/src/collector/importance/interactive.test.ts @@ -0,0 +1,52 @@ +import { describe, expect, it } from 'vitest'; + +import { interactiveElement } from '../../test/fixtures'; +import { scoreInteractiveElement } from './interactive'; + +describe('scoreInteractiveElement', () => { + it('returns a normalized score', () => { + const score = scoreInteractiveElement(interactiveElement()); + + expect(score).toBeGreaterThanOrEqual(0); + expect(score).toBeLessThanOrEqual(1); + }); + + it('scores labeled elements above unlabeled elements', () => { + const labeled = interactiveElement({ + labels: [{ source: 'aria-label', value: 'Submit form' }], + text: undefined, + }); + const unlabeled = interactiveElement({ text: undefined }); + + expect(scoreInteractiveElement(labeled)).toBeGreaterThan(scoreInteractiveElement(unlabeled)); + }); + + it('scores critical controls above plain links', () => { + expect(scoreInteractiveElement(interactiveElement({ role: 'button', type: 'button' }))).toBeGreaterThan( + scoreInteractiveElement(interactiveElement({ role: 'link', type: 'link' })), + ); + }); + + it('penalizes disabled or hidden elements', () => { + expect(scoreInteractiveElement(interactiveElement({ state: { disabled: true } }))).toBeLessThan( + scoreInteractiveElement(interactiveElement()), + ); + expect(scoreInteractiveElement(interactiveElement({ state: { hidden: true } }))).toBeLessThan( + scoreInteractiveElement(interactiveElement()), + ); + }); + + it('penalizes very small targets', () => { + const small = interactiveElement({ + bbox: { top: 0, left: 0, width: 10, height: 10, right: 10, bottom: 10 }, + }); + + expect(scoreInteractiveElement(small)).toBeLessThan(scoreInteractiveElement(interactiveElement())); + }); + + it('scores main context above footer context', () => { + expect(scoreInteractiveElement(interactiveElement({ context: { path: ['main content'] } }))).toBeGreaterThan( + scoreInteractiveElement(interactiveElement({ context: { path: ['footer'] } })), + ); + }); +}); diff --git a/packages/page-model/src/collector/importance/scoring.test.ts b/packages/page-model/src/collector/importance/scoring.test.ts new file mode 100644 index 0000000..9ef698d --- /dev/null +++ b/packages/page-model/src/collector/importance/scoring.test.ts @@ -0,0 +1,10 @@ +import { describe, expect, it } from 'vitest'; + +import { scoreContentElement, scoreInteractiveElement } from './scoring'; + +describe('scoring exports', () => { + it('re-exports content and interactive scorers', () => { + expect(scoreContentElement).toBeTypeOf('function'); + expect(scoreInteractiveElement).toBeTypeOf('function'); + }); +}); diff --git a/packages/page-model/src/collector/importance/utils.test.ts b/packages/page-model/src/collector/importance/utils.test.ts new file mode 100644 index 0000000..6747828 --- /dev/null +++ b/packages/page-model/src/collector/importance/utils.test.ts @@ -0,0 +1,41 @@ +import { describe, expect, it } from 'vitest'; + +import { + getMaxImportanceScore, + getMinImportanceScore, + normalizeImportanceScore, + readContextPath, +} from './utils'; + +describe('importance utils', () => { + it('calculates min and max scores from weights', () => { + const weights = { positive: 3, neutral: 0, negative: -2 }; + + expect(getMinImportanceScore(weights)).toBe(-2); + expect(getMaxImportanceScore(weights)).toBe(3); + }); + + it('normalizes scores into the 0..1 range', () => { + expect(normalizeImportanceScore(-10, 0, 10)).toBe(0); + expect(normalizeImportanceScore(20, 0, 10)).toBe(1); + expect(normalizeImportanceScore(5, 0, 10)).toBe(0.5); + }); + + it('reads context flags from container roles', () => { + expect(readContextPath(['main content', 'modal dialog', 'navigation', 'footer'])).toEqual({ + inMain: true, + inDialog: true, + inFooter: true, + inNav: true, + }); + }); + + it('returns false flags for empty context', () => { + expect(readContextPath([])).toEqual({ + inMain: false, + inDialog: false, + inFooter: false, + inNav: false, + }); + }); +}); diff --git a/packages/page-model/src/semantic/format.test.ts b/packages/page-model/src/semantic/format.test.ts new file mode 100644 index 0000000..2e93a08 --- /dev/null +++ b/packages/page-model/src/semantic/format.test.ts @@ -0,0 +1,93 @@ +import { describe, expect, it } from 'vitest'; + +import { contentElement, interactiveElement } from '../test/fixtures'; +import { + formantElementContextPath, + formatConcatElements, + formatContentElement, + formatContentElementShort, + formatInteractiveElement, + formatInteractiveElementShort, +} from './format'; + +describe('formatContentElementShort', () => { + it('formats tag and text', () => { + expect(formatContentElementShort(contentElement())).toBe('p. Welcome'); + }); + + it('uses text override', () => { + expect(formatContentElementShort(contentElement(), 'Hello')).toBe('p. Hello'); + }); +}); + +describe('formatInteractiveElementShort', () => { + it('uses the first label as anchor', () => { + expect( + formatInteractiveElementShort( + interactiveElement({ + labels: [{ source: 'aria-label', value: 'Submit form' }], + }), + ), + ).toBe('button. Submit form'); + }); + + it('falls back to text', () => { + expect(formatInteractiveElementShort(interactiveElement())).toBe('button. Save'); + }); +}); + +describe('formatConcatElements', () => { + it('joins formatted elements', () => { + expect(formatConcatElements(['one', 'two', 'three'])).toBe('one | two | three'); + }); +}); + +describe('formantElementContextPath', () => { + it('joins context path roles', () => { + expect(formantElementContextPath(['main content', 'form'])).toBe('main content > form'); + }); +}); + +describe('formatContentElement', () => { + it('formats content with context', () => { + expect( + formatContentElement( + contentElement({ + type: 'heading', + text: 'Pricing', + context: { sectionName: 'Plans', path: ['main content'] }, + }), + ), + ).toBe('heading. Pricing. in section "Plans". inside "main content"'); + }); +}); + +describe('formatInteractiveElement', () => { + it('formats button name, state, visibility, and context', () => { + expect( + formatInteractiveElement( + interactiveElement({ + labels: [{ source: 'aria-label', value: 'Save changes' }], + state: { disabled: true, required: true }, + aboveTheFold: true, + context: { path: ['form'], sectionName: 'Profile' }, + }), + ), + ).toBe( + 'button. click action. name "Save changes; Save". disabled. required. visible on initial screen. in section "Profile". inside "form"', + ); + }); + + it('formats links by link type', () => { + expect( + formatInteractiveElement( + interactiveElement({ + type: 'link', + role: 'link', + text: 'Docs', + link: { type: 'external', href: 'https://example.com/docs' }, + }), + ), + ).toBe('external link. click action. name "Docs"'); + }); +}); diff --git a/packages/page-model/src/test/dom.ts b/packages/page-model/src/test/dom.ts new file mode 100644 index 0000000..0ada86e --- /dev/null +++ b/packages/page-model/src/test/dom.ts @@ -0,0 +1,52 @@ +import { vi } from 'vitest'; + +import { testDomRect } from './fixtures'; + +export function resetDocument() { + document.head.innerHTML = ''; + document.body.innerHTML = ''; + document.title = ''; + document.documentElement.lang = ''; +} + +export function markVisible(selector: string, rect: DOMRect = testDomRect) { + const el = document.querySelector(selector)!; + + Object.defineProperty(el, 'offsetParent', { + configurable: true, + value: document.body, + }); + vi.spyOn(el, 'getBoundingClientRect').mockReturnValue(rect); + + return el; +} + +export function markHidden(selector: string) { + const el = document.querySelector(selector)!; + + Object.defineProperty(el, 'offsetParent', { + configurable: true, + value: null, + }); + + return el; +} + +export function setViewport(viewport: { width: number; height: number; scrollY: number; scrollHeight: number }) { + Object.defineProperty(window, 'innerWidth', { + configurable: true, + value: viewport.width, + }); + Object.defineProperty(window, 'innerHeight', { + configurable: true, + value: viewport.height, + }); + Object.defineProperty(window, 'scrollY', { + configurable: true, + value: viewport.scrollY, + }); + Object.defineProperty(document.documentElement, 'scrollHeight', { + configurable: true, + value: viewport.scrollHeight, + }); +} diff --git a/packages/page-model/src/test/fixtures.ts b/packages/page-model/src/test/fixtures.ts new file mode 100644 index 0000000..c3c5536 --- /dev/null +++ b/packages/page-model/src/test/fixtures.ts @@ -0,0 +1,53 @@ +import type { BoundingBox, ContentElement, InteractiveElement } from '../types'; + +export const testBoundingBox: BoundingBox = { + top: 0, + left: 0, + width: 100, + height: 20, + right: 100, + bottom: 20, +}; + +export const testDomRect: DOMRect = { + ...testBoundingBox, + x: testBoundingBox.left, + y: testBoundingBox.top, + toJSON: () => {}, +} as DOMRect; + +export function contentElement(overrides: Partial = {}): ContentElement { + return { + kind: 'content', + type: 'text', + tag: 'p', + dataId: 'content-1', + selector: '#content-1', + bbox: testBoundingBox, + context: { path: [] }, + text: 'Welcome', + importanceScore: 0, + ...overrides, + }; +} + +export function interactiveElement(overrides: Partial = {}): InteractiveElement { + return { + kind: 'interactive', + type: 'button', + role: 'button', + tag: 'button', + dataId: 'button-1', + selector: '#button-1', + bbox: { ...testBoundingBox, height: 40, bottom: 40 }, + context: { path: [] }, + text: 'Save', + labels: [], + state: {}, + link: undefined, + inViewport: false, + aboveTheFold: false, + importanceScore: 0, + ...overrides, + }; +} diff --git a/packages/page-model/src/utils/array.test.ts b/packages/page-model/src/utils/array.test.ts new file mode 100644 index 0000000..f9d06ff --- /dev/null +++ b/packages/page-model/src/utils/array.test.ts @@ -0,0 +1,28 @@ +import { describe, expect, it } from 'vitest'; + +import { dedupeBy } from './array'; + +describe('dedupeBy', () => { + it('keeps the first item for each key', () => { + const items = [ + { id: 'a', value: 1 }, + { id: 'b', value: 2 }, + { id: 'a', value: 3 }, + ]; + + expect(dedupeBy(items, (item) => item.id)).toEqual([ + { id: 'a', value: 1 }, + { id: 'b', value: 2 }, + ]); + }); + + it('returns all items when keys are unique', () => { + const items = ['a', 'b', 'c']; + + expect(dedupeBy(items, (item) => item)).toEqual(items); + }); + + it('returns an empty array for empty input', () => { + expect(dedupeBy([], String)).toEqual([]); + }); +}); diff --git a/packages/page-model/src/utils/text.test.ts b/packages/page-model/src/utils/text.test.ts new file mode 100644 index 0000000..5b77cba --- /dev/null +++ b/packages/page-model/src/utils/text.test.ts @@ -0,0 +1,23 @@ +import { describe, expect, it } from 'vitest'; + +import { normalizeText } from './text'; + +describe('normalizeText', () => { + it('trims leading and trailing whitespace', () => { + expect(normalizeText(' Hello world ')).toBe('Hello world'); + }); + + it('collapses repeated whitespace into a single space', () => { + expect(normalizeText('Hello world\nfrom\tFlowForge')).toBe('Hello world from FlowForge'); + }); + + it('removes whitespace before punctuation', () => { + expect(normalizeText('Hello , world ! Is it ok ? Yes : fine ; done .')).toBe( + 'Hello, world! Is it ok? Yes: fine; done.', + ); + }); + + it('returns an empty string for whitespace-only input', () => { + expect(normalizeText(' \n\t ')).toBe(''); + }); +}); diff --git a/packages/page-model/tsconfig.json b/packages/page-model/tsconfig.json index f30a14f..a8723e2 100644 --- a/packages/page-model/tsconfig.json +++ b/packages/page-model/tsconfig.json @@ -18,5 +18,5 @@ "outDir": "./dist" }, "include": ["src/**/*"], - "exclude": ["**/*.test.ts"] + "exclude": ["**/*.test.ts", "src/test/**"] } diff --git a/packages/page-model/vitest.config.mjs b/packages/page-model/vitest.config.mjs new file mode 100644 index 0000000..b80b6df --- /dev/null +++ b/packages/page-model/vitest.config.mjs @@ -0,0 +1,25 @@ +import { defineConfig } from 'vitest/config'; + +export default defineConfig({ + test: { + environment: 'happy-dom', + include: ['src/**/*.test.ts'], + reporters: ['default', 'junit'], + outputFile: { + junit: './reports/unit-tests/results/junit.xml', + }, + coverage: { + provider: 'v8', + reportsDirectory: './reports/unit-tests/coverage', + reporter: ['text', 'html', 'lcov'], + include: ['src/**/*.ts'], + exclude: ['src/**/*.test.ts', 'src/test/**', 'src/types/**', 'src/index.ts'], + thresholds: { + statements: 80, + branches: 70, + functions: 80, + lines: 80, + }, + }, + }, +}); From cebd1eb8934ddc7dfa0576a66a03fe2499533770 Mon Sep 17 00:00:00 2001 From: cerberus-ab Date: Sun, 9 Aug 2026 22:22:35 +0200 Subject: [PATCH 04/20] Add context for agents --- .agents/rules/architecture.md | 10 ++ .agents/rules/documentation.md | 125 ++++++++++++++++++++++++ .agents/skills/update-docs/SKILL.md | 21 +++++ .claude/commands/update-docs.md | 141 ---------------------------- AGENTS.md | 23 +++++ CLAUDE.md | 1 + 6 files changed, 180 insertions(+), 141 deletions(-) create mode 100644 .agents/rules/architecture.md create mode 100644 .agents/rules/documentation.md create mode 100644 .agents/skills/update-docs/SKILL.md delete mode 100644 .claude/commands/update-docs.md create mode 100644 AGENTS.md create mode 100644 CLAUDE.md diff --git a/.agents/rules/architecture.md b/.agents/rules/architecture.md new file mode 100644 index 0000000..cbc5cec --- /dev/null +++ b/.agents/rules/architecture.md @@ -0,0 +1,10 @@ +# Architecture Rules + +Architecture source of truth: + +- `docs/ARCHITECTURE.md` +- `docs/DOM-TO-RAG-PIPELINE.md` + +Read these docs before architectural or DOM-to-RAG pipeline changes. + +If docs conflict with code, treat code as primary and update docs. diff --git a/.agents/rules/documentation.md b/.agents/rules/documentation.md new file mode 100644 index 0000000..3e803bf --- /dev/null +++ b/.agents/rules/documentation.md @@ -0,0 +1,125 @@ +# Documentation Rules + +Use these rules when creating or updating project documentation. + +## Goal + +Update documentation based strictly on the current codebase and existing docs. + +Rewrite and align documentation. Do not invent or expand it beyond the +implemented project. + +## Sources of truth + +1. Codebase +2. Existing documentation + +If something is unclear or missing, omit it. + +## Files to update + +- `README.md` +- `docs/ARCHITECTURE.md` +- `docs/DOM-TO-RAG-PIPELINE.md` +- `packages/page-model/README.md` +- `apps/backend/README.md` +- `apps/extension/README.md` + +## Rules + +- Do not invent features, APIs, workflows, or architecture. +- Keep terminology consistent across all docs. +- Align all documents with each other and the codebase. +- Avoid duplication between files. +- Be concise, clear, and structured. +- Keep links valid. +- Keep commands correct. +- Keep Markdown clean. +- If content exceeds scope, trim it instead of expanding other docs. + +## Document roles + +- `README.md` — entry point: what it is and how to run it. +- `docs/ARCHITECTURE.md` — high-level system overview. +- `docs/DOM-TO-RAG-PIPELINE.md` — DOM-to-RAG pipeline description. +- `packages/page-model/README.md` — canonical DOM representation (`PageModel`). +- `apps/backend/README.md` — backend responsibilities and usage. +- `apps/extension/README.md` — extension responsibilities and usage. + +## Target structure + +### `README.md` + +Target length: 100–120 lines. + +- "Forging your experience..." +- Demo +- Overview +- Use Cases +- Disclaimer +- Quick Start +- Usage +- Security +- Roadmap +- Documentation +- License + +### `docs/ARCHITECTURE.md` + +Target length: 80–100 lines. + +- Overview +- Components +- Interaction Flow +- Pipeline (high-level) +- Key Decisions +- Contracts +- Constraints + +### `docs/DOM-TO-RAG-PIPELINE.md` + +Target length: 80–100 lines. + +- Overview +- Stages: + - Extraction to Structure Representation + - Transforming to Semantic Representation + - Indexing / Retrieval + - Reranking + - Resolution to Tool Results + +### `packages/page-model/README.md` + +Target length: 60–80 lines. + +- Overview +- Structure +- Content elements +- Interactive elements +- Context +- Importance +- Format +- Usage + +### `apps/backend/README.md` + +Target length: 50–60 lines. + +- Purpose +- Responsibilities +- Run +- Configuration +- API (short) +- Key Parts +- Notes + +### `apps/extension/README.md` + +Target length: 50–60 lines. + +- Purpose +- Responsibilities +- Run +- Load in Chrome +- Key Parts +- Notes diff --git a/.agents/skills/update-docs/SKILL.md b/.agents/skills/update-docs/SKILL.md new file mode 100644 index 0000000..be9ba5b --- /dev/null +++ b/.agents/skills/update-docs/SKILL.md @@ -0,0 +1,21 @@ +--- +name: update-docs +description: Update project documentation based strictly on the current codebase and existing docs. +--- + +# Update Docs + +Use this skill when updating project documentation. + +## Required context + +- `.agents/rules/documentation.md` +- `.agents/rules/architecture.md` + +## Workflow + +1. Review the documentation targets. +2. Inspect the relevant code before changing docs. +3. Identify stale, duplicated, or unsupported claims. +4. Update docs according to the documentation rules. +5. Run relevant formatting or validation checks if available. diff --git a/.claude/commands/update-docs.md b/.claude/commands/update-docs.md deleted file mode 100644 index 97ff05a..0000000 --- a/.claude/commands/update-docs.md +++ /dev/null @@ -1,141 +0,0 @@ -You are updating project documentation based strictly on the current codebase and existing docs. - -Your goal is to rewrite and align documentation — not to invent or expand it. - ---- - -SOURCE OF TRUTH - -- Codebase (primary) -- Existing documentation (secondary) - -If something is unclear or missing — omit it. Do NOT assume. - ---- - -FILES TO UPDATE - -- README.md -- docs/ARCHITECTURE.md -- docs/DOM-TO-RAG-PIPELINE.md -- packages/page-model/README.md -- apps/backend/README.md -- apps/extension/README.md - ---- - -RULES - -- Do not invent features, APIs, or workflows -- Keep terminology consistent across all docs -- Align all documents with each other and the codebase -- Avoid duplication between files -- Be concise, clear, and structured - ---- - -DOCUMENT ROLES - -- README.md → entry point (what it is, how to run) -- ARCHITECTURE.md → high-level system overview -- DOM-TO-RAG-PIPELINE.md → pipeline description -- page-model README → canonical DOM representation (PageModel) -- backend README → backend responsibilities and usage -- extension README → extension responsibilities and usage - ---- - -TARGET STRUCTURE - -README.md (100–120 lines) - -- "Forging your experience..." -- Demo -- Overview -- Use Cases -- Disclaimer -- Quick Start -- Usage -- Security -- Roadmap -- Documentation -- License - ---- - -docs/ARCHITECTURE.md (80–100 lines) - -- Overview -- Components -- Interaction Flow -- Pipeline (high-level) -- Key Decisions -- Contracts -- Constraints - ---- - -docs/DOM-TO-RAG-PIPELINE.md (80–100 lines) - -- Overview -- Stages: - - Extraction to Structure Representation - - Transforming to Semantic Representation - - Indexing / Retrieval - - Reranking - - Resolution to Tool Results - ---- - -packages/page-model/README.md (60–80 lines) - -- Overview -- Structure -- Content elements -- Interactive elements -- Context -- Importance -- Format -- Usage - ---- - -apps/backend/README.md (50–60 lines) - -- Purpose -- Responsibilities -- Run -- Configuration -- API (short) -- Key Parts -- Notes - ---- - -apps/extension/README.md (50–60 lines) - -- Purpose -- Responsibilities -- Run -- Load in Chrome -- Key Parts -- Notes - ---- - -IMPORTANT - -- Keep links valid -- Keep commands correct -- Keep markdown clean -- If content exceeds scope → trim, don’t expand other docs - ---- - -TASK - -1. Review all files -2. Rewrite to match structure and size limits -3. Align terminology across all docs -4. Remove duplication -5. Output updated content for all files diff --git a/AGENTS.md b/AGENTS.md new file mode 100644 index 0000000..32e416f --- /dev/null +++ b/AGENTS.md @@ -0,0 +1,23 @@ +# Agent Instructions + +## Overview + +FlowForge is a Web Onboarding Assistant that provides contextual UI guidance in +web applications. It is an npm workspace project with a browser extension, +backend, and shared packages. + +## Precedence + +`AGENTS.md` is the canonical shared instruction file. `CLAUDE.md` is only a +Claude compatibility shim that imports `AGENTS.md`; if they ever conflict, +`AGENTS.md` takes precedence. + +## Guidance + +Shared agent guidance lives in `.agents/`. + +- `.agents/rules/architecture.md` +- `.agents/rules/documentation.md` +- `.agents/skills/update-docs/SKILL.md` + +Use relevant rules and skills before making changes. diff --git a/CLAUDE.md b/CLAUDE.md new file mode 100644 index 0000000..43c994c --- /dev/null +++ b/CLAUDE.md @@ -0,0 +1 @@ +@AGENTS.md From ef8752d0ffb1726c2a3b8703b587b33f46bb8cc5 Mon Sep 17 00:00:00 2001 From: cerberus-ab Date: Tue, 11 Aug 2026 00:34:40 +0200 Subject: [PATCH 05/20] Rename page-model to page-trail --- .agents/rules/documentation.md | 6 +- .github/workflows/ci.yml | 14 ++-- README.md | 2 +- apps/backend/package.json | 2 +- .../src/agent/tools/AbstractCallableTool.ts | 6 +- .../src/agent/tools/ToolGetPageSummary.ts | 14 ++-- .../src/indexer/PageContextProvider.ts | 10 +-- apps/backend/src/indexer/PageIndexer.ts | 28 ++++---- .../AbstractDocumentTransformer.ts | 10 +-- .../CompositeDocumentTransformer.ts | 8 +-- .../ContentElementsTransformer.ts | 8 +-- .../InteractiveElementsTransformer.ts | 6 +- apps/backend/src/server/routes/query.ts | 12 ++-- apps/backend/src/types/documents.ts | 4 +- apps/extension/package.json | 2 +- .../src/background/BackgroundWorker.ts | 28 ++++---- apps/extension/src/core/types/messages.ts | 16 ++--- apps/extension/src/page/hooks/usePage.ts | 10 +-- docs/ARCHITECTURE.md | 6 +- docs/BACKLOG.md | 2 +- docs/DOM-TO-RAG-PIPELINE.md | 2 +- docs/assets/architecture-overview.png | Bin 245616 -> 238245 bytes docs/assets/architecture-overview.webp | Bin 67320 -> 66358 bytes docs/assets/dom-rag-pipeline.png | Bin 229909 -> 222564 bytes docs/assets/dom-rag-pipeline.webp | Bin 59250 -> 58714 bytes package-lock.json | 33 ++++++++-- package.json | 2 +- packages/contract/package.json | 2 +- packages/contract/src/index.ts | 2 +- packages/contract/src/types/api.ts | 4 +- packages/page-model/src/index.ts | 4 -- packages/page-model/src/types/index.ts | 1 - .../{page-model => page-trail}/.gitignore | 0 packages/{page-model => page-trail}/README.md | 8 +-- .../eslint.config.mjs | 0 .../{page-model => page-trail}/package.json | 2 +- .../src/collector/PageTrailCollector.test.ts} | 13 ++-- .../src/collector/PageTrailCollector.ts} | 61 ++++++++---------- .../src/collector/extractors/context.test.ts | 0 .../src/collector/extractors/context.ts | 0 .../collector/extractors/descriptor.test.ts | 0 .../src/collector/extractors/descriptor.ts | 0 .../extractors/primitive/attr.test.ts | 0 .../collector/extractors/primitive/attr.ts | 0 .../extractors/primitive/label.test.ts | 0 .../collector/extractors/primitive/label.ts | 0 .../extractors/primitive/link.test.ts | 0 .../collector/extractors/primitive/link.ts | 0 .../extractors/primitive/role.test.ts | 0 .../collector/extractors/primitive/role.ts | 0 .../extractors/primitive/sensitive.test.ts | 0 .../extractors/primitive/sensitive.ts | 0 .../extractors/primitive/state.test.ts | 0 .../collector/extractors/primitive/state.ts | 0 .../extractors/primitive/text.test.ts | 0 .../collector/extractors/primitive/text.ts | 0 .../extractors/primitive/view.test.ts | 0 .../collector/extractors/primitive/view.ts | 0 .../src/collector/importance/content.test.ts | 0 .../src/collector/importance/content.ts | 0 .../collector/importance/interactive.test.ts | 0 .../src/collector/importance/interactive.ts | 0 .../src/collector/importance/scoring.test.ts | 0 .../src/collector/importance/scoring.ts | 0 .../src/collector/importance/topEl.test.ts | 45 +++++++++++++ .../src/collector/importance/topEl.ts | 30 +++++++++ .../src/collector/importance/utils.test.ts | 0 .../src/collector/importance/utils.ts | 0 packages/page-trail/src/index.ts | 4 ++ .../src/semantic/format.test.ts | 0 .../src/semantic/format.ts | 2 +- .../src/test/dom.ts | 0 .../src/test/fixtures.ts | 0 packages/page-trail/src/types/index.ts | 1 + .../src/types/pageTrail.ts} | 2 +- .../src/utils/array.test.ts | 0 .../src/utils/array.ts | 0 .../src/utils/index.ts | 0 .../src/utils/text.test.ts | 0 .../src/utils/text.ts | 0 .../{page-model => page-trail}/tsconfig.json | 0 .../vitest.config.mjs | 0 82 files changed, 249 insertions(+), 163 deletions(-) delete mode 100644 packages/page-model/src/index.ts delete mode 100644 packages/page-model/src/types/index.ts rename packages/{page-model => page-trail}/.gitignore (100%) rename packages/{page-model => page-trail}/README.md (92%) rename packages/{page-model => page-trail}/eslint.config.mjs (100%) rename packages/{page-model => page-trail}/package.json (96%) rename packages/{page-model/src/collector/PageModelCollector.test.ts => page-trail/src/collector/PageTrailCollector.test.ts} (93%) rename packages/{page-model/src/collector/PageModelCollector.ts => page-trail/src/collector/PageTrailCollector.ts} (78%) rename packages/{page-model => page-trail}/src/collector/extractors/context.test.ts (100%) rename packages/{page-model => page-trail}/src/collector/extractors/context.ts (100%) rename packages/{page-model => page-trail}/src/collector/extractors/descriptor.test.ts (100%) rename packages/{page-model => page-trail}/src/collector/extractors/descriptor.ts (100%) rename packages/{page-model => page-trail}/src/collector/extractors/primitive/attr.test.ts (100%) rename packages/{page-model => page-trail}/src/collector/extractors/primitive/attr.ts (100%) rename packages/{page-model => page-trail}/src/collector/extractors/primitive/label.test.ts (100%) rename packages/{page-model => page-trail}/src/collector/extractors/primitive/label.ts (100%) rename packages/{page-model => page-trail}/src/collector/extractors/primitive/link.test.ts (100%) rename packages/{page-model => page-trail}/src/collector/extractors/primitive/link.ts (100%) rename packages/{page-model => page-trail}/src/collector/extractors/primitive/role.test.ts (100%) rename packages/{page-model => page-trail}/src/collector/extractors/primitive/role.ts (100%) rename packages/{page-model => page-trail}/src/collector/extractors/primitive/sensitive.test.ts (100%) rename packages/{page-model => page-trail}/src/collector/extractors/primitive/sensitive.ts (100%) rename packages/{page-model => page-trail}/src/collector/extractors/primitive/state.test.ts (100%) rename packages/{page-model => page-trail}/src/collector/extractors/primitive/state.ts (100%) rename packages/{page-model => page-trail}/src/collector/extractors/primitive/text.test.ts (100%) rename packages/{page-model => page-trail}/src/collector/extractors/primitive/text.ts (100%) rename packages/{page-model => page-trail}/src/collector/extractors/primitive/view.test.ts (100%) rename packages/{page-model => page-trail}/src/collector/extractors/primitive/view.ts (100%) rename packages/{page-model => page-trail}/src/collector/importance/content.test.ts (100%) rename packages/{page-model => page-trail}/src/collector/importance/content.ts (100%) rename packages/{page-model => page-trail}/src/collector/importance/interactive.test.ts (100%) rename packages/{page-model => page-trail}/src/collector/importance/interactive.ts (100%) rename packages/{page-model => page-trail}/src/collector/importance/scoring.test.ts (100%) rename packages/{page-model => page-trail}/src/collector/importance/scoring.ts (100%) create mode 100644 packages/page-trail/src/collector/importance/topEl.test.ts create mode 100644 packages/page-trail/src/collector/importance/topEl.ts rename packages/{page-model => page-trail}/src/collector/importance/utils.test.ts (100%) rename packages/{page-model => page-trail}/src/collector/importance/utils.ts (100%) create mode 100644 packages/page-trail/src/index.ts rename packages/{page-model => page-trail}/src/semantic/format.test.ts (100%) rename packages/{page-model => page-trail}/src/semantic/format.ts (99%) rename packages/{page-model => page-trail}/src/test/dom.ts (100%) rename packages/{page-model => page-trail}/src/test/fixtures.ts (100%) create mode 100644 packages/page-trail/src/types/index.ts rename packages/{page-model/src/types/pageModel.ts => page-trail/src/types/pageTrail.ts} (99%) rename packages/{page-model => page-trail}/src/utils/array.test.ts (100%) rename packages/{page-model => page-trail}/src/utils/array.ts (100%) rename packages/{page-model => page-trail}/src/utils/index.ts (100%) rename packages/{page-model => page-trail}/src/utils/text.test.ts (100%) rename packages/{page-model => page-trail}/src/utils/text.ts (100%) rename packages/{page-model => page-trail}/tsconfig.json (100%) rename packages/{page-model => page-trail}/vitest.config.mjs (100%) diff --git a/.agents/rules/documentation.md b/.agents/rules/documentation.md index 3e803bf..f8f3b28 100644 --- a/.agents/rules/documentation.md +++ b/.agents/rules/documentation.md @@ -21,7 +21,7 @@ If something is unclear or missing, omit it. - `README.md` - `docs/ARCHITECTURE.md` - `docs/DOM-TO-RAG-PIPELINE.md` -- `packages/page-model/README.md` +- `packages/page-trail/README.md` - `apps/backend/README.md` - `apps/extension/README.md` @@ -42,7 +42,7 @@ If something is unclear or missing, omit it. - `README.md` — entry point: what it is and how to run it. - `docs/ARCHITECTURE.md` — high-level system overview. - `docs/DOM-TO-RAG-PIPELINE.md` — DOM-to-RAG pipeline description. -- `packages/page-model/README.md` — canonical DOM representation (`PageModel`). +- `packages/page-trail/README.md` — canonical DOM representation (`PageTrail`). - `apps/backend/README.md` — backend responsibilities and usage. - `apps/extension/README.md` — extension responsibilities and usage. @@ -88,7 +88,7 @@ Target length: 80–100 lines. - Reranking - Resolution to Tool Results -### `packages/page-model/README.md` +### `packages/page-trail/README.md` Target length: 60–80 lines. diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index fb425f4..d3c05f1 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -32,17 +32,17 @@ jobs: node-version: 22 cache: npm - run: npm ci - # page-model - - run: npm run typecheck -w @flowforge/page-model - - run: npm run test -w @flowforge/page-model + # page-trail + - run: npm run typecheck -w @flowforge/page-trail + - run: npm run test -w @flowforge/page-trail - if: ${{ !cancelled() }} uses: dorny/test-reporter@v3 with: - name: page-model/unit-tests - path: packages/page-model/reports/unit-tests/results/junit.xml + name: page-trail/unit-tests + path: packages/page-trail/reports/unit-tests/results/junit.xml reporter: jest-junit fail-on-error: false - - run: npm run build -w @flowforge/page-model + - run: npm run build -w @flowforge/page-trail # contract - run: npm run typecheck -w @flowforge/contract - run: npm run build -w @flowforge/contract @@ -51,7 +51,7 @@ jobs: with: name: packages-build path: | - packages/page-model/dist + packages/page-trail/dist packages/contract/dist apps: diff --git a/README.md b/README.md index 0f286b7..97b1197 100644 --- a/README.md +++ b/README.md @@ -104,7 +104,7 @@ Focus areas: - [Architecture](docs/ARCHITECTURE.md) — system design and component interaction - [DOM to RAG Pipeline](docs/DOM-TO-RAG-PIPELINE.md) – from DOM to actionable intelligence -- [PageModel](packages/page-model/README.md) — DOM representation for UI understanding +- [PageTrail](packages/page-trail/README.md) — DOM representation for UI understanding - [Backend](apps/backend/README.md) — AI agent backend and RAG pipeline - [Extension](apps/extension/README.md) — browser extension and page extraction diff --git a/apps/backend/package.json b/apps/backend/package.json index 74334f4..e473d2b 100644 --- a/apps/backend/package.json +++ b/apps/backend/package.json @@ -40,7 +40,7 @@ ], "dependencies": { "@flowforge/contract": "*", - "@flowforge/page-model": "*", + "@flowforge/page-trail": "*", "@lancedb/lancedb": "^0.27.1", "@langchain/core": "^1.1.35", "@langchain/ollama": "^1.2.6", diff --git a/apps/backend/src/agent/tools/AbstractCallableTool.ts b/apps/backend/src/agent/tools/AbstractCallableTool.ts index 111d6ed..b6a0abd 100644 --- a/apps/backend/src/agent/tools/AbstractCallableTool.ts +++ b/apps/backend/src/agent/tools/AbstractCallableTool.ts @@ -1,7 +1,7 @@ import type { DynamicStructuredTool } from '@langchain/core/tools'; import { PageContextProvider } from '#self/indexer'; import type { CallableTool, CallableToolResult, CallableToolResultData, ToolResultElement } from '#self/types'; -import { formantElementContextPath, type BaseElement } from '@flowforge/page-model'; +import { formantElementContextPath, type BaseElement } from '@flowforge/page-trail'; export abstract class AbstractCallableTool implements CallableTool { readonly name: string; @@ -18,7 +18,7 @@ export abstract class AbstractCallableTool implements CallableTool { abstract createStructuredTool(ctx: PageContextProvider): DynamicStructuredTool; async call(ctx: PageContextProvider, query: string): Promise { - console.log(`[Tool] Call ${this.name} for ${ctx.pageModel.basics.url}: ${query}`); + console.log(`[Tool] Call ${this.name} for ${ctx.pageTrail.basics.url}: ${query}`); try { const resultData = await this.callFn(ctx, query); const result: CallableToolResult = { @@ -27,7 +27,7 @@ export abstract class AbstractCallableTool implements CallableTool { }; return AbstractCallableTool.serialiseResult(result); } catch (error) { - console.error(`[Tool] Error calling ${this.name} for ${ctx.pageModel.basics.url}:`, error); + console.error(`[Tool] Error calling ${this.name} for ${ctx.pageTrail.basics.url}:`, error); const result: CallableToolResult = { success: false, error: error instanceof Error ? error.message : 'Unknown error', diff --git a/apps/backend/src/agent/tools/ToolGetPageSummary.ts b/apps/backend/src/agent/tools/ToolGetPageSummary.ts index 932e0b7..7242d41 100644 --- a/apps/backend/src/agent/tools/ToolGetPageSummary.ts +++ b/apps/backend/src/agent/tools/ToolGetPageSummary.ts @@ -9,7 +9,7 @@ import { formatConcatElements, formatContentElementShort, formatInteractiveElementShort, -} from '@flowforge/page-model'; +} from '@flowforge/page-trail'; export class ToolGetPageSummary extends AbstractCallableTool { private readonly elementsHeadingsLimit: number; @@ -23,24 +23,24 @@ export class ToolGetPageSummary extends AbstractCallableTool { override async callFn(ctx: PageContextProvider): Promise { // Get top headings - const sampleHeadings = ctx.pageModel.content + const sampleHeadings = ctx.pageTrail.content .filter((el) => el.type === 'heading') .sort((a, b) => b.importanceScore - a.importanceScore) .slice(0, this.elementsHeadingsLimit) .map((el) => formatContentElementShort(el)); // Get top interactions - const sampleInteractions = ctx.pageModel.interactive + const sampleInteractions = ctx.pageTrail.interactive .filter((el) => el.labels.length > 0 || el.text) .sort((a, b) => b.importanceScore - a.importanceScore) .slice(0, this.elementsInteractionsLimit) .map((el) => formatInteractiveElementShort(el)); return { - title: ctx.pageModel.basics.title, - url: ctx.pageModel.basics.url, - description: ctx.pageModel.basics.description, - language: ctx.pageModel.basics.language, + title: ctx.pageTrail.basics.title, + url: ctx.pageTrail.basics.url, + description: ctx.pageTrail.basics.description, + language: ctx.pageTrail.basics.language, sampleHeadings: formatConcatElements(sampleHeadings), sampleInteractions: formatConcatElements(sampleInteractions), }; diff --git a/apps/backend/src/indexer/PageContextProvider.ts b/apps/backend/src/indexer/PageContextProvider.ts index 8eba8bb..bfb35e5 100644 --- a/apps/backend/src/indexer/PageContextProvider.ts +++ b/apps/backend/src/indexer/PageContextProvider.ts @@ -1,17 +1,17 @@ import type { DocumentRetriever, RetrievedDocument, RetrieveOptions } from '#self/types'; import { PageIndexer } from './PageIndexer.ts'; -import type { PageModel } from '@flowforge/page-model'; +import type { PageTrail } from '@flowforge/page-trail'; export class PageContextProvider implements DocumentRetriever { - readonly pageModel: PageModel; + readonly pageTrail: PageTrail; private readonly indexer: PageIndexer; - constructor(pageModel: PageModel, indexer: PageIndexer) { - this.pageModel = pageModel; + constructor(pageTrail: PageTrail, indexer: PageIndexer) { + this.pageTrail = pageTrail; this.indexer = indexer; } async retrieve(query: string, params: RetrieveOptions = { k: 5 }): Promise { - return this.indexer.searchForPage(this.pageModel, query, params); + return this.indexer.searchForPage(this.pageTrail, query, params); } } diff --git a/apps/backend/src/indexer/PageIndexer.ts b/apps/backend/src/indexer/PageIndexer.ts index 34f48bd..80a626e 100644 --- a/apps/backend/src/indexer/PageIndexer.ts +++ b/apps/backend/src/indexer/PageIndexer.ts @@ -8,7 +8,7 @@ import type { } from '#self/types'; import { VectorStorageFactory } from './vector/VectorStorageFactory.ts'; import { CompositeDocumentTransformer } from './transformers/CompositeDocumentTransformer.ts'; -import type { PageModel } from '@flowforge/page-model'; +import type { PageTrail } from '@flowforge/page-trail'; interface PageIndexerOptions { embeddingProvider: EmbeddingProvider; @@ -62,27 +62,27 @@ export class PageIndexer { } /** - * Transform documents from a page model and indexes it into the vector store + * Transform documents from a page trail and indexes it into the vector store * - * @param pageModel - Structured page content used for transformation and indexing. - * @param pageModel.basics.url - Canonical page URL used to derive the dataset name. + * @param pageTrail - Structured page content used for transformation and indexing. + * @param pageTrail.basics.url - Canonical page URL used to derive the dataset name. * @returns Promise resolving to the dataset name where documents were indexed. * - * @throws {Error} If no documents are transformed from the page model. + * @throws {Error} If no documents are transformed from the page trail. * @throws {Error} If indexing fails in the vector storage backend. */ - async indexPage(pageModel: PageModel): Promise { - const docs = await this.transformer.transform(pageModel); + async indexPage(pageTrail: PageTrail): Promise { + const docs = await this.transformer.transform(pageTrail); if (docs.length === 0) { throw new Error('Nothing to index'); } - const datasetName = this.createDatasetName(pageModel.basics.url); + const datasetName = this.createDatasetName(pageTrail.basics.url); try { await this.vectorStorage.index(datasetName, docs); - console.log(`[Indexer] Indexed ${datasetName} with ${docs.length} documents for ${pageModel.basics.url}`); + console.log(`[Indexer] Indexed ${datasetName} with ${docs.length} documents for ${pageTrail.basics.url}`); return datasetName; } catch (error) { - console.error(`[Indexer] Error while indexing ${pageModel.basics.url}:`, error); + console.error(`[Indexer] Error while indexing ${pageTrail.basics.url}:`, error); throw error; } } @@ -106,15 +106,15 @@ export class PageIndexer { /** * Searches indexed content for a given page * - * @param pageModel - Structured page content containing the URL to search. + * @param pageTrail - Structured page content containing the URL to search. * @param query - Natural language query text. * @param options - Retrieval options including number of results and optional type filter. * * @throws {Error} If the underlying dataset cannot be found or queried. */ - async searchForPage(pageModel: PageModel, query: string, options: RetrieveOptions): Promise { - const datasetName = this.createDatasetName(pageModel.basics.url); - console.log(`[Indexer] Searching in ${datasetName} for Page with url: ${pageModel.basics.url}`); + async searchForPage(pageTrail: PageTrail, query: string, options: RetrieveOptions): Promise { + const datasetName = this.createDatasetName(pageTrail.basics.url); + console.log(`[Indexer] Searching in ${datasetName} for Page with url: ${pageTrail.basics.url}`); return this.search(datasetName, query, options); } diff --git a/apps/backend/src/indexer/transformers/AbstractDocumentTransformer.ts b/apps/backend/src/indexer/transformers/AbstractDocumentTransformer.ts index b524c5e..ee64608 100644 --- a/apps/backend/src/indexer/transformers/AbstractDocumentTransformer.ts +++ b/apps/backend/src/indexer/transformers/AbstractDocumentTransformer.ts @@ -1,6 +1,6 @@ import type { IndexableDocument, DocumentTransformer } from '#self/types'; import { randomUUID } from 'crypto'; -import type { BaseElement, PageModel } from '@flowforge/page-model'; +import type { BaseElement, PageTrail } from '@flowforge/page-trail'; export abstract class AbstractDocumentTransformer implements DocumentTransformer { readonly name: string; @@ -9,7 +9,7 @@ export abstract class AbstractDocumentTransformer implements DocumentTransformer this.name = name; } - protected abstract transformFn(pageModel: PageModel): Promise; + protected abstract transformFn(pageTrail: PageTrail): Promise; private createDocumentId() { return randomUUID(); @@ -26,11 +26,11 @@ export abstract class AbstractDocumentTransformer implements DocumentTransformer }; } - async transform(pageModel: PageModel): Promise { + async transform(pageTrail: PageTrail): Promise { try { - return await this.transformFn(pageModel); + return await this.transformFn(pageTrail); } catch (error) { - console.error(`[Indexer] Error transforming via ${this.name} for ${pageModel.basics.url}:`, error); + console.error(`[Indexer] Error transforming via ${this.name} for ${pageTrail.basics.url}:`, error); return []; } } diff --git a/apps/backend/src/indexer/transformers/CompositeDocumentTransformer.ts b/apps/backend/src/indexer/transformers/CompositeDocumentTransformer.ts index 1f8ef17..55f585b 100644 --- a/apps/backend/src/indexer/transformers/CompositeDocumentTransformer.ts +++ b/apps/backend/src/indexer/transformers/CompositeDocumentTransformer.ts @@ -2,7 +2,7 @@ import type { IndexableDocument, DocumentTransformer } from '#self/types'; import { ContentElementsTransformer } from './ContentElementsTransformer.ts'; import { InteractiveElementsTransformer } from './InteractiveElementsTransformer.ts'; import { AbstractDocumentTransformer } from './AbstractDocumentTransformer.ts'; -import type { PageModel } from '@flowforge/page-model'; +import type { PageTrail } from '@flowforge/page-trail'; export class CompositeDocumentTransformer implements DocumentTransformer { private readonly transformers: AbstractDocumentTransformer[]; @@ -20,13 +20,13 @@ export class CompositeDocumentTransformer implements DocumentTransformer { return this.transformers.map((t) => t.name); } - async transform(pageModel: PageModel): Promise { + async transform(pageTrail: PageTrail): Promise { const docs: IndexableDocument[] = []; for (const t of this.transformers) { - const transformed = await t.transform(pageModel); + const transformed = await t.transform(pageTrail); if (this.verbose) { console.log( - `[Indexer] Transformed ${transformed.length} documents via ${t.name} for ${pageModel.basics.url}`, + `[Indexer] Transformed ${transformed.length} documents via ${t.name} for ${pageTrail.basics.url}`, transformed.map((doc) => doc.content), ); } diff --git a/apps/backend/src/indexer/transformers/ContentElementsTransformer.ts b/apps/backend/src/indexer/transformers/ContentElementsTransformer.ts index 9172f54..6065d69 100644 --- a/apps/backend/src/indexer/transformers/ContentElementsTransformer.ts +++ b/apps/backend/src/indexer/transformers/ContentElementsTransformer.ts @@ -2,10 +2,10 @@ import type { IndexableDocument } from '#self/types'; import { AbstractDocumentTransformer } from './AbstractDocumentTransformer.ts'; import { type ContentElement, - type PageModel, + type PageTrail, formatContentElement, formatContentElementShort, -} from '@flowforge/page-model'; +} from '@flowforge/page-trail'; import { RecursiveCharacterTextSplitter, TextSplitter } from '@langchain/textsplitters'; export const CONTENT_TEMPLATE_TEXT_PLACEHOLDER = '{{TEXT}}'; @@ -32,10 +32,10 @@ export class ContentElementsTransformer extends AbstractDocumentTransformer { }); } - override async transformFn(pageModel: PageModel): Promise { + override async transformFn(pageTrail: PageTrail): Promise { const docs: IndexableDocument[] = []; - for (const el of pageModel.content) { + for (const el of pageTrail.content) { const contentTemplate = this.createContentTemplate(el); const templatedChunkSize = this.chunkSize - contentTemplate.length + CONTENT_TEMPLATE_TEXT_PLACEHOLDER.length; diff --git a/apps/backend/src/indexer/transformers/InteractiveElementsTransformer.ts b/apps/backend/src/indexer/transformers/InteractiveElementsTransformer.ts index 1a8af60..7844bde 100644 --- a/apps/backend/src/indexer/transformers/InteractiveElementsTransformer.ts +++ b/apps/backend/src/indexer/transformers/InteractiveElementsTransformer.ts @@ -1,15 +1,15 @@ import { AbstractDocumentTransformer } from './AbstractDocumentTransformer.ts'; import type { IndexableDocument } from '#self/types'; -import { formatInteractiveElement, type PageModel } from '@flowforge/page-model'; +import { formatInteractiveElement, type PageTrail } from '@flowforge/page-trail'; export class InteractiveElementsTransformer extends AbstractDocumentTransformer { constructor() { super('interactive_elements'); } - override async transformFn(pageModel: PageModel): Promise { + override async transformFn(pageTrail: PageTrail): Promise { const docs: IndexableDocument[] = []; - for (const el of pageModel.interactive) { + for (const el of pageTrail.interactive) { const content = formatInteractiveElement(el); docs.push(this.createDocument(content, el)); } diff --git a/apps/backend/src/server/routes/query.ts b/apps/backend/src/server/routes/query.ts index bcceaf4..f6dab44 100644 --- a/apps/backend/src/server/routes/query.ts +++ b/apps/backend/src/server/routes/query.ts @@ -17,20 +17,20 @@ export function createQueryHandler({ indexer, agent, analytics }: QueryHandlerDe res: Response, ): Promise { try { - const { question, pageModel, domain } = req.body; + const { question, pageTrail, domain } = req.body; - if (!question || !pageModel) { + if (!question || !pageTrail) { res.status(400).json({ - error: 'Missing required fields: question, pageModel', + error: 'Missing required fields: question, pageTrail', }); return; } console.log(`[Server] Query: ${domain} / ${question}`); - await indexer.indexPage(pageModel); - const pageContext = new PageContextProvider(pageModel, indexer); + await indexer.indexPage(pageTrail); + const pageContext = new PageContextProvider(pageTrail, indexer); const agentResponse = await agent.processQuery(question, pageContext); - analytics.trackQA(domain, pageModel.basics.url, question, agentResponse); + analytics.trackQA(domain, pageTrail.basics.url, question, agentResponse); res.json({ result: agentResponse.result, diff --git a/apps/backend/src/types/documents.ts b/apps/backend/src/types/documents.ts index ba48ddc..de90502 100644 --- a/apps/backend/src/types/documents.ts +++ b/apps/backend/src/types/documents.ts @@ -1,4 +1,4 @@ -import type { BaseElement, ElementKind, PageModel } from '@flowforge/page-model'; +import type { BaseElement, ElementKind, PageTrail } from '@flowforge/page-trail'; export type DocumentType = ElementKind; @@ -25,7 +25,7 @@ export interface RerankedDocument extends RetrievedDocument { } export interface DocumentTransformer { - transform(pageModel: PageModel): Promise; + transform(pageTrail: PageTrail): Promise; } export interface RetrieveOptions { diff --git a/apps/extension/package.json b/apps/extension/package.json index d35342f..bf2543b 100644 --- a/apps/extension/package.json +++ b/apps/extension/package.json @@ -34,7 +34,7 @@ ], "dependencies": { "@flowforge/contract": "*", - "@flowforge/page-model": "*" + "@flowforge/page-trail": "*" }, "devDependencies": { "@crxjs/vite-plugin": "^2.4.0", diff --git a/apps/extension/src/background/BackgroundWorker.ts b/apps/extension/src/background/BackgroundWorker.ts index af7b51f..6634b62 100644 --- a/apps/extension/src/background/BackgroundWorker.ts +++ b/apps/extension/src/background/BackgroundWorker.ts @@ -6,8 +6,8 @@ import { type AskQuestionMessage, type AskQuestionMessageResponse, type ClearPageMessage, - type CollectPageModelMessage, - type CollectPageModelMessageResponse, + type CollectPageTrailMessage, + type CollectPageTrailMessageResponse, type GetPrevQuestionsMessage, type GetPrevQuestionsMessageResponse, type GetSettingsMessageResponse, @@ -111,13 +111,13 @@ export class BackgroundWorker { /** * Handles a user question for the given tab. * - * Clears existing highlights, collects a page model from the page, + * Clears existing highlights, collects a page trail from the page, * sends the query to the backend, highlights matched elements, and stores * the question in domain-specific history. * * @param message - Message containing the tab ID and user question. * @returns Promise resolving to a successful response with the query result. - * @throws Rethrows any error that occurs during page model collection, + * @throws Rethrows any error that occurs during page trail collection, * backend querying, highlighting, or history persistence. */ private async handleAskQuestion(message: AskQuestionMessage): Promise { @@ -126,23 +126,23 @@ export class BackgroundWorker { await this.transport.sendToPage(message.senderId, { type: 'CLEAR_PAGE', }); - // Get a page model from page runtime - const pageModelResponse = await this.transport.sendToPage< - CollectPageModelMessage, - CollectPageModelMessageResponse - >(message.senderId, { type: 'COLLECT_PAGE_MODEL' }); - if (!pageModelResponse.success) { - throw new Error('Failed to collect page model: ' + pageModelResponse.error); + // Get a page trail from page runtime + const pageTrailResponse = await this.transport.sendToPage< + CollectPageTrailMessage, + CollectPageTrailMessageResponse + >(message.senderId, { type: 'COLLECT_PAGE_TRAIL' }); + if (!pageTrailResponse.success) { + throw new Error('Failed to collect page trail: ' + pageTrailResponse.error); } - console.log('[Background] Collected page model:', pageModelResponse); + console.log('[Background] Collected page trail:', pageTrailResponse); - const pageModel = pageModelResponse.data; + const pageTrail = pageTrailResponse.data; const domain = await this.transport.getSenderHostname(message.senderId); // Send it to the backend server const requestData: QueryRequest = { question: message.data.question, - pageModel: pageModel, + pageTrail: pageTrail, domain, userContext: { previousQuestions: await this.historyStorage.getPreviousQuestions(domain), diff --git a/apps/extension/src/core/types/messages.ts b/apps/extension/src/core/types/messages.ts index b2c7f54..4482d2b 100644 --- a/apps/extension/src/core/types/messages.ts +++ b/apps/extension/src/core/types/messages.ts @@ -1,9 +1,9 @@ -import type { AgentResultElement, AgentResultMode, PageModel, QueryResponse } from '@flowforge/contract'; +import type { AgentResultElement, AgentResultMode, PageTrail, QueryResponse } from '@flowforge/contract'; import type { ExtensionSettings } from '#self/core/types/settings'; type MessageTypeToBackground = 'GET_SETTINGS'; type MessageTypePopupToBackground = 'ASK_QUESTION' | 'GET_PREV_QUESTIONS' | 'NAVIGATE_TO_ELEMENT' | 'UPDATE_SETTINGS'; -type MessageTypeBackgroundToPage = 'COLLECT_PAGE_MODEL' | 'START_ONBOARDING' | 'HIGHLIGHT_ELEMENT' | 'CLEAR_PAGE' | 'APPLY_SETTINGS'; +type MessageTypeBackgroundToPage = 'COLLECT_PAGE_TRAIL' | 'START_ONBOARDING' | 'HIGHLIGHT_ELEMENT' | 'CLEAR_PAGE' | 'APPLY_SETTINGS'; type MessageType = MessageTypeToBackground | MessageTypePopupToBackground | MessageTypeBackgroundToPage; @@ -81,13 +81,13 @@ export type ApplySettingsMessage = Message & { type: 'APPLY_SETTINGS'; }; -export type CollectPageModelMessage = Message & { - type: 'COLLECT_PAGE_MODEL'; +export type CollectPageTrailMessage = Message & { + type: 'COLLECT_PAGE_TRAIL'; }; -export type CollectPageModelMessageResponseData = PageModel; +export type CollectPageTrailMessageResponseData = PageTrail; -export type CollectPageModelMessageResponse = MessageResponse; +export type CollectPageTrailMessageResponse = MessageResponse; export interface StartOnboardingMessageData { title: string; @@ -134,8 +134,8 @@ export function isGetPrevQuestionsMessage(message: Message): message is GetPrevQ return message.type === 'GET_PREV_QUESTIONS'; } -export function isCollectPageModelMessage(message: Message): message is CollectPageModelMessage { - return message.type === 'COLLECT_PAGE_MODEL'; +export function isCollectPageTrailMessage(message: Message): message is CollectPageTrailMessage { + return message.type === 'COLLECT_PAGE_TRAIL'; } export function isStartOnboardingMessage(message: Message): message is StartOnboardingMessage { diff --git a/apps/extension/src/page/hooks/usePage.ts b/apps/extension/src/page/hooks/usePage.ts index 3a1799c..dbba806 100644 --- a/apps/extension/src/page/hooks/usePage.ts +++ b/apps/extension/src/page/hooks/usePage.ts @@ -1,6 +1,6 @@ import { isClearPageMessage, - isCollectPageModelMessage, + isCollectPageTrailMessage, isHighlightElementMessage, isStartOnboardingMessage, } from '#self/types'; @@ -11,7 +11,7 @@ import type { PageViewModel, HighlightState, WizardState } from './usePage.types import type { TransportService } from '#self/adapters/interface'; import { constants } from '#self/constants'; import type { AgentResultElement } from '@flowforge/contract'; -import { PageModelCollector } from '@flowforge/page-model'; +import { PageTrailCollector } from '@flowforge/page-trail'; export interface UsePageOptions { transport: TransportService; @@ -110,13 +110,13 @@ export function usePage({ transport }: UsePageOptions): PageViewModel { // Listen to messages from background useEffect(() => { return transport.addMessageListener((message: Message) => { - if (isCollectPageModelMessage(message)) { - const pageModel = PageModelCollector.collectFor(window, document, { + if (isCollectPageTrailMessage(message)) { + const pageTrail = PageTrailCollector.collectFor(window, document, { contentElementsLimit: constants.CONTENT_ELEMENTS_LIMIT, interactiveElementsLimit: constants.INTERACTIVE_ELEMENTS_LIMIT, getElementDataId: getOrCreateDataId, }); - return { success: true, data: pageModel }; + return { success: true, data: pageTrail }; } if (isClearPageMessage(message)) { clearPage(); diff --git a/docs/ARCHITECTURE.md b/docs/ARCHITECTURE.md index e11debb..8839821 100644 --- a/docs/ARCHITECTURE.md +++ b/docs/ARCHITECTURE.md @@ -35,7 +35,7 @@ Inference layer supporting local (Ollama) or cloud (OpenAI) models for embedding ### Query Flow 1. User asks a question in the extension popup -2. Extension sends `pageModel + question` to backend (`POST /query`) +2. Extension sends `pageTrail + question` to backend (`POST /query`) 3. Backend checks if page is indexed; indexes if needed 4. Agent executes with access to tools and vector search 5. Backend returns structured result (answer + target elements) @@ -53,8 +53,8 @@ Inference layer supporting local (Ollama) or cloud (OpenAI) models for embedding High-level overview of the DOM-to-RAG pipeline: -1. **Extraction** — DOM → structured `PageModel` (content + interactive elements + context) -2. **Transformation** — `PageModel` → semantic `IndexableDocuments` with metadata +1. **Extraction** — DOM → structured `PageTrail` (content + interactive elements + context) +2. **Transformation** — `PageTrail` → semantic `IndexableDocuments` with metadata 3. **Indexing** — Documents → embeddings → vector storage (LanceDB) 4. **Retrieval** — Query → Top-K relevant documents via semantic search 5. **Reranking** — Hybrid scoring (semantic + importance signals) diff --git a/docs/BACKLOG.md b/docs/BACKLOG.md index 42d275e..f936714 100644 --- a/docs/BACKLOG.md +++ b/docs/BACKLOG.md @@ -52,7 +52,7 @@ ## Extension - Support standalone mode, properly -- Cache for pageModel transfer, with RAG cache +- Cache for pageTrail transfer, with RAG cache - Enhance dataId and selector usage for El locator ## DX diff --git a/docs/DOM-TO-RAG-PIPELINE.md b/docs/DOM-TO-RAG-PIPELINE.md index 6c8757a..d37d7e8 100644 --- a/docs/DOM-TO-RAG-PIPELINE.md +++ b/docs/DOM-TO-RAG-PIPELINE.md @@ -16,7 +16,7 @@ This pipeline converts the DOM into a structured, searchable, and actionable rep ### 1. Extraction to Structure Representation -The DOM is parsed and normalized into a structured `PageModel`. +The DOM is parsed and normalized into a structured `PageTrail`. This stage captures both the raw structure and contextual meaning of the UI. diff --git a/docs/assets/architecture-overview.png b/docs/assets/architecture-overview.png index cee69c5e7a360baf7d450171cc6e5bebdf7ff3ba..c73ef8f1f74a57dfb6d9bc8b92b1998c360179ac 100644 GIT binary patch literal 238245 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 k#NpP} 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 literal 245616 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�GLzZ!ag% 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 ICMTdk?r2$2M({iTMn)EH37I4M3WK794OUWRr*b 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±UZX*-NpU48%V=`Gfq^ssHV&3BIaziULN#< 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 literal 67320 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 z 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

75X9gdRbjtJ$+!t(e(#Jtku` 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 diff --git a/docs/assets/dom-rag-pipeline.png b/docs/assets/dom-rag-pipeline.png index e71a9a9f0084e4073ca2900fa2d8a9db75bf60af..3fbc478cdda3bd2cc07809b0ae45f02af2946b18 100644 GIT binary patch literal 222564 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
A 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

G=sm@($*- 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

AxH@1Q9rqf1`hIoU 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 getOrCreateDataId(el), }); ``` ## Format -PageModel includes helpers to convert elements into compact semantic strings. +PageTrail includes helpers to convert elements into compact semantic strings. Used for indexing, retrieval, and tool responses. diff --git a/packages/page-model/eslint.config.mjs b/packages/page-trail/eslint.config.mjs similarity index 100% rename from packages/page-model/eslint.config.mjs rename to packages/page-trail/eslint.config.mjs diff --git a/packages/page-model/package.json b/packages/page-trail/package.json similarity index 96% rename from packages/page-model/package.json rename to packages/page-trail/package.json index 9cba73e..b59b43e 100644 --- a/packages/page-model/package.json +++ b/packages/page-trail/package.json @@ -1,5 +1,5 @@ { - "name": "@flowforge/page-model", + "name": "@flowforge/page-trail", "version": "0.1.0", "private": true, "type": "module", diff --git a/packages/page-model/src/collector/PageModelCollector.test.ts b/packages/page-trail/src/collector/PageTrailCollector.test.ts similarity index 93% rename from packages/page-model/src/collector/PageModelCollector.test.ts rename to packages/page-trail/src/collector/PageTrailCollector.test.ts index 4d037a9..6d7611d 100644 --- a/packages/page-model/src/collector/PageModelCollector.test.ts +++ b/packages/page-trail/src/collector/PageTrailCollector.test.ts @@ -1,14 +1,14 @@ import { afterEach, describe, expect, it, vi } from 'vitest'; import { markHidden, markVisible, resetDocument, setViewport } from '../test/dom'; -import { PageModelCollector } from './PageModelCollector'; +import { PageTrailCollector } from './PageTrailCollector'; afterEach(() => { resetDocument(); vi.restoreAllMocks(); }); -describe('PageModelCollector', () => { +describe('PageTrailCollector', () => { it('collects page basics', () => { document.documentElement.lang = 'en'; document.head.innerHTML = ``; @@ -128,7 +128,6 @@ describe('PageModelCollector', () => { }); it('applies content and interactive limits after scoring', () => { - vi.spyOn(console, 'log').mockImplementation(() => {}); document.body.innerHTML = `

Important heading

@@ -153,11 +152,11 @@ describe('PageModelCollector', () => { expect(model.interactive[0]).toEqual(expect.objectContaining({ dataId: 'button' })); }); - it('collectFor returns a collected page model', () => { + it('collectFor returns a collected page trail', () => { document.body.innerHTML = ``; markVisible('#save'); - const model = PageModelCollector.collectFor(window, document, { + const model = PageTrailCollector.collectFor(window, document, { getElementDataId: (el) => el.id, }); @@ -166,8 +165,8 @@ describe('PageModelCollector', () => { }); }); -function collect(options: Partial[2]> = {}) { - return new PageModelCollector(window, document, { +function collect(options: Partial[2]> = {}) { + return new PageTrailCollector(window, document, { getElementDataId: (el) => el.id, ...options, }).collect(); diff --git a/packages/page-model/src/collector/PageModelCollector.ts b/packages/page-trail/src/collector/PageTrailCollector.ts similarity index 78% rename from packages/page-model/src/collector/PageModelCollector.ts rename to packages/page-trail/src/collector/PageTrailCollector.ts index 5f67cdd..6c053a0 100644 --- a/packages/page-model/src/collector/PageModelCollector.ts +++ b/packages/page-trail/src/collector/PageTrailCollector.ts @@ -1,4 +1,4 @@ -import type { BaseElement, ContentElement, InteractiveElement, PageBasics, PageModel } from '../types/index.ts'; +import type { ContentElement, InteractiveElement, PageBasics, PageTrail } from '../types/index.ts'; import { getElementLabels } from './extractors/primitive/label.ts'; import { getInteractiveRole, roleToInteractiveElementType } from './extractors/primitive/role.ts'; @@ -10,6 +10,7 @@ import { getElementContext } from './extractors/context.ts'; import { extractElementDescriptor } from './extractors/descriptor.ts'; import { isSensitiveElement } from './extractors/primitive/sensitive.ts'; import { scoreContentElement, scoreInteractiveElement } from './importance/scoring.ts'; +import { topElements } from './importance/topEl.ts'; // constants const CONTENT_MIN_TEXT_LENGTH = 5; @@ -21,7 +22,7 @@ export interface CollectorOptions { } /** - * Collects a normalized PageModel from the DOM + * Collects a normalized PageTrail from the DOM * * TODO: implement a cache, but with dataId ref consistency * TODO: provide a plugins API to extend the collector @@ -30,8 +31,20 @@ export interface CollectorOptions { * Extracts page metadata, content, and interactive elements, and assigns * stable `dataId` identifiers to elements for downstream usage. */ -export class PageModelCollector { +export class PageTrailCollector { + // window.location.href - reads the current page URL + // window.innerWidth - reads viewport width + // window.innerHeight - reads viewport height + // window.scrollY - reads current vertical scroll position + // window.getComputedStyle(element) - checks computed CSS styles for visibility private readonly window: Window; + // document.title - reads the page title + // document.querySelector('meta[name="description"]') - finds the meta description element + // document.documentElement.lang - reads the page language from + // document.documentElement.scrollHeight - reads the full scrollable page height + // document.querySelectorAll(selector) - finds content and interactive elements by CSS selector + // document.getElementById(id) - resolves IDs from aria-labelledby to label elements + // document.querySelector('label[for="..."]') - finds a
); @@ -33,7 +34,7 @@ function PopupAppRoot({ transport }: { transport: TransportService }) { const root = rootInjector.inject(document, chromeConstants.POPUP_ROOT_ID); render(, root.mountPoint); console.log('[FlowForge] Popup loaded'); - } + }; if (document.readyState === 'loading') { document.addEventListener('DOMContentLoaded', doMount); diff --git a/apps/extension/src/core/types/messages.ts b/apps/extension/src/core/types/messages.ts index 659ddbd..2d07ed6 100644 --- a/apps/extension/src/core/types/messages.ts +++ b/apps/extension/src/core/types/messages.ts @@ -1,9 +1,24 @@ import type { AgentResultElement, AgentResultMode, PageTrail, QueryResponse } from '@flowforge/contract'; import type { ExtensionSettings } from '@/core/types/settings'; -type MessageTypeToBackground = 'GET_SETTINGS'; -type MessageTypePopupToBackground = 'ASK_QUESTION' | 'GET_PREV_QUESTIONS' | 'NAVIGATE_TO_ELEMENT' | 'UPDATE_SETTINGS'; -type MessageTypeBackgroundToPage = 'COLLECT_PAGE_TRAIL' | 'START_ONBOARDING' | 'HIGHLIGHT_ELEMENT' | 'CLEAR_PAGE' | 'APPLY_SETTINGS'; +type MessageTypeToBackground = + 'GET_SETTINGS'; + +type MessageTypePopupToBackground = + 'POPUP_INITIALISE' | + 'ASK_QUESTION' | + 'GET_PREV_QUESTIONS' | + 'NAVIGATE_TO_ELEMENT' | + 'UPDATE_SETTINGS' | + 'OPEN_PAGE_INSPECTOR'; + +type MessageTypeBackgroundToPage = + 'COLLECT_PAGE_TRAIL' | + 'START_ONBOARDING' | + 'HIGHLIGHT_ELEMENT' | + 'CLEAR_PAGE' | + 'APPLY_SETTINGS' | + 'OPEN_INSPECTOR'; type MessageType = MessageTypeToBackground | MessageTypePopupToBackground | MessageTypeBackgroundToPage; @@ -25,6 +40,11 @@ export type GetSettingsMessageResponse = MessageResponse Background +export type PopupInitializeMessage = Message & { + type: 'POPUP_INITIALISE'; + senderId: number; +}; + export type UpdateSettingsMessageData = { patch: Partial; } @@ -71,6 +91,11 @@ export type NavigateToElementMessage = Message & { senderId: number; }; +export type OpenPageInspectorMessage = Message & { + type: 'OPEN_PAGE_INSPECTOR'; + senderId: number; +}; + // Background -> Page export interface ApplySettingsMessageData { @@ -112,8 +137,16 @@ export type HighlightElementMessage = Message & { type: 'HIGHLIGHT_ELEMENT'; }; +export type OpenInspectorMessage = Message & { + type: 'OPEN_INSPECTOR'; +}; + // Type guards +export function isPopupInitializeMessage(message: Message): message is PopupInitializeMessage { + return message.type === 'POPUP_INITIALISE'; +} + export function isGetSettingsMessage(message: Message): message is GetSettingsMessage { return message.type === 'GET_SETTINGS'; } @@ -146,6 +179,14 @@ export function isClearPageMessage(message: Message): message is ClearPageMessag return message.type === 'CLEAR_PAGE'; } +export function isOpenInspectorMessage(message: Message): message is OpenInspectorMessage { + return message.type === 'OPEN_INSPECTOR'; +} + +export function isOpenPageInspectorMessage(message: Message): message is OpenPageInspectorMessage { + return message.type === 'OPEN_PAGE_INSPECTOR'; +} + export function isNavigateToElementMessage(message: Message): message is NavigateToElementMessage { return message.type === 'NAVIGATE_TO_ELEMENT'; } diff --git a/apps/extension/src/embed/shell/ShellApp.tsx b/apps/extension/src/embed/shell/ShellApp.tsx index 8eb62d6..2743724 100644 --- a/apps/extension/src/embed/shell/ShellApp.tsx +++ b/apps/extension/src/embed/shell/ShellApp.tsx @@ -23,7 +23,10 @@ export interface ShellAppRef { close: () => void; } -export const ShellApp = forwardRef(function ShellApp({ transport, demoProps, triggerSize }, ref) { +export const ShellApp = forwardRef(function ShellApp( + { transport, demoProps, triggerSize }, + ref, +) { const [isOpen, setIsOpen] = useState(false); const [initialQuestion, setInitialQuestion] = useState(); const { theme, toggleTheme } = useSettings({ transport }); @@ -58,34 +61,36 @@ export const ShellApp = forwardRef(function ShellApp if (!isOpen) return; // Close popup when clicking outside of it - function handleClickOutside(e: MouseEvent) { + function handlePointerDownOutside(e: PointerEvent) { const target = getEventTarget(e); - if ( - popupRef.current && - !popupRef.current.contains(target) && - triggerRef.current && - !triggerRef.current.contains(target) - ) { + + if (!target) return; + + const isInsidePopup = popupRef.current?.contains(target) ?? false; + const isInsideTrigger = triggerRef.current?.contains(target) ?? false; + + if (!isInsidePopup && !isInsideTrigger) { closePopup(); } } + // Close popup when pressing escape const handleKeyDown = (e: KeyboardEvent) => { + if (e.key !== 'Escape') return; + const target = getEventTarget(e); // if typing in an input, don't escape if (target?.closest('input, textarea, select, [contenteditable="true"]')) return; - if (e.key === 'Escape') { - e.preventDefault(); - closePopup(); - } + e.preventDefault(); + closePopup(); }; - document.addEventListener('mousedown', handleClickOutside); + document.addEventListener('pointerdown', handlePointerDownOutside); document.addEventListener('keydown', handleKeyDown); return () => { - document.removeEventListener('mousedown', handleClickOutside); + document.removeEventListener('pointerdown', handlePointerDownOutside); document.removeEventListener('keydown', handleKeyDown); }; }, [isOpen, closePopup]); @@ -102,8 +107,9 @@ export const ShellApp = forwardRef(function ShellApp transport={transport} demoProps={demoProps} theme={theme} - toggleTheme={toggleTheme} + onToggleTheme={toggleTheme} initialQuestion={initialQuestion} + onClose={closePopup} /> )} diff --git a/apps/extension/src/page/PageApp.tsx b/apps/extension/src/page/PageApp.tsx index 59cda3e..c7645d1 100644 --- a/apps/extension/src/page/PageApp.tsx +++ b/apps/extension/src/page/PageApp.tsx @@ -3,13 +3,14 @@ import type { TransportService } from '@/adapters/interface'; import { usePage } from '@/page/hooks/usePage'; import { Highlight } from '@/page/components/Highlight'; import { Wizard } from '@/page/components/Wizard'; +import { Inspector } from '@/page/components/Inspector'; export interface PageAppProps { transport: TransportService; } export function PageApp({ transport }: PageAppProps) { - const { highlights, wizard } = usePage({ transport }); + const { highlights, wizard, inspector } = usePage({ transport }); return (
@@ -21,6 +22,7 @@ export function PageApp({ transport }: PageAppProps) {
)} {wizard && } + {inspector && } ); } diff --git a/apps/extension/src/page/components/Highlight/Highlight.tsx b/apps/extension/src/page/components/Highlight/Highlight.tsx index 178a6a2..9b3ee69 100644 --- a/apps/extension/src/page/components/Highlight/Highlight.tsx +++ b/apps/extension/src/page/components/Highlight/Highlight.tsx @@ -1,6 +1,6 @@ import { useCallback, useEffect, useLayoutEffect, useRef, useState } from 'preact/hooks'; import { calcLabelLayout, calcElementPosition, isNewPosition, isNewLabelLayout } from '@/page/utils/position'; -import type { HighlightViewModel } from '@/page/hooks/usePage.types'; +import type { HighlightViewModel } from '@/page/hooks/usePage'; import { constants } from '@/constants'; export function Highlight({ el, element, stepIndex, duration, remove }: HighlightViewModel) { diff --git a/apps/extension/src/page/components/Inspector/Inspector.css b/apps/extension/src/page/components/Inspector/Inspector.css new file mode 100644 index 0000000..af71b9c --- /dev/null +++ b/apps/extension/src/page/components/Inspector/Inspector.css @@ -0,0 +1,31 @@ +/* Inspector */ +.flowforge-inspector { + --flowforge-inspector-max-width: 1080px; +} +.flowforge-inspector-container { + position: fixed; + inset: 0; + display: flex; + align-items: center; + justify-content: center; + padding: var(--flowforge-app-offset); + background: rgba(var(--flowforge-rgb-shadow), 0.4); + pointer-events: auto; + z-index: 3; +} +.flowforge-inspector { + width: min(100%, var(--flowforge-inspector-max-width)); + height: calc(100vh - var(--flowforge-app-offset) * 2); + overflow: auto; + box-sizing: border-box; + background: var(--flowforge-color-surface); + border: 1px solid var(--flowforge-color-border); + border-top: 4px solid var(--flowforge-color-primary); + border-radius: var(--flowforge-pad-sm); + padding: var(--flowforge-pad-lg); + box-shadow: + 0 0 0 4px rgba(var(--flowforge-rgb-primary), 0.14), + 0 6px 18px rgba(var(--flowforge-rgb-shadow), 0.12); + color: var(--flowforge-color-text); + font: var(--flowforge-text-md); +} diff --git a/apps/extension/src/page/components/Inspector/Inspector.tsx b/apps/extension/src/page/components/Inspector/Inspector.tsx new file mode 100644 index 0000000..0341255 --- /dev/null +++ b/apps/extension/src/page/components/Inspector/Inspector.tsx @@ -0,0 +1,41 @@ +import type { TargetedPointerEvent } from 'preact'; +import { useEffect } from 'preact/hooks'; +import { getEventTarget } from '@/core/utils/dom'; +import type { InspectorViewModel } from '@/page/hooks/usePage'; +import { Button } from '@/shared/components/Button'; + +export function Inspector({ pageTrail, close } : InspectorViewModel) { + // Close on esc + useEffect(() => { + const handleKeyDown = (e: KeyboardEvent) => { + if (e.key !== 'Escape') return; + + const target = getEventTarget(e); + // if typing in an input, don't close + if (target?.closest('input, textarea, select, [contenteditable="true"]')) return; + + e.preventDefault(); + close(); + }; + document.addEventListener('keydown', handleKeyDown); + return () => { + document.removeEventListener('keydown', handleKeyDown); + }; + }, [close]); + + // Close on click outside the inspector + const handleContainerPointerDown = (e: TargetedPointerEvent) => { + if (e.target === e.currentTarget) { + close(); + } + }; + + return ( +
+
+ {JSON.stringify(Object.keys(pageTrail), null, 2)} + +
+
+ ); +} diff --git a/apps/extension/src/page/components/Inspector/index.ts b/apps/extension/src/page/components/Inspector/index.ts new file mode 100644 index 0000000..8d40e3f --- /dev/null +++ b/apps/extension/src/page/components/Inspector/index.ts @@ -0,0 +1 @@ +export { Inspector } from './Inspector'; \ No newline at end of file diff --git a/apps/extension/src/page/components/Wizard/Wizard.tsx b/apps/extension/src/page/components/Wizard/Wizard.tsx index 66468ed..772e1fd 100644 --- a/apps/extension/src/page/components/Wizard/Wizard.tsx +++ b/apps/extension/src/page/components/Wizard/Wizard.tsx @@ -1,5 +1,5 @@ import { useEffect, useRef, useState } from 'preact/hooks'; -import type { WizardViewModel } from '@/page/hooks/usePage.types'; +import type { WizardViewModel } from '@/page/hooks/usePage'; import { getEventTarget } from '@/core/utils/dom'; import { Button } from '@/shared/components/Button'; diff --git a/apps/extension/src/page/hooks/usePage.ts b/apps/extension/src/page/hooks/usePage.ts index d3d90c2..3c43495 100644 --- a/apps/extension/src/page/hooks/usePage.ts +++ b/apps/extension/src/page/hooks/usePage.ts @@ -2,29 +2,85 @@ import { isClearPageMessage, isCollectPageTrailMessage, isHighlightElementMessage, + isOpenInspectorMessage, isStartOnboardingMessage, } from '@/types'; import type { Message, StartOnboardingMessageData } from '@/types'; import { useCallback, useEffect, useState } from 'preact/hooks'; import { findElement, getOrCreateDataId } from '@/core/locator/locate'; -import type { PageViewModel, HighlightState, WizardState } from './usePage.types'; import type { TransportService } from '@/adapters/interface'; import { constants } from '@/constants'; -import type { AgentResultElement } from '@flowforge/contract'; +import type { AgentResultElement, PageTrail } from '@flowforge/contract'; import { PageTrailCollector } from '@flowforge/page-trail'; +function collectPageTrail(): PageTrail { + return PageTrailCollector.collectFor(window, document, { + contentElementsLimit: constants.CONTENT_ELEMENTS_LIMIT, + interactiveElementsLimit: constants.INTERACTIVE_ELEMENTS_LIMIT, + getElementDataId: getOrCreateDataId, + }); +} + export interface UsePageOptions { transport: TransportService; } +interface HighlightState { + id: string; + el: Element; + element: AgentResultElement; + stepIndex?: number; + duration: number; +} + +export interface HighlightViewModel extends HighlightState { + remove: () => void; +} + +interface WizardState { + title: string; + description: string; + steps: AgentResultElement[]; + currentStep: number; +} + +export interface WizardViewModel extends WizardState { + close: () => void; + changeStep: (step: number) => void; +} + +interface InspectorState { + pageTrail: PageTrail; +} + +export interface InspectorViewModel extends InspectorState { + close: () => void; +} + +export interface PageViewModel { + highlights: HighlightViewModel[]; + wizard: WizardViewModel | null; + inspector: InspectorViewModel | null; +} + export function usePage({ transport }: UsePageOptions): PageViewModel { const [highlights, setHighlights] = useState([]); const [wizard, setWizard] = useState(null); + const [inspector, setInspector] = useState(null); - // Clear all highlights and wizard - const clearPage = useCallback(() => { + const closeWizard = () => { setHighlights([]); setWizard(null); + }; + + const closeInspector = () => { + setInspector(null); + }; + + // Close wizard (with all highlights) and inspector + const clearPage = useCallback(() => { + closeWizard(); + closeInspector(); }, []); // Highlight an element @@ -65,6 +121,11 @@ export function usePage({ transport }: UsePageOptions): PageViewModel { [highlightElement], ); + // Open inspector + const openInspector = useCallback((pageTrail: PageTrail) => { + setInspector({ pageTrail }); + }, []); + // Handle wizard step change const handleWizardChangeStep = useCallback((stepIndex: number) => { // Use functional update to avoid dependency on wizard @@ -97,11 +158,6 @@ export function usePage({ transport }: UsePageOptions): PageViewModel { }); }, []); - // Handle close wizard - const handleWizardClose = useCallback(() => { - clearPage(); - }, [clearPage]); - // Remove highlight by id const handleHighlightRemove = useCallback((id: string) => { setHighlights((prev) => prev.filter((h) => h.id !== id)); @@ -111,11 +167,7 @@ export function usePage({ transport }: UsePageOptions): PageViewModel { useEffect(() => { return transport.addMessageListener((message: Message) => { if (isCollectPageTrailMessage(message)) { - const pageTrail = PageTrailCollector.collectFor(window, document, { - contentElementsLimit: constants.CONTENT_ELEMENTS_LIMIT, - interactiveElementsLimit: constants.INTERACTIVE_ELEMENTS_LIMIT, - getElementDataId: getOrCreateDataId, - }); + const pageTrail = collectPageTrail(); return { success: true, data: pageTrail }; } if (isClearPageMessage(message)) { @@ -130,9 +182,14 @@ export function usePage({ transport }: UsePageOptions): PageViewModel { highlightElement(message.data.element); return { success: true }; } + if (isOpenInspectorMessage(message)) { + const pageTrail = collectPageTrail(); + openInspector(pageTrail); + return { success: true }; + } return undefined; }); - }, [transport, startOnboarding, highlightElement, clearPage]); + }, [transport, startOnboarding, highlightElement, openInspector, clearPage]); return { highlights: highlights.map((highlight) => ({ @@ -142,9 +199,15 @@ export function usePage({ transport }: UsePageOptions): PageViewModel { wizard: wizard ? { ...wizard, - close: handleWizardClose, + close: closeWizard, changeStep: handleWizardChangeStep, } : null, + inspector: inspector + ? { + ...inspector, + close: closeInspector, + } + : null, }; } diff --git a/apps/extension/src/page/hooks/usePage.types.ts b/apps/extension/src/page/hooks/usePage.types.ts deleted file mode 100644 index 92b5a5a..0000000 --- a/apps/extension/src/page/hooks/usePage.types.ts +++ /dev/null @@ -1,34 +0,0 @@ -import type { AgentResultElement } from '@flowforge/contract'; - -export interface HighlightState { - id: string; - el: Element; - element: AgentResultElement; - stepIndex?: number; - duration: number; -} - -export interface HighlightActions { - remove: () => void; -} - -export type HighlightViewModel = HighlightState & HighlightActions; - -export interface WizardState { - title: string; - description: string; - steps: AgentResultElement[]; - currentStep: number; -} - -export interface WizardActions { - close: () => void; - changeStep: (step: number) => void; -} - -export type WizardViewModel = WizardState & WizardActions; - -export interface PageViewModel { - highlights: HighlightViewModel[]; - wizard: WizardViewModel | null; -} diff --git a/apps/extension/src/page/page.css b/apps/extension/src/page/page.css index ea224f8..94d5ade 100644 --- a/apps/extension/src/page/page.css +++ b/apps/extension/src/page/page.css @@ -2,8 +2,10 @@ @import './components/Highlight/Highlight.css'; @import './components/Wizard/Wizard.css'; +@import './components/Inspector/Inspector.css'; /* Page */ .flowforge-page { - + position: fixed; + pointer-events: none; } diff --git a/apps/extension/src/popup/PopupApp.tsx b/apps/extension/src/popup/PopupApp.tsx index 7543476..6b47fa1 100644 --- a/apps/extension/src/popup/PopupApp.tsx +++ b/apps/extension/src/popup/PopupApp.tsx @@ -12,24 +12,35 @@ import { Link } from '@/shared/components/Link'; import { Notice } from '@/shared/components/Notice'; import type { ExtensionSettingsTheme } from '@/types'; -export type PopupAppDemoProps = { - enabled: true; - setup: { - topic?: string; - stubQuestions?: string[]; - }; -} | { enabled: false }; +export type PopupAppDemoProps = + | { + enabled: true; + setup: { + topic?: string; + stubQuestions?: string[]; + }; + } + | { enabled: false }; export interface PopupAppProps { variant: 'page' | 'dialog'; transport: TransportService; demoProps?: PopupAppDemoProps; theme: ExtensionSettingsTheme; - toggleTheme: () => Promise; + onToggleTheme: () => Promise; initialQuestion?: string; + onClose?: () => void; } -export function PopupApp({ variant, transport, demoProps, theme, toggleTheme, initialQuestion }: PopupAppProps) { +export function PopupApp({ + variant, + transport, + demoProps, + theme, + onToggleTheme, + initialQuestion, + onClose, +}: PopupAppProps) { const { question, setQuestion, @@ -65,6 +76,12 @@ export function PopupApp({ variant, transport, demoProps, theme, toggleTheme, in [applyExampleQuestion], ); + // Handle open page inspector and close popup + const handleOpenPageInspector = useCallback(() => { + openPageInspector(); + onClose?.(); + }, [openPageInspector, onClose]); + const isDialog = variant === 'dialog'; const Root = isDialog ? 'section' : 'div'; @@ -95,8 +112,8 @@ export function PopupApp({ variant, transport, demoProps, theme, toggleTheme, in )} )} - + - +
{copyright}
Star me - {theme === 'light' ? 'Dark' : 'Light'} theme + {theme === 'light' ? 'Dark' : 'Light'} theme
diff --git a/apps/extension/src/popup/components/Developer/Developer.tsx b/apps/extension/src/popup/components/Developer/Developer.tsx index 5c85864..883db96 100644 --- a/apps/extension/src/popup/components/Developer/Developer.tsx +++ b/apps/extension/src/popup/components/Developer/Developer.tsx @@ -1,8 +1,11 @@ import { Card } from '@/shared/components/Card'; import { ButtonText } from '@/shared/components/Button'; -import type { DeveloperViewModel } from '@/popup/hooks/usePopup.types'; -export function Developer({ openPageInspector }: DeveloperViewModel) { +interface DeveloperProps { + onOpenPageInspector: () => void; +} + +export function Developer({ onOpenPageInspector }: DeveloperProps) { return (
@@ -11,7 +14,7 @@ export function Developer({ openPageInspector }: DeveloperViewModel) { Inspect page context @@ -20,4 +23,4 @@ export function Developer({ openPageInspector }: DeveloperViewModel) {
); -} \ No newline at end of file +} diff --git a/apps/extension/src/popup/components/Examples/Examples.tsx b/apps/extension/src/popup/components/Examples/Examples.tsx index d71f64f..ba2ab89 100644 --- a/apps/extension/src/popup/components/Examples/Examples.tsx +++ b/apps/extension/src/popup/components/Examples/Examples.tsx @@ -1,7 +1,12 @@ -import type { ExamplesViewModel } from '@/popup/hooks/usePopup.types'; +import type { PopupExampleItem } from '@/popup/utils/data'; import { Card } from '@/shared/components/Card'; -export function Examples({ examples, applyExampleQuestion }: ExamplesViewModel) { +interface ExamplesProps { + examples: PopupExampleItem[]; + onExampleQuestionSelect: (question: string) => void; +} + +export function Examples({ examples, onExampleQuestionSelect }: ExamplesProps) { if (examples.length === 0) { return null; } @@ -16,7 +21,7 @@ export function Examples({ examples, applyExampleQuestion }: ExamplesViewModel) className={`flowforge-example-chip flowforge-example-chip--${ example.type === 'default' ? 'primary' : 'secondary' }`} - onClick={() => applyExampleQuestion(example.question)} + onClick={() => onExampleQuestionSelect(example.question)} > {example.question} diff --git a/apps/extension/src/popup/components/Question/Question.tsx b/apps/extension/src/popup/components/Question/Question.tsx index 6d043cf..ba09008 100644 --- a/apps/extension/src/popup/components/Question/Question.tsx +++ b/apps/extension/src/popup/components/Question/Question.tsx @@ -1,16 +1,25 @@ -import type { QuestionViewModel } from '@/popup/hooks/usePopup.types'; import type { TargetedInputEvent, TargetedSubmitEvent } from 'preact'; import { Button } from '@/shared/components/Button'; import { Card } from '@/shared/components/Card'; import { useEffect, useRef } from 'preact/hooks'; -interface QuestionProps extends QuestionViewModel { +interface QuestionProps { + question: string; + onQuestionChange: (value: string) => void; + onAskQuestion: () => Promise; placeholder: string; selectOnly: boolean; disabled: boolean; } -export function Question({ question, setQuestion, askQuestion, placeholder, selectOnly, disabled }: QuestionProps) { +export function Question({ + question, + onQuestionChange, + onAskQuestion, + placeholder, + selectOnly, + disabled, +}: QuestionProps) { const textareaRef = useRef(null); useEffect(() => { @@ -18,17 +27,17 @@ export function Question({ question, setQuestion, askQuestion, placeholder, sele }, []); const handleOnInput = (e: TargetedInputEvent) => { - setQuestion((e.currentTarget as HTMLTextAreaElement).value); + onQuestionChange((e.currentTarget as HTMLTextAreaElement).value); }; const handleOnKeyDown = (e: KeyboardEvent) => { if (e.key === 'Enter' && !e.shiftKey) { e.preventDefault(); - askQuestion(); + void onAskQuestion(); } }; const handleOnSubmit = (e: TargetedSubmitEvent) => { e.preventDefault(); - askQuestion(); + void onAskQuestion(); }; return ( diff --git a/apps/extension/src/popup/components/Result/Result.tsx b/apps/extension/src/popup/components/Result/Result.tsx index 753c92c..5826425 100644 --- a/apps/extension/src/popup/components/Result/Result.tsx +++ b/apps/extension/src/popup/components/Result/Result.tsx @@ -1,8 +1,15 @@ import { ResultElements } from './ResultElements'; -import type { ResultViewModel } from '@/popup/hooks/usePopup.types'; import { Card } from '@/shared/components/Card'; +import type { AgentResult, AgentResultElement } from '@flowforge/contract'; -export function Result({ result, resultMetadata, error, navigateToElement }: ResultViewModel) { +interface ResultProps { + result: AgentResult | null; + resultMetadata: string | null; + error: string | null; + onNavigateToElement: (element: AgentResultElement) => void; +} + +export function Result({ result, resultMetadata, error, onNavigateToElement }: ResultProps) { if (error) { return ; } @@ -13,7 +20,7 @@ export function Result({ result, resultMetadata, error, navigateToElement }: Res )} {resultMetadata && ( diff --git a/apps/extension/src/popup/components/Result/ResultElements.tsx b/apps/extension/src/popup/components/Result/ResultElements.tsx index 2c12e53..d5c7863 100644 --- a/apps/extension/src/popup/components/Result/ResultElements.tsx +++ b/apps/extension/src/popup/components/Result/ResultElements.tsx @@ -3,10 +3,10 @@ import type { AgentResultElement, AgentResultMode } from '@flowforge/contract'; interface ResultElementsProps { elements: AgentResultElement[]; mode: AgentResultMode; - navigateToElement: (element: AgentResultElement) => void; + onNavigateToElement: (element: AgentResultElement) => void; } -export function ResultElements({ elements, mode, navigateToElement }: ResultElementsProps) { +export function ResultElements({ elements, mode, onNavigateToElement }: ResultElementsProps) { const isSteps = mode === 'steps'; return ( @@ -23,7 +23,7 @@ export function ResultElements({ elements, mode, navigateToElement }: ResultElem key={i} type="button" className="flowforge-element-item flowforge-element-item--chip" - onClick={() => navigateToElement(element)} + onClick={() => onNavigateToElement(element)} > {element.text} diff --git a/apps/extension/src/popup/hooks/usePopup.ts b/apps/extension/src/popup/hooks/usePopup.ts index 4d3af05..43dcdf0 100644 --- a/apps/extension/src/popup/hooks/usePopup.ts +++ b/apps/extension/src/popup/hooks/usePopup.ts @@ -6,12 +6,13 @@ import type { GetPrevQuestionsMessageResponse, MessageResponse, NavigateToElementMessage, + OpenPageInspectorMessage, + PopupInitializeMessage, } from '@/types'; import { config } from '@/config'; import { normalizeText } from '@/core/utils/text'; import { buildPresetExampleItems, type PopupExampleItem } from '@/popup/utils/data'; import { buildTryExampleItems } from '@/popup/utils/data'; -import type { PopupViewModel } from './usePopup.types'; import type { TransportService } from '@/adapters/interface'; import type { AgentResult, AgentResultElement } from '@flowforge/contract'; import { formatQueryResponseMetadata } from '@/popup/utils/format'; @@ -22,6 +23,22 @@ export interface UsePopupOptions { initialQuestion?: string; } +export interface PopupViewModel { + question: string; + setQuestion: (value: string) => void; + isLoading: boolean; + result: AgentResult | null; + resultMetadata: string | null; + error: string | null; + examples: PopupExampleItem[]; + copyright: string; + github: string; + askQuestion: () => Promise; + applyExampleQuestion: (question: string) => void; + navigateToElement: (element: AgentResultElement) => void; + openPageInspector: () => void; +} + export function usePopup({ transport, presetQuestions, initialQuestion }: UsePopupOptions): PopupViewModel { const [question, setQuestion] = useState(''); const [isLoading, setIsLoading] = useState(false); @@ -30,6 +47,17 @@ export function usePopup({ transport, presetQuestions, initialQuestion }: UsePop const [error, setError] = useState(null); const [examples, setExamples] = useState([]); + // Initialize event + useEffect(() => { + void (async () => { + const message: PopupInitializeMessage = { + type: 'POPUP_INITIALISE', + senderId: await transport.getActiveSenderId(), + }; + await transport.sendToBackground(message); + })(); + }, [transport]); + // Initialize questions examples useEffect(() => { if (presetQuestions && presetQuestions.length > 0) { @@ -62,6 +90,7 @@ export function usePopup({ transport, presetQuestions, initialQuestion }: UsePop void loadPreviousQuestions(); }, [presetQuestions, transport]); + // Initialize initial question if presented useEffect(() => { if (initialQuestion !== undefined) { setQuestion(initialQuestion); @@ -131,6 +160,17 @@ export function usePopup({ transport, presetQuestions, initialQuestion }: UsePop [transport], ); + // Handle open inspector + const handleOpenPageInspector = useCallback(async () => { + const message: OpenPageInspectorMessage = { + type: 'OPEN_PAGE_INSPECTOR', + senderId: await transport.getActiveSenderId(), + }; + await transport.sendToBackground(message); + }, + [transport], + ); + return { question, isLoading, @@ -145,6 +185,6 @@ export function usePopup({ transport, presetQuestions, initialQuestion }: UsePop askQuestion: handleAskQuestion, applyExampleQuestion: handleSelectExample, navigateToElement: handleNavigateToElement, - openPageInspector: () => alert('Not supported yet'), + openPageInspector: handleOpenPageInspector, }; } diff --git a/apps/extension/src/popup/hooks/usePopup.types.ts b/apps/extension/src/popup/hooks/usePopup.types.ts deleted file mode 100644 index 30d4e5e..0000000 --- a/apps/extension/src/popup/hooks/usePopup.types.ts +++ /dev/null @@ -1,51 +0,0 @@ -import type { PopupExampleItem } from '@/popup/utils/data'; -import type { AgentResult, AgentResultElement } from '@flowforge/contract'; - -export interface QuestionState { - question: string; -} - -export interface QuestionActions { - setQuestion: (value: string) => void; - askQuestion: () => Promise; -} - -export type QuestionViewModel = QuestionState & QuestionActions; - -export interface ExamplesState { - examples: PopupExampleItem[]; -} - -export interface ExamplesActions { - applyExampleQuestion: (question: string) => void; -} - -export type ExamplesViewModel = ExamplesState & ExamplesActions; - -export interface ResultState { - result: AgentResult | null; - resultMetadata: string | null; - error: string | null; -} - -export interface ResultActions { - navigateToElement: (element: AgentResultElement) => void; -} - -export type ResultViewModel = ResultState & ResultActions; - -export type DeveloperActions = { - openPageInspector: () => void; -} - -export type DeveloperViewModel = DeveloperActions; - -export interface PopupState extends QuestionState, ExamplesState, ResultState { - isLoading: boolean; - copyright: string; - github: string; -} - -export type PopupActions = QuestionActions & ExamplesActions & ResultActions & DeveloperActions; - -export type PopupViewModel = PopupState & PopupActions; diff --git a/apps/extension/src/popup/popup.css b/apps/extension/src/popup/popup.css index 5663342..57f4f1f 100644 --- a/apps/extension/src/popup/popup.css +++ b/apps/extension/src/popup/popup.css @@ -20,6 +20,7 @@ flex-direction: column; background: var(--flowforge-color-bg); pointer-events: auto; + position: static; } .flowforge-popup__header { position: relative; diff --git a/apps/extension/src/shared/hooks/useSettings.ts b/apps/extension/src/shared/hooks/useSettings.ts index db22c92..f538946 100644 --- a/apps/extension/src/shared/hooks/useSettings.ts +++ b/apps/extension/src/shared/hooks/useSettings.ts @@ -10,12 +10,15 @@ import { type UpdateSettingsMessageResponse, } from '@/types'; import { config } from '@/config'; -import type { SettingsViewModel } from './useSettings.types'; interface UseSettingsParams { transport: TransportService; } +export interface SettingsViewModel extends ExtensionSettings { + toggleTheme: () => Promise; +} + export function useSettings({ transport }: UseSettingsParams): SettingsViewModel { const [settings, setSettings] = useState(config.defaultSettings); diff --git a/apps/extension/src/shared/hooks/useSettings.types.ts b/apps/extension/src/shared/hooks/useSettings.types.ts deleted file mode 100644 index 4553fcf..0000000 --- a/apps/extension/src/shared/hooks/useSettings.types.ts +++ /dev/null @@ -1,7 +0,0 @@ -import type { ExtensionSettings } from '@/types'; - -export interface SettingsActions { - toggleTheme: () => Promise; -} - -export type SettingsViewModel = ExtensionSettings & SettingsActions; From 4d7ca4a7aedfb07950cf20c5a6f5913554c60acb Mon Sep 17 00:00:00 2001 From: cerberus-ab Date: Fri, 14 Aug 2026 18:51:45 +0200 Subject: [PATCH 09/20] PageInspector charset --- .../page/components/Inspector/Inspector.css | 74 +++++++++++++++- .../page/components/Inspector/Inspector.tsx | 58 +++++++++++- apps/extension/src/page/hooks/usePage.ts | 10 +-- .../src/shared/components/Button/Button.css | 6 ++ .../src/shared/components/Button/Button.tsx | 3 +- .../src/shared/components/Tabs/Tabs.css | 45 ++++++++++ .../src/shared/components/Tabs/Tabs.tsx | 88 +++++++++++++++++++ .../src/shared/components/Tabs/index.ts | 1 + apps/extension/src/shared/index.css | 1 + 9 files changed, 273 insertions(+), 13 deletions(-) create mode 100644 apps/extension/src/shared/components/Tabs/Tabs.css create mode 100644 apps/extension/src/shared/components/Tabs/Tabs.tsx create mode 100644 apps/extension/src/shared/components/Tabs/index.ts diff --git a/apps/extension/src/page/components/Inspector/Inspector.css b/apps/extension/src/page/components/Inspector/Inspector.css index af71b9c..7ecdcd4 100644 --- a/apps/extension/src/page/components/Inspector/Inspector.css +++ b/apps/extension/src/page/components/Inspector/Inspector.css @@ -16,16 +16,84 @@ .flowforge-inspector { width: min(100%, var(--flowforge-inspector-max-width)); height: calc(100vh - var(--flowforge-app-offset) * 2); - overflow: auto; + overflow: hidden; + display: flex; + flex-direction: column; box-sizing: border-box; background: var(--flowforge-color-surface); border: 1px solid var(--flowforge-color-border); - border-top: 4px solid var(--flowforge-color-primary); border-radius: var(--flowforge-pad-sm); - padding: var(--flowforge-pad-lg); + padding: 0; box-shadow: 0 0 0 4px rgba(var(--flowforge-rgb-primary), 0.14), 0 6px 18px rgba(var(--flowforge-rgb-shadow), 0.12); color: var(--flowforge-color-text); font: var(--flowforge-text-md); } + +/* Header */ +.flowforge-inspector__header { + flex-shrink: 0; + display: flex; + align-items: flex-start; + justify-content: space-between; + background-color: var(--flowforge-color-bg); + gap: var(--flowforge-pad-lg); + padding: var(--flowforge-pad-lg) var(--flowforge-pad-lg) var(--flowforge-pad-xl) var(--flowforge-pad-lg); +} +.flowforge-inspector__header-title { + margin: 0 0 var(--flowforge-pad-lg); + font: var(--flowforge-text-h3); + color: var(--flowforge-color-text); +} +.flowforge-inspector__header-subtitle { + margin: 0; + font: var(--flowforge-text-md); + color: var(--flowforge-color-text); + white-space: pre-wrap; +} + +/* Navigation */ +.flowforge-inspector__nav { + flex-shrink: 0; + padding: 0; + background-color: var(--flowforge-color-bg); +} +.flowforge-inspector__nav .flowforge-tabs__tab:first-child { + margin-left: var(--flowforge-pad-lg); +} +.flowforge-inspector__nav .flowforge-tabs__tab:last-child { + margin-right: var(--flowforge-pad-lg); +} + +/* Content */ +.flowforge-inspector__content { + flex: 1; + min-height: 0; + overflow-y: auto; + overflow-x: hidden; + padding: var(--flowforge-pad-lg); +} +.flowforge-inspector__content::-webkit-scrollbar { + width: var(--flowforge-pad-xs); +} +.flowforge-inspector__content::-webkit-scrollbar-thumb { + background: rgba(var(--flowforge-rgb-primary), 0.5); + border-radius: 999px; +} +.flowforge-inspector__json { + margin: 0; + max-width: 100%; + white-space: pre-wrap; + overflow-wrap: anywhere; + font: var(--flowforge-text-sm); +} + +/* Footer */ +.flowforge-inspector__footer { + flex-shrink: 0; + padding: var(--flowforge-pad-lg); + background-color: var(--flowforge-color-bg); + border-top: 1px solid var(--flowforge-color-border); + font: var(--flowforge-text-sm); +} diff --git a/apps/extension/src/page/components/Inspector/Inspector.tsx b/apps/extension/src/page/components/Inspector/Inspector.tsx index 0341255..a600b13 100644 --- a/apps/extension/src/page/components/Inspector/Inspector.tsx +++ b/apps/extension/src/page/components/Inspector/Inspector.tsx @@ -1,10 +1,23 @@ import type { TargetedPointerEvent } from 'preact'; -import { useEffect } from 'preact/hooks'; +import { useEffect, useState } from 'preact/hooks'; import { getEventTarget } from '@/core/utils/dom'; import type { InspectorViewModel } from '@/page/hooks/usePage'; import { Button } from '@/shared/components/Button'; +import { Tabs } from '@/shared/components/Tabs'; + +const inspectorTabs = [ + { id: 'basics', label: 'Basics' }, + { id: 'content', label: 'Content' }, + { id: 'interactive', label: 'Interactive' }, + { id: 'timestamp', label: 'Timestamp' }, +] as const; + +type InspectorTabId = (typeof inspectorTabs)[number]['id']; export function Inspector({ pageTrail, close } : InspectorViewModel) { + const [activeTab, setActiveTab] = useState('basics'); + const activeTabLabel = inspectorTabs.find((tab) => tab.id === activeTab)?.label ?? activeTab; + // Close on esc useEffect(() => { const handleKeyDown = (e: KeyboardEvent) => { @@ -32,9 +45,46 @@ export function Inspector({ pageTrail, close } : InspectorViewModel) { return (
-
- {JSON.stringify(Object.keys(pageTrail), null, 2)} - +
+
+
+

+ Inspect Page Context +

+

+ See what FlowForge understands about this page +

+
+
+ +
+
+
+ setActiveTab(id as InspectorTabId)} + autoFocus + /> +
+
+
{JSON.stringify(pageTrail[activeTab], null, 2)}
+
+
+ TODO: add page-trail stats +
); diff --git a/apps/extension/src/page/hooks/usePage.ts b/apps/extension/src/page/hooks/usePage.ts index 3c43495..572c78e 100644 --- a/apps/extension/src/page/hooks/usePage.ts +++ b/apps/extension/src/page/hooks/usePage.ts @@ -68,20 +68,20 @@ export function usePage({ transport }: UsePageOptions): PageViewModel { const [wizard, setWizard] = useState(null); const [inspector, setInspector] = useState(null); - const closeWizard = () => { + const closeWizard = useCallback(() => { setHighlights([]); setWizard(null); - }; + }, []); - const closeInspector = () => { + const closeInspector = useCallback(() => { setInspector(null); - }; + }, []); // Close wizard (with all highlights) and inspector const clearPage = useCallback(() => { closeWizard(); closeInspector(); - }, []); + }, [closeWizard, closeInspector]); // Highlight an element const highlightElement = useCallback((element: AgentResultElement) => { diff --git a/apps/extension/src/shared/components/Button/Button.css b/apps/extension/src/shared/components/Button/Button.css index c9f3aa2..f3425f4 100644 --- a/apps/extension/src/shared/components/Button/Button.css +++ b/apps/extension/src/shared/components/Button/Button.css @@ -1,5 +1,6 @@ /* Button */ .flowforge-button { + appearance: none; padding: var(--flowforge-pad-sm) var(--flowforge-pad-lg); border-radius: var(--flowforge-pad-xs); font: var(--flowforge-text-md); @@ -7,6 +8,11 @@ border: none; transition: var(--flowforge-transition-default); } +.flowforge-button--sm { + padding: var(--flowforge-pad-xs) var(--flowforge-pad-sm); + border-radius: var(--flowforge-pad-xs); + font: var(--flowforge-text-sm); +} .flowforge-button--lg { padding: var(--flowforge-pad-lg); border-radius: var(--flowforge-pad-sm); diff --git a/apps/extension/src/shared/components/Button/Button.tsx b/apps/extension/src/shared/components/Button/Button.tsx index 8545920..a5059dd 100644 --- a/apps/extension/src/shared/components/Button/Button.tsx +++ b/apps/extension/src/shared/components/Button/Button.tsx @@ -2,7 +2,7 @@ import type { ComponentProps } from 'preact'; interface ButtonProps extends ComponentProps<'button'> { variant?: 'primary' | 'secondary'; - size?: 'medium' | 'large'; + size?: 'small' | 'medium' | 'large'; wide?: boolean; } @@ -10,6 +10,7 @@ export function Button({ variant = 'primary', size = 'medium', wide = false, ... const classes = [ 'flowforge-button', `flowforge-button--${variant}`, + size === 'small' && 'flowforge-button--sm', size === 'large' && 'flowforge-button--lg', wide && 'flowforge-button--wide', ] diff --git a/apps/extension/src/shared/components/Tabs/Tabs.css b/apps/extension/src/shared/components/Tabs/Tabs.css new file mode 100644 index 0000000..da0a450 --- /dev/null +++ b/apps/extension/src/shared/components/Tabs/Tabs.css @@ -0,0 +1,45 @@ +/* Tabs */ +.flowforge-tabs { + display: flex; + gap: var(--flowforge-pad-sm); + border-bottom: 1px solid var(--flowforge-color-border); + padding: 0; +} +.flowforge-tabs__tab { + appearance: none; + border: 0; + border-bottom: 2px solid transparent; + margin: 0 0 -1px; + padding: 0 0 var(--flowforge-pad-xs) 0; + cursor: pointer; + background: transparent; + transition: var(--flowforge-transition-default); +} +.flowforge-tabs__tab-label { + display: inline-flex; + align-items: center; + padding: var(--flowforge-pad-xs) var(--flowforge-pad-sm); + border-radius: var(--flowforge-pad-xs); + color: var(--flowforge-color-text-muted); + font: var(--flowforge-text-sm); +} +.flowforge-tabs__tab:hover .flowforge-tabs__tab-label { + color: var(--flowforge-color-text); + background: var(--flowforge-color-surface); +} +.flowforge-tabs__tab--active { + border-bottom-color: var(--flowforge-color-primary); +} +.flowforge-tabs__tab--active .flowforge-tabs__tab-label { + color: var(--flowforge-color-text); +} +.flowforge-tabs__tab:focus-visible { + outline: none; +} +.flowforge-tabs__tab:focus-visible .flowforge-tabs__tab-label { + outline: 2px solid rgba(var(--flowforge-rgb-primary), 0.45); +} +.flowforge-tabs__tab:disabled { + cursor: not-allowed; + opacity: 0.5; +} diff --git a/apps/extension/src/shared/components/Tabs/Tabs.tsx b/apps/extension/src/shared/components/Tabs/Tabs.tsx new file mode 100644 index 0000000..55c4d4e --- /dev/null +++ b/apps/extension/src/shared/components/Tabs/Tabs.tsx @@ -0,0 +1,88 @@ +import type { ComponentChildren } from 'preact'; +import { useEffect, useId, useRef } from 'preact/hooks'; + +export interface TabItem { + id: string; + label: ComponentChildren; + disabled?: boolean; +} + +interface TabsProps { + tabs: readonly TabItem[]; + activeId: string; + onChange: (id: string) => void; + autoFocus?: boolean; +} + +export function Tabs({ tabs, activeId, onChange, autoFocus = false }: TabsProps) { + const tabIdPrefix = `flowforge-tabs-${useId()}`; + const tabRefs = useRef>({}); + const activeIndex = tabs.findIndex((tab) => tab.id === activeId); + + useEffect(() => { + if (!autoFocus) return; + + tabRefs.current[activeId]?.focus(); + }, [activeId, autoFocus]); + + const focusTab = (index: number) => { + const tab = tabs[index]; + if (!tab || tab.disabled) return; + + onChange(tab.id); + tabRefs.current[tab.id]?.focus(); + }; + + const handleKeyDown = (e: KeyboardEvent) => { + const enabledTabs = tabs + .map((tab, index) => ({ tab, index })) + .filter(({ tab }) => !tab.disabled); + const currentEnabledIndex = enabledTabs.findIndex(({ tab }) => tab.id === activeId); + + if (currentEnabledIndex === -1) return; + + if (e.key === 'ArrowRight') { + e.preventDefault(); + focusTab(enabledTabs[(currentEnabledIndex + 1) % enabledTabs.length]!.index); + } + if (e.key === 'ArrowLeft') { + e.preventDefault(); + focusTab(enabledTabs[(currentEnabledIndex - 1 + enabledTabs.length) % enabledTabs.length]!.index); + } + if (e.key === 'Home') { + e.preventDefault(); + focusTab(enabledTabs[0]!.index); + } + if (e.key === 'End') { + e.preventDefault(); + focusTab(enabledTabs[enabledTabs.length - 1]!.index); + } + }; + + return ( +
+ {tabs.map((tab, index) => { + const isActive = index === activeIndex; + + return ( + + ); + })} +
+ ); +} diff --git a/apps/extension/src/shared/components/Tabs/index.ts b/apps/extension/src/shared/components/Tabs/index.ts new file mode 100644 index 0000000..1ff22eb --- /dev/null +++ b/apps/extension/src/shared/components/Tabs/index.ts @@ -0,0 +1 @@ +export { Tabs } from './Tabs'; \ No newline at end of file diff --git a/apps/extension/src/shared/index.css b/apps/extension/src/shared/index.css index 6a034ea..903690d 100644 --- a/apps/extension/src/shared/index.css +++ b/apps/extension/src/shared/index.css @@ -5,3 +5,4 @@ @import './components/Card/Card.css'; @import './components/Notice/Notice.css'; @import './components/Star/StarTwinkle.css'; +@import './components/Tabs/Tabs.css'; From f9bfc3f43360e0f3a24f4125652270e554e52e34 Mon Sep 17 00:00:00 2001 From: cerberus-ab Date: Sat, 15 Aug 2026 00:53:44 +0200 Subject: [PATCH 10/20] PageInspector JsonViewer --- .../src/background/BackgroundWorker.ts | 22 ++-- .../page/components/Inspector/Inspector.css | 7 -- .../page/components/Inspector/Inspector.tsx | 4 +- apps/extension/src/popup/hooks/usePopup.ts | 16 ++- .../components/JsonViewer/JsonViewer.css | 78 +++++++++++++ .../components/JsonViewer/JsonViewer.tsx | 109 ++++++++++++++++++ .../src/shared/components/JsonViewer/index.ts | 1 + apps/extension/src/shared/index.css | 1 + 8 files changed, 212 insertions(+), 26 deletions(-) create mode 100644 apps/extension/src/shared/components/JsonViewer/JsonViewer.css create mode 100644 apps/extension/src/shared/components/JsonViewer/JsonViewer.tsx create mode 100644 apps/extension/src/shared/components/JsonViewer/index.ts diff --git a/apps/extension/src/background/BackgroundWorker.ts b/apps/extension/src/background/BackgroundWorker.ts index c15e9fe..5333b4d 100644 --- a/apps/extension/src/background/BackgroundWorker.ts +++ b/apps/extension/src/background/BackgroundWorker.ts @@ -82,21 +82,21 @@ export class BackgroundWorker { } /** - * Handles the initial popup lifecycle message. + * Clears page UI state when the popup opens. + * + * This intentionally does not await the page response. Opening the popup must + * not depend on content script availability or page runtime health. * * @param message - Popup initialization message containing the target sender ID. - * @throws Rethrows transport errors after logging them. */ - private async handlePopupInitialize(message: PopupInitializeMessage): Promise { - try { - await this.transport.sendToPage(message.senderId, { + private handlePopupInitialize(message: PopupInitializeMessage): MessageResponse { + void this.transport + .sendToPage(message.senderId, { type: 'CLEAR_PAGE', - }); - return { success: true }; - } catch (error) { - console.error('[Background] Error popup initializing:', error); - throw error; - } + }) + .catch(() => undefined); + + return { success: true }; } /** diff --git a/apps/extension/src/page/components/Inspector/Inspector.css b/apps/extension/src/page/components/Inspector/Inspector.css index 7ecdcd4..8237219 100644 --- a/apps/extension/src/page/components/Inspector/Inspector.css +++ b/apps/extension/src/page/components/Inspector/Inspector.css @@ -81,13 +81,6 @@ background: rgba(var(--flowforge-rgb-primary), 0.5); border-radius: 999px; } -.flowforge-inspector__json { - margin: 0; - max-width: 100%; - white-space: pre-wrap; - overflow-wrap: anywhere; - font: var(--flowforge-text-sm); -} /* Footer */ .flowforge-inspector__footer { diff --git a/apps/extension/src/page/components/Inspector/Inspector.tsx b/apps/extension/src/page/components/Inspector/Inspector.tsx index a600b13..a483541 100644 --- a/apps/extension/src/page/components/Inspector/Inspector.tsx +++ b/apps/extension/src/page/components/Inspector/Inspector.tsx @@ -3,13 +3,13 @@ import { useEffect, useState } from 'preact/hooks'; import { getEventTarget } from '@/core/utils/dom'; import type { InspectorViewModel } from '@/page/hooks/usePage'; import { Button } from '@/shared/components/Button'; +import { JsonViewer } from '@/shared/components/JsonViewer'; import { Tabs } from '@/shared/components/Tabs'; const inspectorTabs = [ { id: 'basics', label: 'Basics' }, { id: 'content', label: 'Content' }, { id: 'interactive', label: 'Interactive' }, - { id: 'timestamp', label: 'Timestamp' }, ] as const; type InspectorTabId = (typeof inspectorTabs)[number]['id']; @@ -80,7 +80,7 @@ export function Inspector({ pageTrail, close } : InspectorViewModel) { role="tabpanel" aria-label={`${activeTabLabel} tab panel`} > -
{JSON.stringify(pageTrail[activeTab], null, 2)}
+
TODO: add page-trail stats diff --git a/apps/extension/src/popup/hooks/usePopup.ts b/apps/extension/src/popup/hooks/usePopup.ts index 43dcdf0..f16535d 100644 --- a/apps/extension/src/popup/hooks/usePopup.ts +++ b/apps/extension/src/popup/hooks/usePopup.ts @@ -47,14 +47,18 @@ export function usePopup({ transport, presetQuestions, initialQuestion }: UsePop const [error, setError] = useState(null); const [examples, setExamples] = useState([]); - // Initialize event + // Clear page UI state when popup opens. useEffect(() => { void (async () => { - const message: PopupInitializeMessage = { - type: 'POPUP_INITIALISE', - senderId: await transport.getActiveSenderId(), - }; - await transport.sendToBackground(message); + try { + const message: PopupInitializeMessage = { + type: 'POPUP_INITIALISE', + senderId: await transport.getActiveSenderId(), + }; + await transport.sendToBackground(message); + } catch { + // Popup startup should not fail if the active tab cannot receive page messages. + } })(); }, [transport]); diff --git a/apps/extension/src/shared/components/JsonViewer/JsonViewer.css b/apps/extension/src/shared/components/JsonViewer/JsonViewer.css new file mode 100644 index 0000000..424f9d9 --- /dev/null +++ b/apps/extension/src/shared/components/JsonViewer/JsonViewer.css @@ -0,0 +1,78 @@ +/* Json Viewer */ +.flowforge-json-viewer { + font: var(--flowforge-text-sm); + font-family: ui-monospace, SFMono-Regular, Menlo, Monaco, Consolas, "Liberation Mono", monospace; + line-height: 1.55; +} +.flowforge-json-viewer__node { + margin: 0; +} +.flowforge-json-viewer__summary { + display: flex; + align-items: baseline; + gap: var(--flowforge-pad-xs); + min-width: 0; + cursor: pointer; + list-style: none; + border-radius: var(--flowforge-pad-xs); +} +.flowforge-json-viewer__summary:hover, +.flowforge-json-viewer__summary:focus-visible { + background: rgba(var(--flowforge-rgb-primary), 0.08); +} +.flowforge-json-viewer__summary::-webkit-details-marker { + display: none; +} +.flowforge-json-viewer__summary::before { + content: "›"; + width: 1em; + flex: 0 0 auto; + color: var(--flowforge-color-text-muted); + transition: transform 0.12s ease; +} +.flowforge-json-viewer__node[open] > .flowforge-json-viewer__summary::before { + transform: rotate(90deg); +} +.flowforge-json-viewer__row { + min-width: 0; + padding-left: 1em; +} +.flowforge-json-viewer__children { + margin-left: 1.5em; + padding-left: var(--flowforge-pad-md); + border-left: 1px solid var(--flowforge-color-border); +} +.flowforge-json-viewer__key { + color: var(--flowforge-color-text); + overflow-wrap: anywhere; +} +.flowforge-json-viewer__bracket { + color: var(--flowforge-color-text-muted); +} +.flowforge-json-viewer__preview { + display: none; + color: var(--flowforge-color-text-muted); +} +.flowforge-json-viewer__node:not([open]) > .flowforge-json-viewer__summary .flowforge-json-viewer__preview { + display: inline; +} +.flowforge-json-viewer__meta { + color: var(--flowforge-color-text-muted); +} +.flowforge-json-viewer__primitive { + overflow-wrap: anywhere; +} +.flowforge-json-viewer__primitive--string { + color: var(--flowforge-color-secondary); +} +.flowforge-json-viewer__primitive--number, +.flowforge-json-viewer__primitive--boolean { + color: var(--flowforge-color-primary); +} +.flowforge-json-viewer__primitive--null, +.flowforge-json-viewer__primitive--undefined { + color: var(--flowforge-color-text-muted); +} +.flowforge-json-viewer__closing { + color: var(--flowforge-color-text-muted); +} diff --git a/apps/extension/src/shared/components/JsonViewer/JsonViewer.tsx b/apps/extension/src/shared/components/JsonViewer/JsonViewer.tsx new file mode 100644 index 0000000..4e43fc4 --- /dev/null +++ b/apps/extension/src/shared/components/JsonViewer/JsonViewer.tsx @@ -0,0 +1,109 @@ +type JsonObject = Record; + +interface JsonViewerProps { + value: unknown; +} + +interface JsonViewerNodeProps { + name?: string; + value: unknown; + depth?: number; +} + +function isJsonObject(value: unknown): value is JsonObject { + return typeof value === 'object' && value !== null && !Array.isArray(value); +} + +function formatPrimitive(value: unknown) { + if (value === null) return 'null'; + if (typeof value === 'string') return JSON.stringify(value); + if (typeof value === 'number' || typeof value === 'boolean') return String(value); + if (typeof value === 'undefined') return 'undefined'; + return JSON.stringify(value); +} + +function getValueType(value: unknown) { + if (value === null) return 'null'; + if (Array.isArray(value)) return 'array'; + return typeof value; +} + +function getCollectionMeta(value: unknown) { + if (Array.isArray(value)) { + return `${value.length} ${value.length === 1 ? 'item' : 'items'}`; + } + if (isJsonObject(value)) { + const count = Object.keys(value).length; + return `${count} ${count === 1 ? 'key' : 'keys'}`; + } + return ''; +} + +function getCollapsedPreview(value: unknown) { + if (Array.isArray(value)) return value.length === 0 ? '[]' : '[…]'; + if (isJsonObject(value)) return Object.keys(value).length === 0 ? '{}' : '{…}'; + return formatPrimitive(value); +} + +function JsonPrimitive({ value }: JsonViewerProps) { + const type = getValueType(value); + + return ( + + {formatPrimitive(value)} + + ); +} + +function JsonViewerNode({ name, value, depth = 0 }: JsonViewerNodeProps) { + const isArray = Array.isArray(value); + const isObject = isJsonObject(value); + const isCollection = isArray || isObject; + const hasName = name !== undefined; + + if (!isCollection) { + return ( +
+ {hasName ? {JSON.stringify(name)}: : null} + +
+ ); + } + + const entries = isArray ? value.map((item, index) => [String(index), item] as const) : Object.entries(value); + const collectionType = isArray ? 'array' : 'object'; + const isEmpty = entries.length === 0; + + return ( +
+ + {hasName ? {JSON.stringify(name)}: : null} + + {isArray ? '[' : '{'} + + {getCollapsedPreview(value)} + {getCollectionMeta(value)} + + {isEmpty ? null : ( +
+ {entries.map(([entryName, entryValue]) => ( + + ))} +
+ )} +
+ + {isArray ? ']' : '}'} + +
+
+ ); +} + +export function JsonViewer({ value }: JsonViewerProps) { + return ( +
+ +
+ ); +} diff --git a/apps/extension/src/shared/components/JsonViewer/index.ts b/apps/extension/src/shared/components/JsonViewer/index.ts new file mode 100644 index 0000000..5fe836f --- /dev/null +++ b/apps/extension/src/shared/components/JsonViewer/index.ts @@ -0,0 +1 @@ +export { JsonViewer } from './JsonViewer'; diff --git a/apps/extension/src/shared/index.css b/apps/extension/src/shared/index.css index 903690d..1423e7b 100644 --- a/apps/extension/src/shared/index.css +++ b/apps/extension/src/shared/index.css @@ -6,3 +6,4 @@ @import './components/Notice/Notice.css'; @import './components/Star/StarTwinkle.css'; @import './components/Tabs/Tabs.css'; +@import './components/JsonViewer/JsonViewer.css'; From d14739a17345708a7cfb71cfdca0b1f6d3840d17 Mon Sep 17 00:00:00 2001 From: cerberus-ab Date: Sat, 15 Aug 2026 02:38:19 +0200 Subject: [PATCH 11/20] PageTrail optimization --- apps/backend/src/agent/prompts.ts | 12 +- .../src/agent/tools/AbstractCallableTool.ts | 2 +- .../src/agent/tools/ToolFindElement.ts | 2 +- .../src/agent/tools/ToolFindWorkflow.ts | 2 +- apps/backend/src/types/tools.ts | 2 +- apps/extension/src/core/locator/locate.ts | 10 +- .../page/components/Inspector/Inspector.tsx | 1 + apps/extension/src/page/hooks/usePage.ts | 4 +- apps/extension/vite.config.chrome.ts | 1 + docs/BACKLOG.md | 4 + package-lock.json | 16 +- packages/contract/src/types/agentResult.ts | 2 +- packages/page-trail/package.json | 3 - .../src/collector/PageTrailCollector.test.ts | 20 ++- .../src/collector/PageTrailCollector.ts | 147 +++++++++++++----- .../collector/extractors/descriptor.test.ts | 34 ---- .../src/collector/extractors/descriptor.ts | 22 --- .../src/collector/importance/content.ts | 12 +- .../src/collector/importance/interactive.ts | 30 +++- .../src/collector/importance/topEl.test.ts | 20 ++- .../src/collector/importance/topEl.ts | 12 +- packages/page-trail/src/types/pageTrail.ts | 40 +++-- packages/page-trail/test/fixtures.ts | 4 +- 23 files changed, 243 insertions(+), 159 deletions(-) delete mode 100644 packages/page-trail/src/collector/extractors/descriptor.test.ts delete mode 100644 packages/page-trail/src/collector/extractors/descriptor.ts diff --git a/apps/backend/src/agent/prompts.ts b/apps/backend/src/agent/prompts.ts index 77b0bf1..9d462c2 100644 --- a/apps/backend/src/agent/prompts.ts +++ b/apps/backend/src/agent/prompts.ts @@ -32,7 +32,7 @@ Return only valid JSON: "elements": [ { "dataId": "string", - "selector": "string", + "cssSelector": "string", "text": "string", "action": "click|input|navigate|select|highlight" } @@ -62,7 +62,7 @@ ELEMENTS GENERAL RULES: - If the answer refers to a specific page element or text fragment, include that element in "elements" - If a tool returns a relevant element used for the answer, include it in "elements" - Return an empty "elements" array only when no valid relevant element is available from tool results -- Use dataId and selector exactly as returned by tools +- Map tool elementDataId to dataId and tool elementCssSelector to cssSelector exactly - Do not modify or invent them WORKFLOW ELEMENTS RULES: @@ -72,7 +72,7 @@ WORKFLOW ELEMENTS RULES: - Prefer broader coverage over minimal sufficiency - Exclude only clearly irrelevant, duplicate, or contradictory items - Map each selected step into one item in "elements" -- Preserve dataId and selector exactly as returned +- Map each step elementDataId to dataId and elementCssSelector to cssSelector exactly - Rewrite only the user-facing "text" and choose the appropriate "action" CONTENT ELEMENTS RULES: @@ -142,7 +142,7 @@ Extract valid JSON from the agent answer. TARGET SCHEMA: { "answer": string, - "elements": [{"dataId": string, "selector": string, "text": string, "action": "click|navigate|input|select|highlight"}], + "elements": [{"dataId": string, "cssSelector": string, "text": string, "action": "click|navigate|input|select|highlight"}], "mode": "direct|steps", "topic": string | null } @@ -152,10 +152,10 @@ RULES: - If valid JSON is present, extract it exactly - Do not reconstruct missing fields from prose - Do not create elements from answer text -- Include elements only if full data (dataId and selector) is provided +- Include elements only if full data (dataId and cssSelector) is provided - Omit elements with missing fields - Do not invent values or use placeholders (e.g. "unknown") -- Do not generate selectors or ids from text +- Do not generate CSS selectors or ids from text - Keep empty arrays as empty arrays Question: ${params.question} diff --git a/apps/backend/src/agent/tools/AbstractCallableTool.ts b/apps/backend/src/agent/tools/AbstractCallableTool.ts index 7cfe32f..d8199b6 100644 --- a/apps/backend/src/agent/tools/AbstractCallableTool.ts +++ b/apps/backend/src/agent/tools/AbstractCallableTool.ts @@ -41,7 +41,7 @@ export abstract class AbstractCallableTool implements CallableTool { elementPath: formantElementContextPath(element.context.path), elementSectionName: element.context.sectionName ?? '', elementDataId: element.dataId, - elementSelector: element.selector, + elementCssSelector: element.cssSelector ?? '', }; } diff --git a/apps/backend/src/agent/tools/ToolFindElement.ts b/apps/backend/src/agent/tools/ToolFindElement.ts index a6371f2..2c545bf 100644 --- a/apps/backend/src/agent/tools/ToolFindElement.ts +++ b/apps/backend/src/agent/tools/ToolFindElement.ts @@ -51,7 +51,7 @@ WHAT IT RETURNS: - Best matching element (if any) - Description of the element - Location context (section, path) -- Selector and dataId +- CSS selector and dataId IMPORTANT: - Returns only the best match, which may be imperfect diff --git a/apps/backend/src/agent/tools/ToolFindWorkflow.ts b/apps/backend/src/agent/tools/ToolFindWorkflow.ts index 34a1f7c..f3e0bcd 100644 --- a/apps/backend/src/agent/tools/ToolFindWorkflow.ts +++ b/apps/backend/src/agent/tools/ToolFindWorkflow.ts @@ -46,7 +46,7 @@ WHEN TO USE: WHAT IT RETURNS: - A list of relevant interactive elements (candidates) -- Each includes description, location, selector, and dataId +- Each includes description, location, CSS selector, and dataId IMPORTANT: - Results are candidates, not ordered steps diff --git a/apps/backend/src/types/tools.ts b/apps/backend/src/types/tools.ts index c16d8d8..143317b 100644 --- a/apps/backend/src/types/tools.ts +++ b/apps/backend/src/types/tools.ts @@ -36,7 +36,7 @@ export interface ToolResultElement { elementPath: string; elementSectionName: string; elementDataId: string; - elementSelector: string; + elementCssSelector: string; } export interface ToolFindElementFoundResultData extends ToolResultElement { diff --git a/apps/extension/src/core/locator/locate.ts b/apps/extension/src/core/locator/locate.ts index 0401d80..f49e029 100644 --- a/apps/extension/src/core/locator/locate.ts +++ b/apps/extension/src/core/locator/locate.ts @@ -24,22 +24,22 @@ export function getOrCreateDataId(el: Element): string { * * @param doc - The document to search within. * @param dataId - The value of the data id attribute to look up. - * @param fallbackSelector - Optional CSS selector to use if the data id lookup fails. + * @param cssSelector - Optional CSS selector to use if the data id lookup fails. * @returns The matching element, or `null` if not found. */ -export function findElement(doc: Document, dataId: string, fallbackSelector?: string): Element | null { +export function findElement(doc: Document, dataId: string, cssSelector?: string): Element | null { let el: Element | null = null; try { if (dataId) { el = doc.querySelector(`[${constants.DATA_ID_ATTRIBUTE}="${dataId}"]`); } - if (!el && fallbackSelector) { - el = doc.querySelector(fallbackSelector); + if (!el && cssSelector) { + el = doc.querySelector(cssSelector); } return el; } finally { if (!el) { - console.warn('[FlowForge] Element not found:', { dataId, fallbackSelector }); + console.warn('[FlowForge] Element not found:', { dataId, fallbackSelector: cssSelector }); } } } diff --git a/apps/extension/src/page/components/Inspector/Inspector.tsx b/apps/extension/src/page/components/Inspector/Inspector.tsx index a483541..25e63a2 100644 --- a/apps/extension/src/page/components/Inspector/Inspector.tsx +++ b/apps/extension/src/page/components/Inspector/Inspector.tsx @@ -10,6 +10,7 @@ const inspectorTabs = [ { id: 'basics', label: 'Basics' }, { id: 'content', label: 'Content' }, { id: 'interactive', label: 'Interactive' }, + { id: 'metadata', label: 'Metadata' }, ] as const; type InspectorTabId = (typeof inspectorTabs)[number]['id']; diff --git a/apps/extension/src/page/hooks/usePage.ts b/apps/extension/src/page/hooks/usePage.ts index 572c78e..663ac9a 100644 --- a/apps/extension/src/page/hooks/usePage.ts +++ b/apps/extension/src/page/hooks/usePage.ts @@ -85,7 +85,7 @@ export function usePage({ transport }: UsePageOptions): PageViewModel { // Highlight an element const highlightElement = useCallback((element: AgentResultElement) => { - const el = findElement(document, element.dataId, element.selector); + const el = findElement(document, element.dataId, element.cssSelector); if (el) { setHighlights([ @@ -138,7 +138,7 @@ export function usePage({ transport }: UsePageOptions): PageViewModel { // Show highlight for current step if (stepIndex > 0 && stepIndex <= prevWizard.steps.length) { const stepData = prevWizard.steps[stepIndex - 1]!; - const el = findElement(document, stepData.dataId, stepData.selector); + const el = findElement(document, stepData.dataId, stepData.cssSelector); if (el) { setHighlights([ diff --git a/apps/extension/vite.config.chrome.ts b/apps/extension/vite.config.chrome.ts index c2fcec1..f745127 100644 --- a/apps/extension/vite.config.chrome.ts +++ b/apps/extension/vite.config.chrome.ts @@ -18,6 +18,7 @@ export default defineConfig({ build: { target: 'esnext', sourcemap: true, + modulePreload: false, outDir: '../../dist/chrome', emptyOutDir: true, }, diff --git a/docs/BACKLOG.md b/docs/BACKLOG.md index f936714..2aef405 100644 --- a/docs/BACKLOG.md +++ b/docs/BACKLOG.md @@ -55,6 +55,10 @@ - Cache for pageTrail transfer, with RAG cache - Enhance dataId and selector usage for El locator +### Page Inspector + +- Loading state + ## DX - Dev/Prod mode diff --git a/package-lock.json b/package-lock.json index ac05771..f3376ec 100644 --- a/package-lock.json +++ b/package-lock.json @@ -2204,6 +2204,7 @@ "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", "license": "MIT", + "peer": true, "dependencies": { "color-convert": "^2.0.1" }, @@ -2641,6 +2642,7 @@ "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", "license": "MIT", + "peer": true, "dependencies": { "ansi-styles": "^4.1.0", "supports-color": "^7.1.0" @@ -2673,6 +2675,7 @@ "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", "license": "MIT", + "peer": true, "dependencies": { "has-flag": "^4.0.0" }, @@ -2735,6 +2738,7 @@ "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", "license": "MIT", + "peer": true, "dependencies": { "color-name": "~1.1.4" }, @@ -2746,7 +2750,8 @@ "version": "1.1.4", "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", - "license": "MIT" + "license": "MIT", + "peer": true }, "node_modules/command-line-args": { "version": "5.2.1", @@ -3000,12 +3005,6 @@ "url": "https://github.com/sponsors/fb55" } }, - "node_modules/css-selector-generator": { - "version": "3.9.4", - "resolved": "https://registry.npmjs.org/css-selector-generator/-/css-selector-generator-3.9.4.tgz", - "integrity": "sha512-UGmb2Llm6TZB3UYu0enMCqJZna1xNPFYujde5yQml6e7Igm/fBaeDYph8rE35C1/gGjaB8HRbwVsN8v+d3P30g==", - "license": "MIT" - }, "node_modules/css-what": { "version": "6.2.2", "resolved": "https://registry.npmjs.org/css-what/-/css-what-6.2.2.tgz", @@ -6544,9 +6543,6 @@ "packages/page-trail": { "name": "@flowforge/page-trail", "version": "0.1.0", - "dependencies": { - "css-selector-generator": "^3.9.2" - }, "devDependencies": { "@eslint/js": "^10.0.1", "@tsconfig/node22": "^22.0.5", diff --git a/packages/contract/src/types/agentResult.ts b/packages/contract/src/types/agentResult.ts index 5855f05..26276b1 100644 --- a/packages/contract/src/types/agentResult.ts +++ b/packages/contract/src/types/agentResult.ts @@ -5,7 +5,7 @@ export const AgentResultElementActionSchema = z.enum(['click', 'navigate', 'inpu export const AgentResultElementSchema = z.object({ text: z.string(), dataId: z.string(), - selector: z.string(), + cssSelector: z.string(), action: AgentResultElementActionSchema, }); diff --git a/packages/page-trail/package.json b/packages/page-trail/package.json index b59b43e..ee44b30 100644 --- a/packages/page-trail/package.json +++ b/packages/page-trail/package.json @@ -19,9 +19,6 @@ "lint:fix": "eslint . --fix", "dev": "tsc -p tsconfig.json --watch" }, - "dependencies": { - "css-selector-generator": "^3.9.2" - }, "devDependencies": { "@eslint/js": "^10.0.1", "@tsconfig/node22": "^22.0.5", diff --git a/packages/page-trail/src/collector/PageTrailCollector.test.ts b/packages/page-trail/src/collector/PageTrailCollector.test.ts index 1fe61db..5ef2ac2 100644 --- a/packages/page-trail/src/collector/PageTrailCollector.test.ts +++ b/packages/page-trail/src/collector/PageTrailCollector.test.ts @@ -30,7 +30,8 @@ describe('PageTrailCollector', () => { scrollHeight: 2000, }, }); - expect(model.timestamp).toBeTypeOf('number'); + expect(model.metadata.collectedAt).toBeTypeOf('number'); + expect(model.metadata.durationMs).toBeTypeOf('number'); }); it('collects visible content elements', () => { @@ -55,6 +56,7 @@ describe('PageTrailCollector', () => { tag: 'h1', text: 'Welcome', dataId: 'title', + cssSelector: '#title', }), expect.objectContaining({ kind: 'content', @@ -62,6 +64,7 @@ describe('PageTrailCollector', () => { tag: 'p', text: 'Useful paragraph text', dataId: 'intro', + cssSelector: '#intro', }), ]), ); @@ -89,6 +92,7 @@ describe('PageTrailCollector', () => { type: 'button', role: 'button', dataId: 'save', + cssSelector: '#save', labels: [{ source: 'aria-label', value: 'Save changes' }], }), expect.objectContaining({ @@ -96,6 +100,7 @@ describe('PageTrailCollector', () => { type: 'link', role: 'link', dataId: 'docs', + cssSelector: '#docs', link: { type: 'internal', href: 'http://localhost:3000/docs', @@ -106,6 +111,7 @@ describe('PageTrailCollector', () => { type: 'input', role: 'textbox', dataId: 'email', + cssSelector: '#email', labels: [{ source: 'placeholder', value: 'Email' }], }), ]), @@ -152,6 +158,17 @@ describe('PageTrailCollector', () => { expect(model.interactive[0]).toEqual(expect.objectContaining({ dataId: 'button' })); }); + it('keeps cssSelector undefined when css selector resolver is not configured', () => { + document.body.innerHTML = ``; + markVisible('#save'); + + const model = PageTrailCollector.collectFor(window, document, { + getElementDataId: (el) => el.id, + }); + + expect(model.interactive[0]).toEqual(expect.objectContaining({ dataId: 'save', cssSelector: undefined })); + }); + it('collectFor returns a collected page trail', () => { document.body.innerHTML = ``; markVisible('#save'); @@ -168,6 +185,7 @@ describe('PageTrailCollector', () => { function collect(options: Partial[2]> = {}) { return new PageTrailCollector(window, document, { getElementDataId: (el) => el.id, + getElementCssSelector: (el) => `#${el.id}`, ...options, }).collect(); } diff --git a/packages/page-trail/src/collector/PageTrailCollector.ts b/packages/page-trail/src/collector/PageTrailCollector.ts index 6c053a0..54c3148 100644 --- a/packages/page-trail/src/collector/PageTrailCollector.ts +++ b/packages/page-trail/src/collector/PageTrailCollector.ts @@ -1,16 +1,17 @@ -import type { ContentElement, InteractiveElement, PageBasics, PageTrail } from '../types/index.ts'; +import type { ContentElement, ElementIdentifier, InteractiveElement, PageBasics, PageTrail } from '../types/index.ts'; import { getElementLabels } from './extractors/primitive/label.ts'; import { getInteractiveRole, roleToInteractiveElementType } from './extractors/primitive/role.ts'; -import { isAboveTheFold, isElementVisible, isInViewport } from './extractors/primitive/view.ts'; +import { getElementBoundingBox, isAboveTheFold, isElementVisible, isInViewport } from './extractors/primitive/view.ts'; import { getInteractiveElementState } from './extractors/primitive/state.ts'; import { getElementText } from './extractors/primitive/text.ts'; import { getElementLink } from './extractors/primitive/link.ts'; import { getElementContext } from './extractors/context.ts'; -import { extractElementDescriptor } from './extractors/descriptor.ts'; import { isSensitiveElement } from './extractors/primitive/sensitive.ts'; import { scoreContentElement, scoreInteractiveElement } from './importance/scoring.ts'; -import { topElements } from './importance/topEl.ts'; +import { type TopElements, topElements } from './importance/topEl.ts'; +import type { InteractiveElementScoringData } from './importance/interactive.ts'; +import type { ContentElementScoringData } from './importance/content.ts'; // constants const CONTENT_MIN_TEXT_LENGTH = 5; @@ -19,14 +20,19 @@ export interface CollectorOptions { contentElementsLimit?: number; interactiveElementsLimit?: number; getElementDataId: (el: Element) => string; + // For example: css-selector-generator + getElementCssSelector?: (el: Element) => string; } +type ResolvedCollectorOptions = + Required> & + Pick; + /** * Collects a normalized PageTrail from the DOM * * TODO: implement a cache, but with dataId ref consistency * TODO: provide a plugins API to extend the collector - * TODO: provide metrics on the model collection * * Extracts page metadata, content, and interactive elements, and assigns * stable `dataId` identifiers to elements for downstream usage. @@ -46,7 +52,7 @@ export class PageTrailCollector { // document.getElementById(id) - resolves IDs from aria-labelledby to label elements // document.querySelector('label[for="..."]') - finds a
- TODO: add page-trail stats +
diff --git a/apps/extension/src/page/components/Inspector/components/Metadata/PageMetadata.tsx b/apps/extension/src/page/components/Inspector/components/Metadata/PageMetadata.tsx new file mode 100644 index 0000000..23cb52f --- /dev/null +++ b/apps/extension/src/page/components/Inspector/components/Metadata/PageMetadata.tsx @@ -0,0 +1,41 @@ +import type { PageTrail } from '@flowforge/contract'; + +export interface PageMetadataProps { + metadata: PageTrail['metadata'], +} + +export function PageMetadata({ metadata } : PageMetadataProps) { + return ( +
+ Selected{' '} + {metadata.contentElementsLimitReached ? ( + <> + + {metadata.contentElements} + + /{metadata.contentElementsTotal} + + ) : ( + <>{metadata.contentElements} + )}{' '} + content elements,{' '} + {metadata.interactiveElementsLimitReached ? ( + <> + + {metadata.interactiveElements} + + /{metadata.interactiveElementsTotal} + + ) : ( + <>{metadata.interactiveElements} + )}{' '} + interactive elements · {metadata.durationMs}ms +
+ ); +} \ No newline at end of file diff --git a/apps/extension/src/page/components/Inspector/components/Metadata/index.tsx b/apps/extension/src/page/components/Inspector/components/Metadata/index.tsx new file mode 100644 index 0000000..6e954b0 --- /dev/null +++ b/apps/extension/src/page/components/Inspector/components/Metadata/index.tsx @@ -0,0 +1 @@ +export { PageMetadata } from './PageMetadata'; \ No newline at end of file diff --git a/apps/extension/src/shared/components/JsonViewer/JsonViewer.css b/apps/extension/src/shared/components/JsonViewer/JsonViewer.css index 424f9d9..1081e09 100644 --- a/apps/extension/src/shared/components/JsonViewer/JsonViewer.css +++ b/apps/extension/src/shared/components/JsonViewer/JsonViewer.css @@ -1,8 +1,6 @@ /* Json Viewer */ .flowforge-json-viewer { - font: var(--flowforge-text-sm); - font-family: ui-monospace, SFMono-Regular, Menlo, Monaco, Consolas, "Liberation Mono", monospace; - line-height: 1.55; + font: var(--flowforge-text-monospace-sm); } .flowforge-json-viewer__node { margin: 0; diff --git a/apps/extension/src/shared/components/Main/Main.css b/apps/extension/src/shared/components/Main/Main.css index 800d513..1200c1b 100644 --- a/apps/extension/src/shared/components/Main/Main.css +++ b/apps/extension/src/shared/components/Main/Main.css @@ -1,9 +1,11 @@ -@import './tokens.css'; - /* Main */ .flowforge-main { font: var(--flowforge-text-md); color: var(--flowforge-color-text); + text-align: initial; + text-transform: none; + letter-spacing: normal; + visibility: visible; } :where(.flowforge-main, .flowforge-main *) { margin: 0; diff --git a/apps/extension/src/shared/index.css b/apps/extension/src/shared/index.css index 1423e7b..c70b1d5 100644 --- a/apps/extension/src/shared/index.css +++ b/apps/extension/src/shared/index.css @@ -1,3 +1,6 @@ +@import './styles/tokens.css'; +@import './styles/modifiers.css'; + @import './components/Main/Main.css'; @import './components/Link/Link.css'; @import './components/Button/Button.css'; diff --git a/apps/extension/src/shared/styles/modifiers.css b/apps/extension/src/shared/styles/modifiers.css new file mode 100644 index 0000000..b592b70 --- /dev/null +++ b/apps/extension/src/shared/styles/modifiers.css @@ -0,0 +1,13 @@ +/* Modifiers: color */ +.flowforge-u-color-primary { + color: var(--flowforge-color-primary); +} +.flowforge-u-color-secondary { + color: var(--flowforge-color-secondary); +} +.flowforge-u-color-danger { + color: var(--flowforge-color-danger); +} +.flowforge-u-color-muted { + color: var(--flowforge-color-text-muted); +} \ No newline at end of file diff --git a/apps/extension/src/shared/components/Main/tokens.css b/apps/extension/src/shared/styles/tokens.css similarity index 85% rename from apps/extension/src/shared/components/Main/tokens.css rename to apps/extension/src/shared/styles/tokens.css index 4741321..05a8d69 100644 --- a/apps/extension/src/shared/components/Main/tokens.css +++ b/apps/extension/src/shared/styles/tokens.css @@ -48,7 +48,8 @@ .flowforge-main { /** Typography **/ - --flowforge-font-family: -apple-system, BlinkMacSystemFont, 'Segoe UI', Roboto, sans-serif; + --flowforge-font-family: system-ui, -apple-system, BlinkMacSystemFont, 'Segoe UI', Roboto, sans-serif; + --flowforge-font-family-monospace: ui-monospace, SFMono-Regular, Menlo, Monaco, Consolas, "Liberation Mono", monospace; --flowforge-text-xs: 400 11px / 1.6 var(--flowforge-font-family); --flowforge-text-sm: 400 12px / 1.5 var(--flowforge-font-family); @@ -59,6 +60,9 @@ --flowforge-text-h3: 600 14px / 1.4 var(--flowforge-font-family); --flowforge-text-h2: 600 18px / 1.2 var(--flowforge-font-family); + --flowforge-text-monospace-xs: 400 11px / 1.65 var(--flowforge-font-family-monospace); + --flowforge-text-monospace-sm: 400 12px / 1.55 var(--flowforge-font-family-monospace); + /** Sizes **/ --flowforge-pad-xs: 6px; --flowforge-pad-sm: 8px; From a59658266fc4714554edb818af3e780493062a53 Mon Sep 17 00:00:00 2001 From: cerberus-ab Date: Sat, 15 Aug 2026 21:27:16 +0200 Subject: [PATCH 13/20] Semantic desc for Inspector content and interactive --- .../page/components/Inspector/Inspector.tsx | 41 ++++++++- .../components/JsonViewer/JsonViewer.css | 16 +++- .../components/JsonViewer/JsonViewer.tsx | 90 ++++++++++++++++--- docs/BACKLOG.md | 1 + .../src/collector/importance/content.ts | 2 +- .../src/collector/importance/interactive.ts | 4 +- 6 files changed, 133 insertions(+), 21 deletions(-) diff --git a/apps/extension/src/page/components/Inspector/Inspector.tsx b/apps/extension/src/page/components/Inspector/Inspector.tsx index 19ab0ad..b85ae12 100644 --- a/apps/extension/src/page/components/Inspector/Inspector.tsx +++ b/apps/extension/src/page/components/Inspector/Inspector.tsx @@ -6,6 +6,7 @@ import { Button } from '@/shared/components/Button'; import { JsonViewer } from '@/shared/components/JsonViewer'; import { Tabs } from '@/shared/components/Tabs'; import { PageMetadata } from '@/page/components/Inspector/components/Metadata'; +import { formatContentElement, formatInteractiveElement } from '@flowforge/page-trail'; const inspectorTabs = [ { id: 'basics', label: 'Basics' }, @@ -15,7 +16,21 @@ const inspectorTabs = [ type InspectorTabId = (typeof inspectorTabs)[number]['id']; -export function Inspector({ pageTrail, close } : InspectorViewModel) { +function getSemanticDescription(value: unknown): string | undefined { + if ( + typeof value === 'object' && + value !== null && + 'importanceScore' in value && + 'semanticDescription' in value && + typeof value.importanceScore === 'number' && + typeof value.semanticDescription === 'string' + ) { + return `${value.importanceScore.toFixed(2)} · ${value.semanticDescription}`; + } + return undefined; +} + +export function Inspector({ pageTrail, close }: InspectorViewModel) { const [activeTab, setActiveTab] = useState('basics'); const activeTabLabel = inspectorTabs.find((tab) => tab.id === activeTab)?.label ?? activeTab; @@ -81,7 +96,29 @@ export function Inspector({ pageTrail, close } : InspectorViewModel) { role="tabpanel" aria-label={`${activeTabLabel} tab panel`} > - + {activeTab === 'basics' && } + {activeTab === 'content' && ( + ({ + ...contentElement, + semanticDescription: formatContentElement(contentElement), + }))} + /> + )} + {activeTab === 'interactive' && ( + ({ + ...interactiveElement, + semanticDescription: formatInteractiveElement(interactiveElement), + }))} + /> + )}
diff --git a/apps/extension/src/shared/components/JsonViewer/JsonViewer.css b/apps/extension/src/shared/components/JsonViewer/JsonViewer.css index 1081e09..2644e2d 100644 --- a/apps/extension/src/shared/components/JsonViewer/JsonViewer.css +++ b/apps/extension/src/shared/components/JsonViewer/JsonViewer.css @@ -44,18 +44,28 @@ color: var(--flowforge-color-text); overflow-wrap: anywhere; } +.flowforge-json-viewer__summary > .flowforge-json-viewer__key, +.flowforge-json-viewer__summary > .flowforge-json-viewer__bracket, +.flowforge-json-viewer__summary > .flowforge-json-viewer__shape { + flex: 0 0 auto; +} .flowforge-json-viewer__bracket { color: var(--flowforge-color-text-muted); } -.flowforge-json-viewer__preview { +.flowforge-json-viewer__shape { display: none; color: var(--flowforge-color-text-muted); } -.flowforge-json-viewer__node:not([open]) > .flowforge-json-viewer__summary .flowforge-json-viewer__preview { +.flowforge-json-viewer__node:not([open]) > .flowforge-json-viewer__summary .flowforge-json-viewer__shape { display: inline; } -.flowforge-json-viewer__meta { +.flowforge-json-viewer__summary-text { color: var(--flowforge-color-text-muted); + flex: 1 1 auto; + min-width: 0; + overflow: hidden; + text-overflow: ellipsis; + white-space: nowrap; } .flowforge-json-viewer__primitive { overflow-wrap: anywhere; diff --git a/apps/extension/src/shared/components/JsonViewer/JsonViewer.tsx b/apps/extension/src/shared/components/JsonViewer/JsonViewer.tsx index 4e43fc4..535f41c 100644 --- a/apps/extension/src/shared/components/JsonViewer/JsonViewer.tsx +++ b/apps/extension/src/shared/components/JsonViewer/JsonViewer.tsx @@ -2,11 +2,22 @@ type JsonObject = Record; interface JsonViewerProps { value: unknown; + getNodeSummary?: (value: unknown) => string | undefined; + rootArrayExpandedItems?: number; + sortKeys?: boolean; +} + +interface JsonPrimitiveProps { + value: unknown; } interface JsonViewerNodeProps { name?: string; value: unknown; + getNodeSummary?: (value: unknown) => string | undefined; + rootArrayExpandedItems?: number; + sortKeys?: boolean; + initialOpen?: boolean; depth?: number; } @@ -28,24 +39,43 @@ function getValueType(value: unknown) { return typeof value; } -function getCollectionMeta(value: unknown) { +function getCollectionSummary(value: unknown, getNodeSummary?: (value: unknown) => string | undefined) { if (Array.isArray(value)) { + const summary = getNodeSummary?.(value); + + if (summary) { + return summary; + } return `${value.length} ${value.length === 1 ? 'item' : 'items'}`; } if (isJsonObject(value)) { const count = Object.keys(value).length; + const summary = getNodeSummary?.(value); + + if (summary) { + return summary; + } return `${count} ${count === 1 ? 'key' : 'keys'}`; } return ''; } -function getCollapsedPreview(value: unknown) { +function getShapePreview(value: unknown) { if (Array.isArray(value)) return value.length === 0 ? '[]' : '[…]'; if (isJsonObject(value)) return Object.keys(value).length === 0 ? '{}' : '{…}'; return formatPrimitive(value); } -function JsonPrimitive({ value }: JsonViewerProps) { +function getObjectEntries(value: JsonObject, sortKeys?: boolean) { + const entries = Object.entries(value); + + if (!sortKeys) { + return entries; + } + return entries.toSorted(([firstKey], [secondKey]) => firstKey.localeCompare(secondKey)); +} + +function JsonPrimitive({ value }: JsonPrimitiveProps) { const type = getValueType(value); return ( @@ -55,7 +85,15 @@ function JsonPrimitive({ value }: JsonViewerProps) { ); } -function JsonViewerNode({ name, value, depth = 0 }: JsonViewerNodeProps) { +function JsonViewerNode({ + name, + value, + getNodeSummary, + rootArrayExpandedItems, + sortKeys, + initialOpen, + depth = 0, +}: JsonViewerNodeProps) { const isArray = Array.isArray(value); const isObject = isJsonObject(value); const isCollection = isArray || isObject; @@ -70,25 +108,46 @@ function JsonViewerNode({ name, value, depth = 0 }: JsonViewerNodeProps) { ); } - const entries = isArray ? value.map((item, index) => [String(index), item] as const) : Object.entries(value); + const entries = isArray + ? value.map((item, index) => [String(index), item] as const) + : getObjectEntries(value, sortKeys); const collectionType = isArray ? 'array' : 'object'; const isEmpty = entries.length === 0; + const isOpen = initialOpen ?? depth < 2; return ( -
+
{hasName ? {JSON.stringify(name)}: : null} {isArray ? '[' : '{'} - {getCollapsedPreview(value)} - {getCollectionMeta(value)} + {getShapePreview(value)} + + {getCollectionSummary(value, getNodeSummary)} + {isEmpty ? null : (
- {entries.map(([entryName, entryValue]) => ( - - ))} + {entries.map(([entryName, entryValue], entryIndex) => { + const childInitialOpen = + depth === 0 && isArray && rootArrayExpandedItems !== undefined + ? entryIndex < rootArrayExpandedItems + : undefined; + + return ( + + ); + })}
)}
@@ -100,10 +159,15 @@ function JsonViewerNode({ name, value, depth = 0 }: JsonViewerNodeProps) { ); } -export function JsonViewer({ value }: JsonViewerProps) { +export function JsonViewer({ value, getNodeSummary, rootArrayExpandedItems, sortKeys }: JsonViewerProps) { return (
- +
); } diff --git a/docs/BACKLOG.md b/docs/BACKLOG.md index 2aef405..28a8598 100644 --- a/docs/BACKLOG.md +++ b/docs/BACKLOG.md @@ -58,6 +58,7 @@ ### Page Inspector - Loading state +- Lazy rendering in JsonViewer ## DX diff --git a/packages/page-trail/src/collector/importance/content.ts b/packages/page-trail/src/collector/importance/content.ts index c151412..9a723cd 100644 --- a/packages/page-trail/src/collector/importance/content.ts +++ b/packages/page-trail/src/collector/importance/content.ts @@ -1,4 +1,4 @@ -import type { ContentElement, ContentElementType, ElementContext } from '../../types/index.ts'; +import type { ContentElementType, ElementContext } from '../../types/index.ts'; import { getMaxImportanceScore, getMinImportanceScore, normalizeImportanceScore, readContextPath } from './utils.ts'; /** diff --git a/packages/page-trail/src/collector/importance/interactive.ts b/packages/page-trail/src/collector/importance/interactive.ts index acfa194..2abb83e 100644 --- a/packages/page-trail/src/collector/importance/interactive.ts +++ b/packages/page-trail/src/collector/importance/interactive.ts @@ -2,9 +2,9 @@ import type { BoundingBox, ElementContext, ElementLabel, - InteractiveElement, InteractiveElementRole, - InteractiveElementState, InteractiveElementType, + InteractiveElementState, + InteractiveElementType, } from '../../types/index.ts'; import { getMaxImportanceScore, getMinImportanceScore, normalizeImportanceScore, readContextPath } from './utils.ts'; From b44eb24ffa2577cd9dfc68f43bdae506fb760481 Mon Sep 17 00:00:00 2001 From: cerberus-ab Date: Sat, 15 Aug 2026 23:36:37 +0200 Subject: [PATCH 14/20] Semantic View for Page-Trail --- .agents/rules/documentation.md | 20 +-- README.md | 6 +- apps/backend/README.md | 2 +- .../src/agent/tools/ToolGetPageSummary.ts | 24 +-- apps/backend/src/server/Server.ts | 4 +- apps/extension/README.md | 10 +- .../src/chrome/action/popup/index.html | 2 +- .../page/components/Inspector/Inspector.tsx | 7 +- .../MarkdownViewer/MarkdownViewer.css | 13 ++ .../MarkdownViewer/MarkdownViewer.tsx | 11 ++ .../shared/components/MarkdownViewer/index.ts | 1 + apps/extension/src/shared/index.css | 1 + docs/ARCHITECTURE.md | 22 +-- docs/BACKLOG.md | 4 +- docs/DOM-TO-RAG-PIPELINE.md | 18 +-- .../src/collector/PageTrailCollector.test.ts | 16 ++ .../src/collector/PageTrailCollector.ts | 8 +- packages/page-trail/src/index.ts | 1 + .../page-trail/src/semantic/format.test.ts | 89 +++++++++++ packages/page-trail/src/semantic/format.ts | 86 ++++++++++- .../src/semantic/markdown.example.md | 27 ++++ .../page-trail/src/semantic/markdown.test.ts | 140 ++++++++++++++++++ packages/page-trail/src/semantic/markdown.ts | 65 ++++++++ 23 files changed, 502 insertions(+), 75 deletions(-) create mode 100644 apps/extension/src/shared/components/MarkdownViewer/MarkdownViewer.css create mode 100644 apps/extension/src/shared/components/MarkdownViewer/MarkdownViewer.tsx create mode 100644 apps/extension/src/shared/components/MarkdownViewer/index.ts create mode 100644 packages/page-trail/src/semantic/markdown.example.md create mode 100644 packages/page-trail/src/semantic/markdown.test.ts create mode 100644 packages/page-trail/src/semantic/markdown.ts diff --git a/.agents/rules/documentation.md b/.agents/rules/documentation.md index f8f3b28..0b004af 100644 --- a/.agents/rules/documentation.md +++ b/.agents/rules/documentation.md @@ -55,9 +55,9 @@ Target length: 100–120 lines. - "Forging your experience..." - Demo - Overview -- Use Cases +- Use cases - Disclaimer -- Quick Start +- Quick start - Usage - Security - Roadmap @@ -70,9 +70,9 @@ Target length: 80–100 lines. - Overview - Components -- Interaction Flow +- Interaction flow - Pipeline (high-level) -- Key Decisions +- Key decisions - Contracts - Constraints @@ -82,11 +82,11 @@ Target length: 80–100 lines. - Overview - Stages: - - Extraction to Structure Representation - - Transforming to Semantic Representation - - Indexing / Retrieval + - Extraction to structure representation + - Transforming to semantic representation + - Indexing / retrieval - Reranking - - Resolution to Tool Results + - Resolution to tool results ### `packages/page-trail/README.md` @@ -110,7 +110,7 @@ Target length: 50–60 lines. - Run - Configuration - API (short) -- Key Parts +- Key parts - Notes ### `apps/extension/README.md` @@ -121,5 +121,5 @@ Target length: 50–60 lines. - Responsibilities - Run - Load in Chrome -- Key Parts +- Key parts - Notes diff --git a/README.md b/README.md index 97b1197..f917e43 100644 --- a/README.md +++ b/README.md @@ -27,7 +27,7 @@ It works on any website out of the box and becomes product-aware when integrated **Under the hood:** browser extension + AI agent (ReAct) + RAG pipeline. -## Use Cases +## Use cases - Ask a question and get a clear explanation of what the page is about. - Locate links, buttons, or contacts without manual search. - Follow step-by-step actions directly in the interface. @@ -46,7 +46,7 @@ It is not production-ready, and the core engine is still evolving. Expect limita [Changelog](./CHANGELOG.md) – see the list of changes. -## Quick Start +## Quick start ### Prerequisites @@ -103,7 +103,7 @@ Focus areas: ## Documentation - [Architecture](docs/ARCHITECTURE.md) — system design and component interaction -- [DOM to RAG Pipeline](docs/DOM-TO-RAG-PIPELINE.md) – from DOM to actionable intelligence +- [DOM to RAG pipeline](docs/DOM-TO-RAG-PIPELINE.md) – from DOM to actionable intelligence - [PageTrail](packages/page-trail/README.md) — DOM representation for UI understanding - [Backend](apps/backend/README.md) — AI agent backend and RAG pipeline - [Extension](apps/extension/README.md) — browser extension and page extraction diff --git a/apps/backend/README.md b/apps/backend/README.md index 162f586..997f267 100644 --- a/apps/backend/README.md +++ b/apps/backend/README.md @@ -47,7 +47,7 @@ See [.env.example](.env.example) for all options. - `GET /analytics` — usage data and query tracking - `GET /health` — service status -## Key Parts +## Key parts - `agent/` — ReAct agent implementation and tool definitions - `indexer/` — RAG pipeline, embeddings, and vector search diff --git a/apps/backend/src/agent/tools/ToolGetPageSummary.ts b/apps/backend/src/agent/tools/ToolGetPageSummary.ts index 8f7f36e..043ee62 100644 --- a/apps/backend/src/agent/tools/ToolGetPageSummary.ts +++ b/apps/backend/src/agent/tools/ToolGetPageSummary.ts @@ -5,11 +5,7 @@ import { PageContextProvider, } from '@/indexer'; import type { ToolGetPageSummaryResultData } from '@/types'; -import { - formatConcatElements, - formatContentElementShort, - formatInteractiveElementShort, -} from '@flowforge/page-trail'; +import { formatSampleHeadings, formatSampleInteractions } from '@flowforge/page-trail'; export class ToolGetPageSummary extends AbstractCallableTool { private readonly elementsHeadingsLimit: number; @@ -22,27 +18,13 @@ export class ToolGetPageSummary extends AbstractCallableTool { } override async callFn(ctx: PageContextProvider): Promise { - // Get top headings - const sampleHeadings = ctx.pageTrail.content - .filter((el) => el.type === 'heading') - .sort((a, b) => b.importanceScore - a.importanceScore) - .slice(0, this.elementsHeadingsLimit) - .map((el) => formatContentElementShort(el)); - - // Get top interactions - const sampleInteractions = ctx.pageTrail.interactive - .filter((el) => el.labels.length > 0 || el.text) - .sort((a, b) => b.importanceScore - a.importanceScore) - .slice(0, this.elementsInteractionsLimit) - .map((el) => formatInteractiveElementShort(el)); - return { title: ctx.pageTrail.basics.title, url: ctx.pageTrail.basics.url, description: ctx.pageTrail.basics.description, language: ctx.pageTrail.basics.language, - sampleHeadings: formatConcatElements(sampleHeadings), - sampleInteractions: formatConcatElements(sampleInteractions), + sampleHeadings: formatSampleHeadings(ctx.pageTrail.content, this.elementsHeadingsLimit), + sampleInteractions: formatSampleInteractions(ctx.pageTrail.interactive, this.elementsInteractionsLimit), }; } diff --git a/apps/backend/src/server/Server.ts b/apps/backend/src/server/Server.ts index 2aa5368..27c676e 100644 --- a/apps/backend/src/server/Server.ts +++ b/apps/backend/src/server/Server.ts @@ -103,10 +103,10 @@ export class Server { console.log( boxen( [ - `FlowForge – Backend ${this.config.pkg.version}`, + `FlowForge – backend ${this.config.pkg.version}`, ' ─── ', `Server: running on port ${this.config.port}`, - `LLM Provider: ${LlmProviderInfo.provider}`, + `LLM provider: ${LlmProviderInfo.provider}`, `- Model: ${LlmProviderInfo.model}`, `- Embedding: ${LlmProviderInfo.embedding}`, LlmProviderInfo.details ? `- Details: ${LlmProviderInfo.details}` : '', diff --git a/apps/extension/README.md b/apps/extension/README.md index 9108924..4bbe707 100644 --- a/apps/extension/README.md +++ b/apps/extension/README.md @@ -25,12 +25,12 @@ Development mode with auto-rebuild: npm run dev ``` -## Build Options +## Build options The extension has two build modes: -- **Chrome Extension** (`build:chrome`) — Full browser extension for Chrome -- **Embed Integration** (`build:embed`) — Standalone runtime for embedding on any website +- **Chrome extension** (`build:chrome`) — full browser extension for Chrome +- **Embed integration** (`build:embed`) — standalone runtime for embedding on any website Both builds are created by default with `npm run build`, or can be built individually. @@ -41,7 +41,7 @@ Both builds are created by default with `npm run build`, or can be built individ 3. Click **Load unpacked** 4. Select `apps/extension/dist/chrome` -## Sandbox (Testing Environment) +## Sandbox (testing environment) Test the embed integration locally: @@ -54,7 +54,7 @@ Opens test environment at `http://localhost:3007` with: - Demo mode with predefined Q&A (no backend required) - Full backend integration mode (requires backend on http://localhost:3477) -## Key Parts +## Key parts - `popup/` — user interface and interaction logic - `page/` — DOM extraction and element highlighting diff --git a/apps/extension/src/chrome/action/popup/index.html b/apps/extension/src/chrome/action/popup/index.html index f7d314e..aeec6ee 100644 --- a/apps/extension/src/chrome/action/popup/index.html +++ b/apps/extension/src/chrome/action/popup/index.html @@ -3,7 +3,7 @@ - FlowForge Extension + FlowForge extension - - -
-
-

Explore Embed

-

Manage the Runtime on the page

-
    -
  • Click Start to launch the extension with a real backend,
  • -
  • Click Demo to run a simulated version with predefined questions and responses,
  • -
  • Click Destroy to completely remove it from the page and clean up all resources.
  • -
-
- - - + section pre { + background: var(--sandbox-color-text); + color: var(--sandbox-color-text-on-dark); + padding: 16px; + border-radius: 8px; + overflow: auto; + } + section pre code { + background: transparent; + color: inherit; + padding: 0; + border-radius: 0; + } + section :not(pre) > code { + background: var(--sandbox-color-hover); + padding: 2px 6px; + border-radius: 4px; + } + div[role='toolbar'] { + display: flex; + gap: 8px; + } + button { + padding: 4px 12px; + cursor: pointer; + } + button:disabled { + opacity: 0.5; + cursor: not-allowed; + } + button:not(:disabled):hover { + background-color: var(--sandbox-color-hover); + } + + + + -

See Embed extension docs for more details.

-
-
%SECTION_README%
-
-

If anything, you may email flowforge@gmail.com

-
-
- - - + })(); + + + diff --git a/apps/extension/src/adapters/chrome/ChromeTransportService.ts b/apps/extension/src/adapters/chrome/ChromeTransportService.ts index 55b72f5..f406d9b 100644 --- a/apps/extension/src/adapters/chrome/ChromeTransportService.ts +++ b/apps/extension/src/adapters/chrome/ChromeTransportService.ts @@ -54,12 +54,14 @@ export class ChromeTransportService implements TransportService { if (response === undefined) { return false; } - Promise.resolve(response).then(sendResponse).catch((reason: unknown) => { - sendResponse({ - success: false, - error: reason instanceof Error ? reason.message : String(reason), + Promise.resolve(response) + .then(sendResponse) + .catch((reason: unknown) => { + sendResponse({ + success: false, + error: reason instanceof Error ? reason.message : String(reason), + }); }); - }); return true; }; diff --git a/apps/extension/src/chrome/action/popup/index.html b/apps/extension/src/chrome/action/popup/index.html index aeec6ee..4af8de4 100644 --- a/apps/extension/src/chrome/action/popup/index.html +++ b/apps/extension/src/chrome/action/popup/index.html @@ -1,19 +1,19 @@ - - - - FlowForge extension - - - - - - + + + + FlowForge extension + + + + + + diff --git a/apps/extension/src/core/services/RootInjector.ts b/apps/extension/src/core/services/RootInjector.ts index 0a33051..31c8635 100644 --- a/apps/extension/src/core/services/RootInjector.ts +++ b/apps/extension/src/core/services/RootInjector.ts @@ -10,11 +10,12 @@ export interface InjectedRoot { } function createRootStyle(options?: InjectOptions) { - return 'box-sizing: border-box; margin: 0; padding: 0; ' - + (options?.overlay + return ( + 'box-sizing: border-box; margin: 0; padding: 0; ' + + (options?.overlay ? 'position: fixed; inset: 0; isolation: isolate; pointer-events: none; z-index: 2147483647; ' - : 'position: relative; z-index: 0; ' - ); + : 'position: relative; z-index: 0; ') + ); } export interface RootInjector { @@ -47,7 +48,7 @@ export class DocumentRootInjector implements RootInjector { mountPoint.style.cssText = createRootStyle(options); doc.body.appendChild(mountPoint); } - return { mountPoint, destroy: () => mountPoint.remove()}; + return { mountPoint, destroy: () => mountPoint.remove() }; } } @@ -59,9 +60,7 @@ export interface InjectedShadowRoot extends InjectedRoot { } function createShadowMountStyle(options?: InjectOptions) { - return options?.overlay - ? 'position: relative; width: 100%; height: 100%; pointer-events: none; ' - : ''; + return options?.overlay ? 'position: relative; width: 100%; height: 100%; pointer-events: none; ' : ''; } export class ShadowRootInjector implements RootInjector { diff --git a/apps/extension/src/core/types/messages.ts b/apps/extension/src/core/types/messages.ts index 2d07ed6..70772fc 100644 --- a/apps/extension/src/core/types/messages.ts +++ b/apps/extension/src/core/types/messages.ts @@ -1,38 +1,36 @@ import type { AgentResultElement, AgentResultMode, PageTrail, QueryResponse } from '@flowforge/contract'; import type { ExtensionSettings } from '@/core/types/settings'; -type MessageTypeToBackground = - 'GET_SETTINGS'; +type MessageTypeToBackground = 'GET_SETTINGS'; type MessageTypePopupToBackground = - 'POPUP_INITIALISE' | - 'ASK_QUESTION' | - 'GET_PREV_QUESTIONS' | - 'NAVIGATE_TO_ELEMENT' | - 'UPDATE_SETTINGS' | - 'OPEN_PAGE_INSPECTOR'; + | 'POPUP_INITIALISE' + | 'ASK_QUESTION' + | 'GET_PREV_QUESTIONS' + | 'NAVIGATE_TO_ELEMENT' + | 'UPDATE_SETTINGS' + | 'OPEN_PAGE_INSPECTOR'; type MessageTypeBackgroundToPage = - 'COLLECT_PAGE_TRAIL' | - 'START_ONBOARDING' | - 'HIGHLIGHT_ELEMENT' | - 'CLEAR_PAGE' | - 'APPLY_SETTINGS' | - 'OPEN_INSPECTOR'; + | 'COLLECT_PAGE_TRAIL' + | 'START_ONBOARDING' + | 'HIGHLIGHT_ELEMENT' + | 'CLEAR_PAGE' + | 'APPLY_SETTINGS' + | 'OPEN_INSPECTOR'; type MessageType = MessageTypeToBackground | MessageTypePopupToBackground | MessageTypeBackgroundToPage; export type Message = T extends undefined ? { type: MessageType } : { type: MessageType; data: T }; export type MessageResponse = - | (T extends undefined ? { success: true } : { success: true; data: T }) - | { success: false; error: string }; + (T extends undefined ? { success: true } : { success: true; data: T }) | { success: false; error: string }; // Popup, Page -> Background export type GetSettingsMessage = Message & { type: 'GET_SETTINGS'; -} +}; export type GetSettingsMessageResponseData = ExtensionSettings; @@ -47,7 +45,7 @@ export type PopupInitializeMessage = Message & { export type UpdateSettingsMessageData = { patch: Partial; -} +}; export type UpdateSettingsMessage = Message & { type: 'UPDATE_SETTINGS'; diff --git a/apps/extension/src/embed/Runtime.tsx b/apps/extension/src/embed/Runtime.tsx index 269d896..9e95c09 100644 --- a/apps/extension/src/embed/Runtime.tsx +++ b/apps/extension/src/embed/Runtime.tsx @@ -68,7 +68,7 @@ export class Runtime implements RuntimeApi { const apiClient = new HttpApiClient(config.serverUrl); runtime.startBackground(apiClient); await runtime.mountShell({ - triggerSize: options.triggerSize + triggerSize: options.triggerSize, }); console.log('[FlowForge] Runtime successfully started'); @@ -100,7 +100,7 @@ export class Runtime implements RuntimeApi { topic: options.topic, stubQuestions: options.stubQA?.map((s) => s.question) ?? [], }, - } + }, }); console.log('[FlowForge] Demo runtime successfully started'); @@ -142,7 +142,12 @@ export class Runtime implements RuntimeApi { const shellRoot = rootInjector.inject(document, embedConstants.SHELL_ROOT_ID, { overlay: true }); rootInjector.injectStyles(shellRoot, shellStyles); render( - , + , shellRoot.mountPoint, ); this.shellRoot = shellRoot; diff --git a/apps/extension/src/embed/components/Trigger/Trigger.css b/apps/extension/src/embed/components/Trigger/Trigger.css index df89d2f..9740686 100644 --- a/apps/extension/src/embed/components/Trigger/Trigger.css +++ b/apps/extension/src/embed/components/Trigger/Trigger.css @@ -1,42 +1,56 @@ /* Trigger */ .flowforge-trigger { - position: fixed; - top: var(--flowforge-app-offset); - right: 0; + position: fixed; + top: var(--flowforge-app-offset); + right: 0; - display: flex; - padding: var(--flowforge-pad-sm) calc(var(--flowforge-pad-sm) * 2) var(--flowforge-pad-sm) var(--flowforge-pad-sm); - border-radius: var(--flowforge-pad-sm) 0 0 var(--flowforge-pad-sm); - border: none; - cursor: pointer; - color: var(--flowforge-color-text-on-dark); - font: var(--flowforge-text-h3); - pointer-events: auto; - box-shadow: 0 4px 12px rgba(var(--flowforge-rgb-shadow), 0.4); - background: - url('../../../shared/img/header-bg-sm.webp') right bottom no-repeat, - linear-gradient(135deg, var(--flowforge-color-primary) 0%, var(--flowforge-color-primary-hover) 100%); - background-position: center center, 0 0; - animation: flowforge-button-stars-parallax 60s ease-in-out infinite alternate; - transition: var(--flowforge-transition-default); + display: flex; + padding: var(--flowforge-pad-sm) calc(var(--flowforge-pad-sm) * 2) var(--flowforge-pad-sm) + var(--flowforge-pad-sm); + border-radius: var(--flowforge-pad-sm) 0 0 var(--flowforge-pad-sm); + border: none; + cursor: pointer; + color: var(--flowforge-color-text-on-dark); + font: var(--flowforge-text-h3); + pointer-events: auto; + box-shadow: 0 4px 12px rgba(var(--flowforge-rgb-shadow), 0.4); + background: + url('../../../shared/img/header-bg-sm.webp') right bottom no-repeat, + linear-gradient( + 135deg, + var(--flowforge-color-primary) 0%, + var(--flowforge-color-primary-hover) 100% + ); + background-position: + center center, + 0 0; + animation: flowforge-button-stars-parallax 60s ease-in-out infinite alternate; + transition: var(--flowforge-transition-default); } @keyframes flowforge-button-stars-parallax { - 0% { - background-position: calc(50% - 95px) calc(50% - 15px), 0 0; - } - 50% { - background-position: 50% calc(50% + 15px), 0 0; - } - 100% { - background-position: calc(50% + 95px) calc(50% - 15px), 0 0; - } + 0% { + background-position: + calc(50% - 95px) calc(50% - 15px), + 0 0; + } + 50% { + background-position: + 50% calc(50% + 15px), + 0 0; + } + 100% { + background-position: + calc(50% + 95px) calc(50% - 15px), + 0 0; + } } .flowforge-trigger:hover { - transform: translateY(-2px); - animation-play-state: paused; + transform: translateY(-2px); + animation-play-state: paused; } .flowforge-trigger--lg { - font: var(--flowforge-text-h2); - padding: var(--flowforge-pad-md) calc(var(--flowforge-pad-md) * 2) var(--flowforge-pad-md) var(--flowforge-pad-md); - border-radius: var(--flowforge-pad-md) 0 0 var(--flowforge-pad-md); + font: var(--flowforge-text-h2); + padding: var(--flowforge-pad-md) calc(var(--flowforge-pad-md) * 2) var(--flowforge-pad-md) + var(--flowforge-pad-md); + border-radius: var(--flowforge-pad-md) 0 0 var(--flowforge-pad-md); } diff --git a/apps/extension/src/embed/components/Trigger/Trigger.tsx b/apps/extension/src/embed/components/Trigger/Trigger.tsx index 53d59a3..2633107 100644 --- a/apps/extension/src/embed/components/Trigger/Trigger.tsx +++ b/apps/extension/src/embed/components/Trigger/Trigger.tsx @@ -10,7 +10,7 @@ interface TriggerProps { ref?: Ref; } -export const Trigger = forwardRef(({ size='medium', isOpen, onToggle }, ref) => { +export const Trigger = forwardRef(({ size = 'medium', isOpen, onToggle }, ref) => { const classes = ['flowforge-trigger', size === 'large' && 'flowforge-trigger--lg'].filter(Boolean).join(' '); return ( diff --git a/apps/extension/src/embed/shell/shell.css b/apps/extension/src/embed/shell/shell.css index aa6d76d..055cc56 100644 --- a/apps/extension/src/embed/shell/shell.css +++ b/apps/extension/src/embed/shell/shell.css @@ -5,21 +5,21 @@ @import '../../popup/popup.css'; .flowforge-shell .flowforge-page { - z-index: 1; + z-index: 1; } .flowforge-shell .flowforge-trigger { - z-index: 2; + z-index: 2; } .flowforge-shell .flowforge-popup-container { - z-index: 3; + z-index: 3; } /* Popup container */ .flowforge-popup-container { - position: fixed; - top: 0; - right: 0; - border-radius: 0; - border: none; - box-shadow: 0 4px 12px rgba(var(--flowforge-rgb-shadow), 0.4); + position: fixed; + top: 0; + right: 0; + border-radius: 0; + border: none; + box-shadow: 0 4px 12px rgba(var(--flowforge-rgb-shadow), 0.4); } diff --git a/apps/extension/src/page/components/Highlight/Highlight.css b/apps/extension/src/page/components/Highlight/Highlight.css index e4ad33e..180138d 100644 --- a/apps/extension/src/page/components/Highlight/Highlight.css +++ b/apps/extension/src/page/components/Highlight/Highlight.css @@ -2,98 +2,100 @@ .flowforge-highlights-container { } .flowforge-highlight { - position: absolute; - z-index: 1; - pointer-events: none; - box-sizing: border-box; - opacity: 0; - transform: translateY(6px) scale(0.96); - transition: opacity 180ms ease, transform 240ms cubic-bezier(0.22, 1, 0.36, 1); + position: absolute; + z-index: 1; + pointer-events: none; + box-sizing: border-box; + opacity: 0; + transform: translateY(6px) scale(0.96); + transition: + opacity 180ms ease, + transform 240ms cubic-bezier(0.22, 1, 0.36, 1); } .flowforge-highlight--visible { - opacity: 1; - transform: translateY(0) scale(1); + opacity: 1; + transform: translateY(0) scale(1); } .flowforge-highlight--hiding { - opacity: 0; - transform: translateY(6px) scale(0.96); + opacity: 0; + transform: translateY(6px) scale(0.96); } .flowforge-highlight__ring, .flowforge-highlight__glow { - position: absolute; - inset: 0; - border-radius: var(--flowforge-pad-sm); + position: absolute; + inset: 0; + border-radius: var(--flowforge-pad-sm); } .flowforge-highlight__ring { - border: 2px solid var(--flowforge-color-primary); - background: rgba(var(--flowforge-rgb-primary), 0.1); - box-shadow: - 0 0 0 4px rgba(var(--flowforge-rgb-primary), 0.16), - 0 6px 18px rgba(var(--flowforge-rgb-shadow), 0.12); - animation: flowforge-highlight-pulse 1.6s ease-in-out infinite; + border: 2px solid var(--flowforge-color-primary); + background: rgba(var(--flowforge-rgb-primary), 0.1); + box-shadow: + 0 0 0 4px rgba(var(--flowforge-rgb-primary), 0.16), + 0 6px 18px rgba(var(--flowforge-rgb-shadow), 0.12); + animation: flowforge-highlight-pulse 1.6s ease-in-out infinite; } .flowforge-highlight__glow { - inset: -2px; - border-radius: var(--flowforge-pad-md); - background: var(--flowforge-color-primary); - opacity: 0.06; - filter: blur(var(--flowforge-pad-sm)); + inset: -2px; + border-radius: var(--flowforge-pad-md); + background: var(--flowforge-color-primary); + opacity: 0.06; + filter: blur(var(--flowforge-pad-sm)); } .flowforge-highlight__label { - position: absolute; - left: 0; - max-width: 360px; - min-width: 160px; - min-height: 28px; - padding: var(--flowforge-pad-sm) 28px var(--flowforge-pad-sm) var(--flowforge-pad-lg); - border: 1px solid var(--flowforge-color-border); - border-left: 4px solid var(--flowforge-color-primary); - border-radius: var(--flowforge-pad-sm); - background: var(--flowforge-color-surface); - color: var(--flowforge-color-text); - font: var(--flowforge-text-sm); - white-space: normal; - overflow-wrap: anywhere; - word-break: break-word; - box-shadow: 0 4px 12px rgba(var(--flowforge-rgb-shadow), 0.4); - display: flex; - flex-direction: column; - text-align: left; - gap: var(--flowforge-pad-xs); - pointer-events: auto; + position: absolute; + left: 0; + max-width: 360px; + min-width: 160px; + min-height: 28px; + padding: var(--flowforge-pad-sm) 28px var(--flowforge-pad-sm) var(--flowforge-pad-lg); + border: 1px solid var(--flowforge-color-border); + border-left: 4px solid var(--flowforge-color-primary); + border-radius: var(--flowforge-pad-sm); + background: var(--flowforge-color-surface); + color: var(--flowforge-color-text); + font: var(--flowforge-text-sm); + white-space: normal; + overflow-wrap: anywhere; + word-break: break-word; + box-shadow: 0 4px 12px rgba(var(--flowforge-rgb-shadow), 0.4); + display: flex; + flex-direction: column; + text-align: left; + gap: var(--flowforge-pad-xs); + pointer-events: auto; } .flowforge-highlight__label-text, .flowforge-highlight__label-action { - text-transform: none; - letter-spacing: normal; - color: var(--flowforge-color-text); - font: var(--flowforge-text-sm); + text-transform: none; + letter-spacing: normal; + color: var(--flowforge-color-text); + font: var(--flowforge-text-sm); } .flowforge-highlight__label-text > span, .flowforge-highlight__label-action > span { - text-transform: inherit; - letter-spacing: inherit; - color: inherit; - font: inherit; - font-weight: 600; + text-transform: inherit; + letter-spacing: inherit; + color: inherit; + font: inherit; + font-weight: 600; } .flowforge-highlight__label--top { - top: -36px; + top: -36px; } .flowforge-highlight__label--bottom { - top: calc(100% + 8px); + top: calc(100% + 8px); } @keyframes flowforge-highlight-pulse { - 0%, - 100% { - box-shadow: - 0 0 0 4px rgba(var(--flowforge-rgb-primary), 0.14), - 0 6px 18px rgba(var(--flowforge-rgb-shadow), 0.12); - } - 50% { - box-shadow: - 0 0 0 6px rgba(var(--flowforge-rgb-primary), 0.2), - 0 8px 22px rgba(var(--flowforge-rgb-shadow), 0.14); - } + 0%, + 100% { + box-shadow: + 0 0 0 4px rgba(var(--flowforge-rgb-primary), 0.14), + 0 6px 18px rgba(var(--flowforge-rgb-shadow), 0.12); + } + 50% { + box-shadow: + 0 0 0 6px rgba(var(--flowforge-rgb-primary), 0.2), + 0 8px 22px rgba(var(--flowforge-rgb-shadow), 0.14); + } } diff --git a/apps/extension/src/page/components/Inspector/Inspector.css b/apps/extension/src/page/components/Inspector/Inspector.css index 2d46495..634396c 100644 --- a/apps/extension/src/page/components/Inspector/Inspector.css +++ b/apps/extension/src/page/components/Inspector/Inspector.css @@ -1,95 +1,126 @@ /* Inspector */ .flowforge-inspector { - --flowforge-inspector-max-width: 1080px; + --flowforge-inspector-max-width: 1080px; } .flowforge-inspector-container { - position: fixed; - inset: 0; - display: flex; - align-items: center; - justify-content: center; - padding: var(--flowforge-app-offset); - background: rgba(var(--flowforge-rgb-shadow), 0.4); - pointer-events: auto; - z-index: 3; + position: fixed; + inset: 0; + display: flex; + align-items: center; + justify-content: center; + padding: var(--flowforge-app-offset); + background: rgba(var(--flowforge-rgb-shadow), 0.4); + pointer-events: auto; + z-index: 3; } .flowforge-inspector { - width: min(100%, var(--flowforge-inspector-max-width)); - height: calc(100vh - var(--flowforge-app-offset) * 2); - overflow: hidden; - display: flex; - flex-direction: column; - box-sizing: border-box; - background: var(--flowforge-color-surface); - border: 1px solid var(--flowforge-color-border); - border-radius: var(--flowforge-pad-sm); - padding: 0; - box-shadow: - 0 0 0 4px rgba(var(--flowforge-rgb-primary), 0.14), - 0 6px 18px rgba(var(--flowforge-rgb-shadow), 0.12); - color: var(--flowforge-color-text); - font: var(--flowforge-text-md); + width: min(100%, var(--flowforge-inspector-max-width)); + height: calc(100vh - var(--flowforge-app-offset) * 2); + overflow: hidden; + display: flex; + flex-direction: column; + box-sizing: border-box; + background: var(--flowforge-color-surface); + border: 1px solid var(--flowforge-color-border); + border-radius: var(--flowforge-pad-sm); + padding: 0; + box-shadow: + 0 0 0 4px rgba(var(--flowforge-rgb-primary), 0.14), + 0 6px 18px rgba(var(--flowforge-rgb-shadow), 0.12); + color: var(--flowforge-color-text); + font: var(--flowforge-text-md); } /* Header */ .flowforge-inspector__header { - flex-shrink: 0; - display: flex; - align-items: flex-start; - justify-content: space-between; - background-color: var(--flowforge-color-bg); - gap: var(--flowforge-pad-lg); - padding: var(--flowforge-pad-lg) var(--flowforge-pad-lg) var(--flowforge-pad-xl) var(--flowforge-pad-lg); + flex-shrink: 0; + display: flex; + align-items: flex-start; + justify-content: space-between; + background-color: var(--flowforge-color-bg); + gap: var(--flowforge-pad-lg); + padding: var(--flowforge-pad-lg) var(--flowforge-pad-lg) var(--flowforge-pad-xl) + var(--flowforge-pad-lg); } .flowforge-inspector__header-title { - margin: 0 0 var(--flowforge-pad-lg); - font: var(--flowforge-text-h3); - color: var(--flowforge-color-text); + margin: 0 0 var(--flowforge-pad-lg); + font: var(--flowforge-text-h3); + color: var(--flowforge-color-text); } .flowforge-inspector__header-subtitle { - margin: 0; - font: var(--flowforge-text-md); - color: var(--flowforge-color-text); - white-space: pre-wrap; + margin: 0; + font: var(--flowforge-text-md); + color: var(--flowforge-color-text); + white-space: pre-wrap; } /* Navigation */ .flowforge-inspector__nav { - flex-shrink: 0; - padding: 0; - background-color: var(--flowforge-color-bg); + position: relative; + z-index: 1; + flex-shrink: 0; + padding: 0; + background-color: var(--flowforge-color-bg); +} +.flowforge-inspector__nav::after { + content: ''; + position: absolute; + right: 0; + bottom: -8px; + left: 0; + height: 8px; + background: linear-gradient( + rgba(var(--flowforge-rgb-shadow), 0.4), + rgba(var(--flowforge-rgb-shadow), 0) + ); + pointer-events: none; } .flowforge-inspector__nav .flowforge-tabs__tab:first-child { - margin-left: var(--flowforge-pad-lg); + margin-left: var(--flowforge-pad-lg); } .flowforge-inspector__nav .flowforge-tabs__tab:last-child { - margin-right: var(--flowforge-pad-lg); + margin-right: var(--flowforge-pad-lg); } /* Content */ .flowforge-inspector__content { - flex: 1; - min-height: 0; - overflow-y: auto; - overflow-x: hidden; - padding: var(--flowforge-pad-lg); + flex: 1; + min-height: 0; + overflow-y: auto; + overflow-x: hidden; + padding: var(--flowforge-pad-lg); } .flowforge-inspector__content::-webkit-scrollbar { - width: var(--flowforge-pad-xs); + width: var(--flowforge-pad-xs); } .flowforge-inspector__content::-webkit-scrollbar-thumb { - background: rgba(var(--flowforge-rgb-primary), 0.5); - border-radius: 999px; + background: rgba(var(--flowforge-rgb-primary), 0.5); + border-radius: 999px; } /* Footer */ .flowforge-inspector__footer { - flex-shrink: 0; - padding: var(--flowforge-pad-lg); - background-color: var(--flowforge-color-bg); - border-top: 1px solid var(--flowforge-color-border); + position: relative; + z-index: 1; + flex-shrink: 0; + padding: var(--flowforge-pad-lg); + background-color: var(--flowforge-color-bg); + border-top: 1px solid var(--flowforge-color-border); +} +.flowforge-inspector__footer::before { + content: ''; + position: absolute; + top: -8px; + right: 0; + left: 0; + height: 8px; + background: linear-gradient( + rgba(var(--flowforge-rgb-shadow), 0), + rgba(var(--flowforge-rgb-shadow), 0.4) + ); + pointer-events: none; } .flowforge-inspector-page-metadata { - font: var(--flowforge-text-monospace-xs); - color: var(--flowforge-color-muted); + font: var(--flowforge-text-monospace-xs); + color: var(--flowforge-color-muted); } diff --git a/apps/extension/src/page/components/Inspector/components/Metadata/PageMetadata.tsx b/apps/extension/src/page/components/Inspector/components/Metadata/PageMetadata.tsx index 23cb52f..85d7739 100644 --- a/apps/extension/src/page/components/Inspector/components/Metadata/PageMetadata.tsx +++ b/apps/extension/src/page/components/Inspector/components/Metadata/PageMetadata.tsx @@ -1,10 +1,10 @@ import type { PageTrail } from '@flowforge/contract'; export interface PageMetadataProps { - metadata: PageTrail['metadata'], + metadata: PageTrail['metadata']; } -export function PageMetadata({ metadata } : PageMetadataProps) { +export function PageMetadata({ metadata }: PageMetadataProps) { return (
Selected{' '} @@ -38,4 +38,4 @@ export function PageMetadata({ metadata } : PageMetadataProps) { interactive elements · {metadata.durationMs}ms
); -} \ No newline at end of file +} diff --git a/apps/extension/src/page/components/Inspector/components/Metadata/index.tsx b/apps/extension/src/page/components/Inspector/components/Metadata/index.tsx index 6e954b0..2add8c0 100644 --- a/apps/extension/src/page/components/Inspector/components/Metadata/index.tsx +++ b/apps/extension/src/page/components/Inspector/components/Metadata/index.tsx @@ -1 +1 @@ -export { PageMetadata } from './PageMetadata'; \ No newline at end of file +export { PageMetadata } from './PageMetadata'; diff --git a/apps/extension/src/page/components/Inspector/index.ts b/apps/extension/src/page/components/Inspector/index.ts index 8d40e3f..f077f12 100644 --- a/apps/extension/src/page/components/Inspector/index.ts +++ b/apps/extension/src/page/components/Inspector/index.ts @@ -1 +1 @@ -export { Inspector } from './Inspector'; \ No newline at end of file +export { Inspector } from './Inspector'; diff --git a/apps/extension/src/page/components/Wizard/Wizard.css b/apps/extension/src/page/components/Wizard/Wizard.css index f4884d2..f8c083c 100644 --- a/apps/extension/src/page/components/Wizard/Wizard.css +++ b/apps/extension/src/page/components/Wizard/Wizard.css @@ -1,66 +1,66 @@ /* Wizard */ .flowforge-wizard { - --flowforge-wizard-width: 320px; + --flowforge-wizard-width: 320px; } .flowforge-wizard { - position: fixed; - bottom: var(--flowforge-app-offset); - right: var(--flowforge-app-offset); - background: var(--flowforge-color-surface); - border: 1px solid var(--flowforge-color-border); - border-top: 4px solid var(--flowforge-color-primary); - border-radius: var(--flowforge-pad-sm); - padding: var(--flowforge-pad-lg); - box-shadow: - 0 0 0 4px rgba(var(--flowforge-rgb-primary), 0.14), - 0 6px 18px rgba(var(--flowforge-rgb-shadow), 0.12); - color: var(--flowforge-color-text); - z-index: 2; - font: var(--flowforge-text-md); - width: var(--flowforge-wizard-width); - display: flex; - flex-direction: column; - gap: var(--flowforge-pad-lg); - pointer-events: auto; + position: fixed; + bottom: var(--flowforge-app-offset); + right: var(--flowforge-app-offset); + background: var(--flowforge-color-surface); + border: 1px solid var(--flowforge-color-border); + border-top: 4px solid var(--flowforge-color-primary); + border-radius: var(--flowforge-pad-sm); + padding: var(--flowforge-pad-lg); + box-shadow: + 0 0 0 4px rgba(var(--flowforge-rgb-primary), 0.14), + 0 6px 18px rgba(var(--flowforge-rgb-shadow), 0.12); + color: var(--flowforge-color-text); + z-index: 2; + font: var(--flowforge-text-md); + width: var(--flowforge-wizard-width); + display: flex; + flex-direction: column; + gap: var(--flowforge-pad-lg); + pointer-events: auto; } .flowforge-wizard__drag-handle { - cursor: grab; - user-select: none; + cursor: grab; + user-select: none; } .flowforge-wizard--dragging .flowforge-wizard__drag-handle { - cursor: grabbing; + cursor: grabbing; } .flowforge-wizard__title { - margin: 0; - font: var(--flowforge-text-h3); - color: var(--flowforge-color-text); + margin: 0; + font: var(--flowforge-text-h3); + color: var(--flowforge-color-text); } .flowforge-wizard__text { - margin: 0; - font: var(--flowforge-text-md); - color: var(--flowforge-color-text); - padding-bottom: var(--flowforge-pad-lg); - border-bottom: 1px solid var(--flowforge-color-border); - white-space: pre-wrap; + margin: 0; + font: var(--flowforge-text-md); + color: var(--flowforge-color-text); + padding-bottom: var(--flowforge-pad-lg); + border-bottom: 1px solid var(--flowforge-color-border); + white-space: pre-wrap; } /* Wizard Controls */ .flowforge-wizard-controls { - display: flex; - flex-direction: column; - gap: var(--flowforge-pad-sm); + display: flex; + flex-direction: column; + gap: var(--flowforge-pad-sm); } .flowforge-wizard-controls__title { - margin: 0; - font: var(--flowforge-text-h4); - color: var(--flowforge-color-text); + margin: 0; + font: var(--flowforge-text-h4); + color: var(--flowforge-color-text); } .flowforge-wizard-controls-list { - display: grid; - gap: var(--flowforge-pad-sm); + display: grid; + gap: var(--flowforge-pad-sm); } .flowforge-wizard-controls-list--start { - grid-template-columns: 2fr 1fr; + grid-template-columns: 2fr 1fr; } .flowforge-wizard-controls-list--steps { - grid-template-columns: repeat(3, 1fr); + grid-template-columns: repeat(3, 1fr); } diff --git a/apps/extension/src/page/page.css b/apps/extension/src/page/page.css index 94d5ade..9950c1c 100644 --- a/apps/extension/src/page/page.css +++ b/apps/extension/src/page/page.css @@ -6,6 +6,6 @@ /* Page */ .flowforge-page { - position: fixed; - pointer-events: none; + position: fixed; + pointer-events: none; } diff --git a/apps/extension/src/popup/components/Developer/Developer.css b/apps/extension/src/popup/components/Developer/Developer.css index 2ddbcb2..adf8795 100644 --- a/apps/extension/src/popup/components/Developer/Developer.css +++ b/apps/extension/src/popup/components/Developer/Developer.css @@ -2,15 +2,15 @@ .flowforge-developer-list { } .flowforge-developer-list ul { - list-style: none; - display: flex; - flex-direction: column; - margin: 0; - padding: 0; - gap: var(--flowforge-pad-xs); + list-style: none; + display: flex; + flex-direction: column; + margin: 0; + padding: 0; + gap: var(--flowforge-pad-xs); } .flowforge-developer-list li { - margin: 0; - padding: 0; - font: var(--flowforge-text-sm); + margin: 0; + padding: 0; + font: var(--flowforge-text-sm); } diff --git a/apps/extension/src/popup/components/Developer/index.ts b/apps/extension/src/popup/components/Developer/index.ts index f8375d9..43044c9 100644 --- a/apps/extension/src/popup/components/Developer/index.ts +++ b/apps/extension/src/popup/components/Developer/index.ts @@ -1 +1 @@ -export { Developer } from './Developer'; \ No newline at end of file +export { Developer } from './Developer'; diff --git a/apps/extension/src/popup/components/Examples/Examples.css b/apps/extension/src/popup/components/Examples/Examples.css index 2ea06f3..da7d11b 100644 --- a/apps/extension/src/popup/components/Examples/Examples.css +++ b/apps/extension/src/popup/components/Examples/Examples.css @@ -2,38 +2,38 @@ .flowforge-examples-list { } .flowforge-examples-list ul { - list-style: none; - display: flex; - flex-wrap: wrap; - margin: 0; - padding: 0; - gap: var(--flowforge-pad-xs); + list-style: none; + display: flex; + flex-wrap: wrap; + margin: 0; + padding: 0; + gap: var(--flowforge-pad-xs); } .flowforge-examples-list li { - margin: 0; - padding: 0; + margin: 0; + padding: 0; } .flowforge-example-chip { - display: inline-flex; - align-items: center; - padding: var(--flowforge-pad-xs) var(--flowforge-pad-sm); - border-radius: var(--flowforge-pad-xs); - background: var(--flowforge-color-surface); - border: 1px solid var(--flowforge-color-border); - color: var(--flowforge-color-text-muted); - font: var(--flowforge-text-sm); - line-height: 1; - cursor: pointer; - transition: var(--flowforge-transition-default); + display: inline-flex; + align-items: center; + padding: var(--flowforge-pad-xs) var(--flowforge-pad-sm); + border-radius: var(--flowforge-pad-xs); + background: var(--flowforge-color-surface); + border: 1px solid var(--flowforge-color-border); + color: var(--flowforge-color-text-muted); + font: var(--flowforge-text-sm); + line-height: 1; + cursor: pointer; + transition: var(--flowforge-transition-default); } .flowforge-example-chip:hover { - background: var(--flowforge-color-bg); + background: var(--flowforge-color-bg); } .flowforge-example-chip--primary:hover { - border-color: var(--flowforge-color-primary-hover); - color: var(--flowforge-color-primary-hover); + border-color: var(--flowforge-color-primary-hover); + color: var(--flowforge-color-primary-hover); } .flowforge-example-chip--secondary:hover { - border-color: var(--flowforge-color-secondary-hover); - color: var(--flowforge-color-secondary-hover); + border-color: var(--flowforge-color-secondary-hover); + color: var(--flowforge-color-secondary-hover); } diff --git a/apps/extension/src/popup/components/Loading/Loading.css b/apps/extension/src/popup/components/Loading/Loading.css index 295a039..1437302 100644 --- a/apps/extension/src/popup/components/Loading/Loading.css +++ b/apps/extension/src/popup/components/Loading/Loading.css @@ -1,185 +1,276 @@ /* Loading */ .flowforge-loading { - border: 1px solid var(--flowforge-color-border); - display: flex; - flex-direction: column; - border-radius: var(--flowforge-pad-sm); - padding: var(--flowforge-pad-lg); - background: linear-gradient( - 180deg, - rgba(var(--flowforge-rgb-primary), 0.06), - rgba(var(--flowforge-rgb-primary), 0.03) - ); - box-shadow: 0 4px 12px rgba(var(--flowforge-rgb-shadow), 0.06); + border: 1px solid var(--flowforge-color-border); + display: flex; + flex-direction: column; + border-radius: var(--flowforge-pad-sm); + padding: var(--flowforge-pad-lg); + background: linear-gradient( + 180deg, + rgba(var(--flowforge-rgb-primary), 0.06), + rgba(var(--flowforge-rgb-primary), 0.03) + ); + box-shadow: 0 4px 12px rgba(var(--flowforge-rgb-shadow), 0.06); } .flowforge-loading__content { - position: relative; - display: flex; - justify-content: center; - align-items: center; + position: relative; + display: flex; + justify-content: center; + align-items: center; } .flowforge-loading__text { - position: absolute; - margin: 0; - bottom: 4px; - left: 50%; - transform: translateX(-50%); - font: var(--flowforge-text-sm); - color: var(--flowforge-color-text-muted); - white-space: nowrap; - pointer-events: none; + position: absolute; + margin: 0; + bottom: 4px; + left: 50%; + transform: translateX(-50%); + font: var(--flowforge-text-sm); + color: var(--flowforge-color-text-muted); + white-space: nowrap; + pointer-events: none; } .flowforge-cosmic-loader { - position: relative; - width: 80px; - height: 80px; + position: relative; + width: 80px; + height: 80px; } .flowforge-cosmic-loader__core { - position: absolute; - inset: 50% auto auto 50%; - width: 16px; - height: 16px; - transform: translate(-50%, -50%); - border-radius: 50%; - background: var(--flowforge-color-secondary); - box-shadow: - 0 0 12px rgba(var(--flowforge-rgb-secondary), 0.9), - 0 0 28px rgba(var(--flowforge-rgb-secondary), 0.5), - 0 0 48px rgba(var(--flowforge-rgb-secondary), 0.25); - animation: flowforge-core-pulse 1.2s ease-in-out infinite; + position: absolute; + inset: 50% auto auto 50%; + width: 16px; + height: 16px; + transform: translate(-50%, -50%); + border-radius: 50%; + background: var(--flowforge-color-secondary); + box-shadow: + 0 0 12px rgba(var(--flowforge-rgb-secondary), 0.9), + 0 0 28px rgba(var(--flowforge-rgb-secondary), 0.5), + 0 0 48px rgba(var(--flowforge-rgb-secondary), 0.25); + animation: flowforge-core-pulse 1.2s ease-in-out infinite; } .flowforge-cosmic-loader__orbit { - position: absolute; - inset: 0; - animation: flowforge-orbit-rotate 3.2s linear infinite; + position: absolute; + inset: 0; + animation: flowforge-orbit-rotate 3.2s linear infinite; } .flowforge-cosmic-loader__star { - position: absolute; - color: var(--flowforge-color-secondary); - font-size: 12px; - text-shadow: - 0 0 6px rgba(var(--flowforge-rgb-secondary), 0.7), - 0 0 12px rgba(var(--flowforge-rgb-secondary), 0.35); - animation: flowforge-star-twinkle 1.6s ease-in-out infinite; + position: absolute; + color: var(--flowforge-color-secondary); + font-size: 12px; + text-shadow: + 0 0 6px rgba(var(--flowforge-rgb-secondary), 0.7), + 0 0 12px rgba(var(--flowforge-rgb-secondary), 0.35); + animation: flowforge-star-twinkle 1.6s ease-in-out infinite; } -.flowforge-s1 { top: 4px; left: 50%; transform: translateX(-50%); animation-delay: 0s; } -.flowforge-s2 { right: 6px; top: 50%; transform: translateY(-50%); animation-delay: 0.3s; } -.flowforge-s3 { bottom: 6px; left: 50%; transform: translateX(-50%); animation-delay: 0.6s; } -.flowforge-s4 { left: 6px; top: 50%; transform: translateY(-50%); animation-delay: 0.9s; } +.flowforge-s1 { + top: 4px; + left: 50%; + transform: translateX(-50%); + animation-delay: 0s; +} +.flowforge-s2 { + right: 6px; + top: 50%; + transform: translateY(-50%); + animation-delay: 0.3s; +} +.flowforge-s3 { + bottom: 6px; + left: 50%; + transform: translateX(-50%); + animation-delay: 0.6s; +} +.flowforge-s4 { + left: 6px; + top: 50%; + transform: translateY(-50%); + animation-delay: 0.9s; +} .flowforge-cosmic-loader__sparks { - position: absolute; - inset: 0; + position: absolute; + inset: 0; } .flowforge-spark { - position: absolute; - left: 50%; - top: 50%; - width: 4px; - height: 4px; - margin: -2px; - border-radius: 50%; - background: var(--flowforge-color-secondary); - box-shadow: - 0 0 6px rgba(var(--flowforge-rgb-secondary), 0.9), - 0 0 12px rgba(var(--flowforge-rgb-secondary), 0.4); + position: absolute; + left: 50%; + top: 50%; + width: 4px; + height: 4px; + margin: -2px; + border-radius: 50%; + background: var(--flowforge-color-secondary); + box-shadow: + 0 0 6px rgba(var(--flowforge-rgb-secondary), 0.9), + 0 0 12px rgba(var(--flowforge-rgb-secondary), 0.4); - opacity: 0; + opacity: 0; } -.flowforge-k1 { animation: flowforge-spark-1 1.2s ease-out infinite; } -.flowforge-k2 { animation: flowforge-spark-2 1.2s ease-out infinite 0.15s; } -.flowforge-k3 { animation: flowforge-spark-3 1.2s ease-out infinite 0.3s; } -.flowforge-k4 { animation: flowforge-spark-4 1.2s ease-out infinite 0.45s; } -.flowforge-k5 { animation: flowforge-spark-5 1.2s ease-out infinite 0.6s; } +.flowforge-k1 { + animation: flowforge-spark-1 1.2s ease-out infinite; +} +.flowforge-k2 { + animation: flowforge-spark-2 1.2s ease-out infinite 0.15s; +} +.flowforge-k3 { + animation: flowforge-spark-3 1.2s ease-out infinite 0.3s; +} +.flowforge-k4 { + animation: flowforge-spark-4 1.2s ease-out infinite 0.45s; +} +.flowforge-k5 { + animation: flowforge-spark-5 1.2s ease-out infinite 0.6s; +} .flowforge-cosmic-loader__flash-stars { - position: absolute; - inset: 0; - pointer-events: none; + position: absolute; + inset: 0; + pointer-events: none; } .flowforge-flash-star { - position: absolute; - color: var(--flowforge-color-primary); - font-size: 14px; - opacity: 0; + position: absolute; + color: var(--flowforge-color-primary); + font-size: 14px; + opacity: 0; - text-shadow: - 0 0 6px rgba(var(--flowforge-rgb-primary), 0.9), - 0 0 16px rgba(var(--flowforge-rgb-primary), 0.6), - 0 0 28px rgba(var(--flowforge-rgb-primary), 0.35); + text-shadow: + 0 0 6px rgba(var(--flowforge-rgb-primary), 0.9), + 0 0 16px rgba(var(--flowforge-rgb-primary), 0.6), + 0 0 28px rgba(var(--flowforge-rgb-primary), 0.35); } -.flowforge-f1 { top: 8px; left: 12px; } -.flowforge-f2 { top: 16px; right: 10px; } -.flowforge-f3 { bottom: 18px; left: 22px; } +.flowforge-f1 { + top: 8px; + left: 12px; +} +.flowforge-f2 { + top: 16px; + right: 10px; +} +.flowforge-f3 { + bottom: 18px; + left: 22px; +} -.flowforge-f1 { animation: flowforge-flash-star 6s linear infinite; } -.flowforge-f2 { animation: flowforge-flash-star 7s linear infinite 1.5s; } -.flowforge-f3 { animation: flowforge-flash-star 5.5s linear infinite 3s; } +.flowforge-f1 { + animation: flowforge-flash-star 6s linear infinite; +} +.flowforge-f2 { + animation: flowforge-flash-star 7s linear infinite 1.5s; +} +.flowforge-f3 { + animation: flowforge-flash-star 5.5s linear infinite 3s; +} @keyframes flowforge-core-pulse { - 0%, 100% { - transform: translate(-50%, -50%) scale(0.9); - opacity: 0.9; - } - 50% { - transform: translate(-50%, -50%) scale(1.2); - opacity: 1; - } + 0%, + 100% { + transform: translate(-50%, -50%) scale(0.9); + opacity: 0.9; + } + 50% { + transform: translate(-50%, -50%) scale(1.2); + opacity: 1; + } } @keyframes flowforge-orbit-rotate { - to { transform: rotate(360deg); } + to { + transform: rotate(360deg); + } } @keyframes flowforge-star-twinkle { - 0%, 100% { - opacity: 0.5; - transform: scale(0.85); - } - 50% { - opacity: 1; - transform: scale(1.25); - } + 0%, + 100% { + opacity: 0.5; + transform: scale(0.85); + } + 50% { + opacity: 1; + transform: scale(1.25); + } } @keyframes flowforge-spark-1 { - 0% { transform: translate(0, 0); opacity: 0; } - 20% { opacity: 1; } - 100% { transform: translate(-30px, -20px); opacity: 0; } + 0% { + transform: translate(0, 0); + opacity: 0; + } + 20% { + opacity: 1; + } + 100% { + transform: translate(-30px, -20px); + opacity: 0; + } } @keyframes flowforge-spark-2 { - 0% { transform: translate(0, 0); opacity: 0; } - 20% { opacity: 1; } - 100% { transform: translate(24px, -28px); opacity: 0; } + 0% { + transform: translate(0, 0); + opacity: 0; + } + 20% { + opacity: 1; + } + 100% { + transform: translate(24px, -28px); + opacity: 0; + } } @keyframes flowforge-spark-3 { - 0% { transform: translate(0, 0); opacity: 0; } - 20% { opacity: 1; } - 100% { transform: translate(-18px, 30px); opacity: 0; } + 0% { + transform: translate(0, 0); + opacity: 0; + } + 20% { + opacity: 1; + } + 100% { + transform: translate(-18px, 30px); + opacity: 0; + } } @keyframes flowforge-spark-4 { - 0% { transform: translate(0, 0); opacity: 0; } - 20% { opacity: 1; } - 100% { transform: translate(28px, 18px); opacity: 0; } + 0% { + transform: translate(0, 0); + opacity: 0; + } + 20% { + opacity: 1; + } + 100% { + transform: translate(28px, 18px); + opacity: 0; + } } @keyframes flowforge-spark-5 { - 0% { transform: translate(0, 0); opacity: 0; } - 20% { opacity: 1; } - 100% { transform: translate(0, -34px); opacity: 0; } + 0% { + transform: translate(0, 0); + opacity: 0; + } + 20% { + opacity: 1; + } + 100% { + transform: translate(0, -34px); + opacity: 0; + } } @keyframes flowforge-flash-star { - 0%, 85%, 100% { - opacity: 0; - transform: scale(0.6) translate(0, 0); - } - 88% { - opacity: 1; - transform: scale(1.4) translate(2px, -3px); - } - 92% { - opacity: 0; - transform: scale(0.8) translate(-1px, 2px); - } + 0%, + 85%, + 100% { + opacity: 0; + transform: scale(0.6) translate(0, 0); + } + 88% { + opacity: 1; + transform: scale(1.4) translate(2px, -3px); + } + 92% { + opacity: 0; + transform: scale(0.8) translate(-1px, 2px); + } } diff --git a/apps/extension/src/popup/components/Question/Question.css b/apps/extension/src/popup/components/Question/Question.css index 48145c6..5950ced 100644 --- a/apps/extension/src/popup/components/Question/Question.css +++ b/apps/extension/src/popup/components/Question/Question.css @@ -1,27 +1,27 @@ /* Question form */ .flowforge-input-textarea { - width: 100%; - padding: var(--flowforge-pad-lg); - border: 1px solid var(--flowforge-color-border); - border-radius: var(--flowforge-pad-sm); - resize: vertical; - font: var(--flowforge-text-md); - color: var(--flowforge-color-text); - background: rgba(var(--flowforge-rgb-secondary), 0.04); - transition: var(--flowforge-transition-default); + width: 100%; + padding: var(--flowforge-pad-lg); + border: 1px solid var(--flowforge-color-border); + border-radius: var(--flowforge-pad-sm); + resize: vertical; + font: var(--flowforge-text-md); + color: var(--flowforge-color-text); + background: rgba(var(--flowforge-rgb-secondary), 0.04); + transition: var(--flowforge-transition-default); } .flowforge-input-textarea::placeholder { - color: var(--flowforge-color-text-muted); + color: var(--flowforge-color-text-muted); } .flowforge-input-textarea:hover { - background: rgba(var(--flowforge-rgb-secondary), 0.06); + background: rgba(var(--flowforge-rgb-secondary), 0.06); } .flowforge-input-textarea:focus { - outline: none; - border-color: var(--flowforge-color-secondary); - background: var(--flowforge-color-surface); - box-shadow: 0 0 0 4px rgba(var(--flowforge-rgb-secondary), 0.16); + outline: none; + border-color: var(--flowforge-color-secondary); + background: var(--flowforge-color-surface); + box-shadow: 0 0 0 4px rgba(var(--flowforge-rgb-secondary), 0.16); } .flowforge-question-form > .flowforge-button { - margin-top: var(--flowforge-pad-sm); + margin-top: var(--flowforge-pad-sm); } diff --git a/apps/extension/src/popup/components/Result/Result.css b/apps/extension/src/popup/components/Result/Result.css index 8fa8fc7..0bff635 100644 --- a/apps/extension/src/popup/components/Result/Result.css +++ b/apps/extension/src/popup/components/Result/Result.css @@ -1,63 +1,63 @@ /* Elements */ .flowforge-elements { - display: flex; - flex-direction: column; - gap: var(--flowforge-pad-sm); + display: flex; + flex-direction: column; + gap: var(--flowforge-pad-sm); } .flowforge-elements__title { - margin: 0; - font: var(--flowforge-text-h4); - color: var(--flowforge-color-text); + margin: 0; + font: var(--flowforge-text-h4); + color: var(--flowforge-color-text); } .flowforge-elements-list { - display: flex; - flex-direction: column; - gap: var(--flowforge-pad-sm); + display: flex; + flex-direction: column; + gap: var(--flowforge-pad-sm); } .flowforge-element-item { - display: block; - text-align: left; - padding: var(--flowforge-pad-sm) var(--flowforge-pad-lg); - border-radius: var(--flowforge-pad-sm); - background: var(--flowforge-color-bg); - border: 1px solid var(--flowforge-color-border); - color: var(--flowforge-color-text-muted); - font: var(--flowforge-text-sm); + display: block; + text-align: left; + padding: var(--flowforge-pad-sm) var(--flowforge-pad-lg); + border-radius: var(--flowforge-pad-sm); + background: var(--flowforge-color-bg); + border: 1px solid var(--flowforge-color-border); + color: var(--flowforge-color-text-muted); + font: var(--flowforge-text-sm); } .flowforge-element-item > span { - font: inherit; - color: inherit; - font-weight: 600; + font: inherit; + color: inherit; + font-weight: 600; } .flowforge-element-item--chip { - cursor: pointer; - transition: var(--flowforge-transition-default); + cursor: pointer; + transition: var(--flowforge-transition-default); } .flowforge-element-item--chip:hover { - border-color: var(--flowforge-color-primary-hover); + border-color: var(--flowforge-color-primary-hover); } .flowforge-elements-list--steps { - gap: 0; + gap: 0; } .flowforge-elements-list--steps .flowforge-element-item { - border-radius: 0; + border-radius: 0; } .flowforge-elements-list--steps .flowforge-element-item:first-child { - border-top-left-radius: var(--flowforge-pad-sm); - border-top-right-radius: var(--flowforge-pad-sm); + border-top-left-radius: var(--flowforge-pad-sm); + border-top-right-radius: var(--flowforge-pad-sm); } .flowforge-elements-list--steps .flowforge-element-item:last-child { - border-bottom-left-radius: var(--flowforge-pad-sm); - border-bottom-right-radius: var(--flowforge-pad-sm); + border-bottom-left-radius: var(--flowforge-pad-sm); + border-bottom-right-radius: var(--flowforge-pad-sm); } .flowforge-elements-list--steps .flowforge-element-item + .flowforge-element-item { - border-top: none; + border-top: none; } .flowforge-result-metadata { - display: flex; - justify-content: center; - font: 400 11px / 1.6 var(--flowforge-font-family); - color: var(--flowforge-color-text-muted); - opacity: 0.8; - flex-wrap: wrap; + display: flex; + justify-content: center; + font: 400 11px / 1.6 var(--flowforge-font-family); + color: var(--flowforge-color-text-muted); + opacity: 0.8; + flex-wrap: wrap; } diff --git a/apps/extension/src/popup/hooks/usePopup.ts b/apps/extension/src/popup/hooks/usePopup.ts index f16535d..f5aa57f 100644 --- a/apps/extension/src/popup/hooks/usePopup.ts +++ b/apps/extension/src/popup/hooks/usePopup.ts @@ -166,14 +166,12 @@ export function usePopup({ transport, presetQuestions, initialQuestion }: UsePop // Handle open inspector const handleOpenPageInspector = useCallback(async () => { - const message: OpenPageInspectorMessage = { - type: 'OPEN_PAGE_INSPECTOR', - senderId: await transport.getActiveSenderId(), - }; - await transport.sendToBackground(message); - }, - [transport], - ); + const message: OpenPageInspectorMessage = { + type: 'OPEN_PAGE_INSPECTOR', + senderId: await transport.getActiveSenderId(), + }; + await transport.sendToBackground(message); + }, [transport]); return { question, diff --git a/apps/extension/src/popup/popup.css b/apps/extension/src/popup/popup.css index 57f4f1f..6a8520e 100644 --- a/apps/extension/src/popup/popup.css +++ b/apps/extension/src/popup/popup.css @@ -8,87 +8,112 @@ /* Popup */ .flowforge-popup { - --flowforge-popup-width: 400px; - --flowforge-popup-height: 560px; - --flowforge-popup-header-height: 80px; + --flowforge-popup-width: 400px; + --flowforge-popup-height: 560px; + --flowforge-popup-header-height: 80px; } .flowforge-popup { - width: var(--flowforge-popup-width); - height: var(--flowforge-popup-height); - overflow: hidden; - display: flex; - flex-direction: column; - background: var(--flowforge-color-bg); - pointer-events: auto; - position: static; + width: var(--flowforge-popup-width); + height: var(--flowforge-popup-height); + overflow: hidden; + display: flex; + flex-direction: column; + background: var(--flowforge-color-bg); + pointer-events: auto; + position: static; } .flowforge-popup__header { - position: relative; - z-index: 1; - margin: 0; - flex-shrink: 0; - height: var(--flowforge-popup-header-height); - display: flex; - flex-direction: column; - justify-content: center; - align-items: center; - text-align: center; - color: var(--flowforge-color-text-on-dark); - box-shadow: 0 4px 12px rgba(var(--flowforge-rgb-shadow), 0.4); - background: - url('../shared/img/header-bg-sm.webp') right bottom no-repeat, - linear-gradient(135deg, var(--flowforge-color-primary) 0%, var(--flowforge-color-primary-hover) 100%); + position: relative; + z-index: 1; + margin: 0; + flex-shrink: 0; + height: var(--flowforge-popup-header-height); + display: flex; + flex-direction: column; + justify-content: center; + align-items: center; + text-align: center; + color: var(--flowforge-color-text-on-dark); + background: + url('../shared/img/header-bg-sm.webp') right bottom no-repeat, + linear-gradient( + 135deg, + var(--flowforge-color-primary) 0%, + var(--flowforge-color-primary-hover) 100% + ); +} +.flowforge-popup__header::after { + content: ''; + position: absolute; + right: 0; + bottom: -12px; + left: 0; + height: 12px; + background: linear-gradient( + rgba(var(--flowforge-rgb-shadow), 0.4), + rgba(var(--flowforge-rgb-shadow), 0) + ); + pointer-events: none; } .flowforge-popup__header--parallax { - background-position: center center, 0 0; - animation: flowforge-header-parallax 60s ease-in-out infinite alternate; + background-position: + center center, + 0 0; + animation: flowforge-header-parallax 60s ease-in-out infinite alternate; } @keyframes flowforge-header-parallax { - 0% { - background-position: calc(50% - 95px) calc(50% - 15px), 0 0; - } - 50% { - background-position: 50% calc(50% + 15px), 0 0; - } - 100% { - background-position: calc(50% + 95px) calc(50% - 15px), 0 0; - } + 0% { + background-position: + calc(50% - 95px) calc(50% - 15px), + 0 0; + } + 50% { + background-position: + 50% calc(50% + 15px), + 0 0; + } + 100% { + background-position: + calc(50% + 95px) calc(50% - 15px), + 0 0; + } } .flowforge-popup__header-title { - font: var(--flowforge-text-h2); - position: relative; + font: var(--flowforge-text-h2); + position: relative; } .flowforge-popup__header-subtitle { - margin-top: 2px; - font: var(--flowforge-text-lg); - opacity: 0.9; - position: relative; + margin-top: 2px; + font: var(--flowforge-text-lg); + opacity: 0.9; + position: relative; } .flowforge-popup__content { - flex: 1; - overflow-y: auto; - padding: var(--flowforge-pad-xl); - display: flex; - flex-direction: column; - gap: var(--flowforge-pad-lg); + flex: 1; + margin-top: -1px; + overflow-y: auto; + padding: var(--flowforge-pad-xl); + display: flex; + flex-direction: column; + gap: var(--flowforge-pad-lg); } .flowforge-popup__content::-webkit-scrollbar { - width: var(--flowforge-pad-xs); + width: var(--flowforge-pad-xs); } .flowforge-popup__content::-webkit-scrollbar-thumb { - background: rgba(var(--flowforge-rgb-primary), 0.5); - border-radius: 999px; + background: rgba(var(--flowforge-rgb-primary), 0.5); + border-radius: 999px; } .flowforge-popup__footer { - display: flex; - justify-content: center; - padding-top: var(--flowforge-pad-sm); - margin-top: auto; - font: var(--flowforge-text-xs); - gap: var(--flowforge-pad-md); + display: flex; + justify-content: center; + padding-top: var(--flowforge-pad-sm); + margin-top: auto; + font: var(--flowforge-text-xs); + gap: var(--flowforge-pad-md); } .flowforge-popup__copyright { - color: var(--flowforge-color-text-muted); - opacity: 0.8; - flex-wrap: wrap; + color: var(--flowforge-color-text-muted); + opacity: 0.8; + flex-wrap: wrap; } diff --git a/apps/extension/src/shared/components/Button/Button.css b/apps/extension/src/shared/components/Button/Button.css index f3425f4..910f326 100644 --- a/apps/extension/src/shared/components/Button/Button.css +++ b/apps/extension/src/shared/components/Button/Button.css @@ -1,47 +1,47 @@ /* Button */ .flowforge-button { - appearance: none; - padding: var(--flowforge-pad-sm) var(--flowforge-pad-lg); - border-radius: var(--flowforge-pad-xs); - font: var(--flowforge-text-md); - cursor: pointer; - border: none; - transition: var(--flowforge-transition-default); + appearance: none; + padding: var(--flowforge-pad-sm) var(--flowforge-pad-lg); + border-radius: var(--flowforge-pad-xs); + font: var(--flowforge-text-md); + cursor: pointer; + border: none; + transition: var(--flowforge-transition-default); } .flowforge-button--sm { - padding: var(--flowforge-pad-xs) var(--flowforge-pad-sm); - border-radius: var(--flowforge-pad-xs); - font: var(--flowforge-text-sm); + padding: var(--flowforge-pad-xs) var(--flowforge-pad-sm); + border-radius: var(--flowforge-pad-xs); + font: var(--flowforge-text-sm); } .flowforge-button--lg { - padding: var(--flowforge-pad-lg); - border-radius: var(--flowforge-pad-sm); - font: var(--flowforge-text-h3); + padding: var(--flowforge-pad-lg); + border-radius: var(--flowforge-pad-sm); + font: var(--flowforge-text-h3); } .flowforge-button--wide { - width: 100%; + width: 100%; } .flowforge-button, .flowforge-button--primary { - background: var(--flowforge-color-primary); - color: var(--flowforge-color-text-on-dark); + background: var(--flowforge-color-primary); + color: var(--flowforge-color-text-on-dark); } .flowforge-button--secondary { - background: var(--flowforge-color-secondary); + background: var(--flowforge-color-secondary); } .flowforge-button:hover, .flowforge-button--primary:hover { - background: var(--flowforge-color-primary-hover); - transform: translateY(-1px); + background: var(--flowforge-color-primary-hover); + transform: translateY(-1px); } .flowforge-button--secondary:hover { - background: var(--flowforge-color-secondary-hover); + background: var(--flowforge-color-secondary-hover); } .flowforge-button:active { - transform: translateY(0); + transform: translateY(0); } .flowforge-button:disabled { - background: var(--flowforge-color-muted); - cursor: not-allowed; - opacity: 0.5; + background: var(--flowforge-color-muted); + cursor: not-allowed; + opacity: 0.5; } diff --git a/apps/extension/src/shared/components/Button/ButtonText.css b/apps/extension/src/shared/components/Button/ButtonText.css index fb85366..1b92e67 100644 --- a/apps/extension/src/shared/components/Button/ButtonText.css +++ b/apps/extension/src/shared/components/Button/ButtonText.css @@ -1,21 +1,21 @@ /* Button Text */ .flowforge-button-text { - border: none; - background: none; - cursor: pointer; - font: inherit; - color: var(--flowforge-color-text); - transition: var(--flowforge-transition-default); + border: none; + background: none; + cursor: pointer; + font: inherit; + color: var(--flowforge-color-text); + transition: var(--flowforge-transition-default); } .flowforge-button-text:hover, .flowforge-button-text--primary:hover { - color: var(--flowforge-color-primary-hover); + color: var(--flowforge-color-primary-hover); } .flowforge-button-text--secondary:hover { - color: var(--flowforge-color-secondary-hover); + color: var(--flowforge-color-secondary-hover); } .flowforge-button-text:disabled { - color: var(--flowforge-color-text-muted); - cursor: not-allowed; - opacity: 0.5; + color: var(--flowforge-color-text-muted); + cursor: not-allowed; + opacity: 0.5; } diff --git a/apps/extension/src/shared/components/Card/Card.css b/apps/extension/src/shared/components/Card/Card.css index 97d50f6..0565b59 100644 --- a/apps/extension/src/shared/components/Card/Card.css +++ b/apps/extension/src/shared/components/Card/Card.css @@ -1,46 +1,46 @@ /* Cards */ .flowforge-card { - position: relative; - background: var(--flowforge-color-surface); - border: 1px solid var(--flowforge-color-border); - display: flex; - flex-direction: column; - gap: var(--flowforge-pad-lg); - border-radius: var(--flowforge-pad-sm); - padding: var(--flowforge-pad-lg); - box-shadow: 0 4px 12px rgba(var(--flowforge-rgb-shadow), 0.1); + position: relative; + background: var(--flowforge-color-surface); + border: 1px solid var(--flowforge-color-border); + display: flex; + flex-direction: column; + gap: var(--flowforge-pad-lg); + border-radius: var(--flowforge-pad-sm); + padding: var(--flowforge-pad-lg); + box-shadow: 0 4px 12px rgba(var(--flowforge-rgb-shadow), 0.1); } .flowforge-card__title { - margin: 0; - font: var(--flowforge-text-h3); - color: var(--flowforge-color-text); + margin: 0; + font: var(--flowforge-text-h3); + color: var(--flowforge-color-text); } .flowforge-card__text { - font: var(--flowforge-text-md); - color: var(--flowforge-color-text); - padding-bottom: var(--flowforge-pad-lg); - border-bottom: 1px solid var(--flowforge-color-border); - white-space: pre-wrap; + font: var(--flowforge-text-md); + color: var(--flowforge-color-text); + padding-bottom: var(--flowforge-pad-lg); + border-bottom: 1px solid var(--flowforge-color-border); + white-space: pre-wrap; } .flowforge-card__footer { - padding-top: var(--flowforge-pad-sm); + padding-top: var(--flowforge-pad-sm); } .flowforge-card__text:last-child, -.flowforge-card__text:has(+ .flowforge-card__footer){ - padding-bottom: 0; - border-bottom: none; +.flowforge-card__text:has(+ .flowforge-card__footer) { + padding-bottom: 0; + border-bottom: none; } .flowforge-card.flowforge-card--left, .flowforge-card--primary.flowforge-card--left { - border-left: 4px solid var(--flowforge-color-primary); + border-left: 4px solid var(--flowforge-color-primary); } .flowforge-card--secondary.flowforge-card--left { - border-left: 4px solid var(--flowforge-color-secondary); + border-left: 4px solid var(--flowforge-color-secondary); } .flowforge-card[data-state='error'] { - background: rgba(var(--flowforge-rgb-danger), 0.05); - box-shadow: 0 0 0 4px rgba(var(--flowforge-rgb-danger), 0.15); + background: rgba(var(--flowforge-rgb-danger), 0.05); + box-shadow: 0 0 0 4px rgba(var(--flowforge-rgb-danger), 0.15); } .flowforge-card--left[data-state='error'] { - border-left-color: var(--flowforge-color-danger); + border-left-color: var(--flowforge-color-danger); } diff --git a/apps/extension/src/shared/components/Icon/Icon.css b/apps/extension/src/shared/components/Icon/Icon.css index 749f338..094684e 100644 --- a/apps/extension/src/shared/components/Icon/Icon.css +++ b/apps/extension/src/shared/components/Icon/Icon.css @@ -1,17 +1,17 @@ /* Icon */ .flowforge-icon { - display: inline-block; - flex-shrink: 0; - color: currentColor; - width: var(--flowforge-icon-size-md); - height: var(--flowforge-icon-size-md); - vertical-align: middle; + display: inline-block; + flex-shrink: 0; + color: currentColor; + width: var(--flowforge-icon-size-md); + height: var(--flowforge-icon-size-md); + vertical-align: middle; } .flowforge-icon--sm { - width: var(--flowforge-icon-size-sm); - height: var(--flowforge-icon-size-sm); + width: var(--flowforge-icon-size-sm); + height: var(--flowforge-icon-size-sm); } .flowforge-icon--lg { - width: var(--flowforge-icon-size-lg); - height: var(--flowforge-icon-size-lg); + width: var(--flowforge-icon-size-lg); + height: var(--flowforge-icon-size-lg); } diff --git a/apps/extension/src/shared/components/Icon/Icon.tsx b/apps/extension/src/shared/components/Icon/Icon.tsx index d208dc5..6d90738 100644 --- a/apps/extension/src/shared/components/Icon/Icon.tsx +++ b/apps/extension/src/shared/components/Icon/Icon.tsx @@ -6,13 +6,7 @@ interface IconProps extends Omit { className?: string; } -export function Icon({ - icon: IconComponent, - size = 'medium', - className, - strokeWidth = 2, - ...props -}: IconProps) { +export function Icon({ icon: IconComponent, size = 'medium', className, strokeWidth = 2, ...props }: IconProps) { const classes = [ 'flowforge-icon', size === 'small' && 'flowforge-icon--sm', diff --git a/apps/extension/src/shared/components/JsonViewer/JsonViewer.css b/apps/extension/src/shared/components/JsonViewer/JsonViewer.css index 2644e2d..3ca3c05 100644 --- a/apps/extension/src/shared/components/JsonViewer/JsonViewer.css +++ b/apps/extension/src/shared/components/JsonViewer/JsonViewer.css @@ -1,86 +1,88 @@ /* Json Viewer */ .flowforge-json-viewer { - font: var(--flowforge-text-monospace-sm); + font: var(--flowforge-text-monospace-sm); } .flowforge-json-viewer__node { - margin: 0; + margin: 0; } .flowforge-json-viewer__summary { - display: flex; - align-items: baseline; - gap: var(--flowforge-pad-xs); - min-width: 0; - cursor: pointer; - list-style: none; - border-radius: var(--flowforge-pad-xs); + display: flex; + align-items: baseline; + gap: var(--flowforge-pad-xs); + min-width: 0; + cursor: pointer; + list-style: none; + border-radius: var(--flowforge-pad-xs); } .flowforge-json-viewer__summary:hover, .flowforge-json-viewer__summary:focus-visible { - background: rgba(var(--flowforge-rgb-primary), 0.08); + background: rgba(var(--flowforge-rgb-primary), 0.08); } .flowforge-json-viewer__summary::-webkit-details-marker { - display: none; + display: none; } .flowforge-json-viewer__summary::before { - content: "›"; - width: 1em; - flex: 0 0 auto; - color: var(--flowforge-color-text-muted); - transition: transform 0.12s ease; + content: '›'; + width: 1em; + flex: 0 0 auto; + color: var(--flowforge-color-text-muted); + transition: transform 0.12s ease; } .flowforge-json-viewer__node[open] > .flowforge-json-viewer__summary::before { - transform: rotate(90deg); + transform: rotate(90deg); } .flowforge-json-viewer__row { - min-width: 0; - padding-left: 1em; + min-width: 0; + padding-left: 1em; } .flowforge-json-viewer__children { - margin-left: 1.5em; - padding-left: var(--flowforge-pad-md); - border-left: 1px solid var(--flowforge-color-border); + margin-left: 1.5em; + padding-left: var(--flowforge-pad-md); + border-left: 1px solid var(--flowforge-color-border); } .flowforge-json-viewer__key { - color: var(--flowforge-color-text); - overflow-wrap: anywhere; + color: var(--flowforge-color-text); + overflow-wrap: anywhere; } .flowforge-json-viewer__summary > .flowforge-json-viewer__key, .flowforge-json-viewer__summary > .flowforge-json-viewer__bracket, .flowforge-json-viewer__summary > .flowforge-json-viewer__shape { - flex: 0 0 auto; + flex: 0 0 auto; } .flowforge-json-viewer__bracket { - color: var(--flowforge-color-text-muted); + color: var(--flowforge-color-text-muted); } .flowforge-json-viewer__shape { - display: none; - color: var(--flowforge-color-text-muted); + display: none; + color: var(--flowforge-color-text-muted); } -.flowforge-json-viewer__node:not([open]) > .flowforge-json-viewer__summary .flowforge-json-viewer__shape { - display: inline; +.flowforge-json-viewer__node:not([open]) + > .flowforge-json-viewer__summary + .flowforge-json-viewer__shape { + display: inline; } .flowforge-json-viewer__summary-text { - color: var(--flowforge-color-text-muted); - flex: 1 1 auto; - min-width: 0; - overflow: hidden; - text-overflow: ellipsis; - white-space: nowrap; + color: var(--flowforge-color-text-muted); + flex: 1 1 auto; + min-width: 0; + overflow: hidden; + text-overflow: ellipsis; + white-space: nowrap; } .flowforge-json-viewer__primitive { - overflow-wrap: anywhere; + overflow-wrap: anywhere; } .flowforge-json-viewer__primitive--string { - color: var(--flowforge-color-secondary); + color: var(--flowforge-color-secondary); } .flowforge-json-viewer__primitive--number, .flowforge-json-viewer__primitive--boolean { - color: var(--flowforge-color-primary); + color: var(--flowforge-color-primary); } .flowforge-json-viewer__primitive--null, .flowforge-json-viewer__primitive--undefined { - color: var(--flowforge-color-text-muted); + color: var(--flowforge-color-text-muted); } .flowforge-json-viewer__closing { - color: var(--flowforge-color-text-muted); + color: var(--flowforge-color-text-muted); } diff --git a/apps/extension/src/shared/components/Link/Link.css b/apps/extension/src/shared/components/Link/Link.css index 19a7538..b9632cb 100644 --- a/apps/extension/src/shared/components/Link/Link.css +++ b/apps/extension/src/shared/components/Link/Link.css @@ -1,24 +1,24 @@ /* Link */ .flowforge-link { - font: inherit; - color: var(--flowforge-color-text); - cursor: pointer; - text-decoration: none; - transition: color var(--flowforge-transition-default); + font: inherit; + color: var(--flowforge-color-text); + cursor: pointer; + text-decoration: none; + transition: color var(--flowforge-transition-default); } .flowforge-link:visited { - color: var(--flowforge-color-text); + color: var(--flowforge-color-text); } .flowforge-link:hover, .flowforge-link--primary:hover { - text-decoration: underline; - color: var(--flowforge-color-primary-hover); + text-decoration: underline; + color: var(--flowforge-color-primary-hover); } .flowforge-link--secondary:hover { - color: var(--flowforge-color-secondary-hover); + color: var(--flowforge-color-secondary-hover); } .flowforge-link[aria-disabled='true'] { - color: var(--flowforge-color-text-muted); - cursor: not-allowed; - opacity: 0.5; + color: var(--flowforge-color-text-muted); + cursor: not-allowed; + opacity: 0.5; } diff --git a/apps/extension/src/shared/components/Main/Main.css b/apps/extension/src/shared/components/Main/Main.css index 1200c1b..782a5ff 100644 --- a/apps/extension/src/shared/components/Main/Main.css +++ b/apps/extension/src/shared/components/Main/Main.css @@ -1,17 +1,17 @@ /* Main */ .flowforge-main { - font: var(--flowforge-text-md); - color: var(--flowforge-color-text); - text-align: initial; - text-transform: none; - letter-spacing: normal; - visibility: visible; + font: var(--flowforge-text-md); + color: var(--flowforge-color-text); + text-align: initial; + text-transform: none; + letter-spacing: normal; + visibility: visible; } :where(.flowforge-main, .flowforge-main *) { - margin: 0; - padding: 0; - box-sizing: border-box; + margin: 0; + padding: 0; + box-sizing: border-box; } :where(.flowforge-main [hidden]) { - display: none !important; + display: none !important; } diff --git a/apps/extension/src/shared/components/MarkdownViewer/MarkdownViewer.css b/apps/extension/src/shared/components/MarkdownViewer/MarkdownViewer.css index ea94874..137c519 100644 --- a/apps/extension/src/shared/components/MarkdownViewer/MarkdownViewer.css +++ b/apps/extension/src/shared/components/MarkdownViewer/MarkdownViewer.css @@ -1,13 +1,13 @@ /* Markdown Viewer */ .flowforge-markdown-viewer { - margin: 0; - min-width: 0; - white-space: pre-wrap; - overflow-wrap: anywhere; - font: var(--flowforge-text-monospace-sm); - color: var(--flowforge-color-text); + margin: 0; + min-width: 0; + white-space: pre-wrap; + overflow-wrap: anywhere; + font: var(--flowforge-text-monospace-sm); + color: var(--flowforge-color-text); } .flowforge-markdown-viewer__code { - font: inherit; - color: inherit; + font: inherit; + color: inherit; } diff --git a/apps/extension/src/shared/components/Notice/Notice.css b/apps/extension/src/shared/components/Notice/Notice.css index 4b7381f..8c00349 100644 --- a/apps/extension/src/shared/components/Notice/Notice.css +++ b/apps/extension/src/shared/components/Notice/Notice.css @@ -1,14 +1,14 @@ /* Notice */ .flowforge-notice { - padding: 2px var(--flowforge-pad-md); - border-radius: 0; - font: var(--flowforge-text-xs); - border: none; - color: var(--flowforge-color-text); - background: rgba(var(--flowforge-rgb-secondary), 0.5); - text-align: center; + padding: 2px var(--flowforge-pad-md); + border-radius: 0; + font: var(--flowforge-text-xs); + border: none; + color: var(--flowforge-color-text); + background: rgba(var(--flowforge-rgb-secondary), 0.5); + text-align: center; } .flowforge-notice__text { - font: inherit; - color: inherit; + font: inherit; + color: inherit; } diff --git a/apps/extension/src/shared/components/Star/StarTwinkle.css b/apps/extension/src/shared/components/Star/StarTwinkle.css index 2284947..6142f03 100644 --- a/apps/extension/src/shared/components/Star/StarTwinkle.css +++ b/apps/extension/src/shared/components/Star/StarTwinkle.css @@ -1,39 +1,39 @@ /* Star Twinkle */ .flowforge-stared-twinkle { - position: relative; + position: relative; } .flowforge-stared-twinkle:after { - content: '✦'; - position: absolute; - display: block; - top: 6px; - right: var(--flowforge-pad-sm); - font-size: 14px; - text-transform: none; - letter-spacing: normal; - animation: flowforge-star-twinkle 1.8s ease-in-out infinite; + content: '✦'; + position: absolute; + display: block; + top: 6px; + right: var(--flowforge-pad-sm); + font-size: 14px; + text-transform: none; + letter-spacing: normal; + animation: flowforge-star-twinkle 1.8s ease-in-out infinite; } .flowforge-stared-twinkle:after, .flowforge-stared-twinkle--primary:after { - color: var(--flowforge-color-primary); - text-shadow: - 0 0 4px rgba(var(--flowforge-rgb-primary), 0.45), - 0 0 10px rgba(var(--flowforge-rgb-primary), 0.22); + color: var(--flowforge-color-primary); + text-shadow: + 0 0 4px rgba(var(--flowforge-rgb-primary), 0.45), + 0 0 10px rgba(var(--flowforge-rgb-primary), 0.22); } .flowforge-stared-twinkle--secondary:after { - color: var(--flowforge-color-secondary); - text-shadow: - 0 0 4px rgba(var(--flowforge-rgb-secondary), 0.45), - 0 0 10px rgba(var(--flowforge-rgb-secondary), 0.22); + color: var(--flowforge-color-secondary); + text-shadow: + 0 0 4px rgba(var(--flowforge-rgb-secondary), 0.45), + 0 0 10px rgba(var(--flowforge-rgb-secondary), 0.22); } @keyframes flowforge-star-twinkle { - 0%, - 100% { - opacity: 0.6; - transform: scale(0.85); - } - 50% { - opacity: 1; - transform: scale(1.2); - } -} \ No newline at end of file + 0%, + 100% { + opacity: 0.6; + transform: scale(0.85); + } + 50% { + opacity: 1; + transform: scale(1.2); + } +} diff --git a/apps/extension/src/shared/components/Tabs/Tabs.css b/apps/extension/src/shared/components/Tabs/Tabs.css index 25b4104..eff7899 100644 --- a/apps/extension/src/shared/components/Tabs/Tabs.css +++ b/apps/extension/src/shared/components/Tabs/Tabs.css @@ -1,46 +1,46 @@ /* Tabs */ .flowforge-tabs { - display: flex; - gap: var(--flowforge-pad-sm); - border-bottom: 1px solid var(--flowforge-color-border); - padding: 0; + display: flex; + gap: var(--flowforge-pad-sm); + border-bottom: 1px solid var(--flowforge-color-border); + padding: 0; } .flowforge-tabs__tab { - appearance: none; - border: 0; - border-bottom: 2px solid transparent; - margin: 0 0 -1px; - padding: 0 0 var(--flowforge-pad-xs) 0; - cursor: pointer; - background: transparent; - transition: var(--flowforge-transition-default); + appearance: none; + border: 0; + border-bottom: 2px solid transparent; + margin: 0 0 -1px; + padding: 0 0 var(--flowforge-pad-xs) 0; + cursor: pointer; + background: transparent; + transition: var(--flowforge-transition-default); } .flowforge-tabs__tab-label { - display: inline-flex; - align-items: center; - gap: var(--flowforge-pad-xs); - padding: var(--flowforge-pad-xs) var(--flowforge-pad-sm); - border-radius: var(--flowforge-pad-xs); - color: var(--flowforge-color-text-muted); - font: var(--flowforge-text-sm); + display: inline-flex; + align-items: center; + gap: var(--flowforge-pad-xs); + padding: var(--flowforge-pad-xs) var(--flowforge-pad-sm); + border-radius: var(--flowforge-pad-xs); + color: var(--flowforge-color-text-muted); + font: var(--flowforge-text-sm); } .flowforge-tabs__tab:hover .flowforge-tabs__tab-label { - color: var(--flowforge-color-text); - background: var(--flowforge-color-surface); + color: var(--flowforge-color-text); + background: var(--flowforge-color-surface); } .flowforge-tabs__tab--active { - border-bottom-color: var(--flowforge-color-primary); + border-bottom-color: var(--flowforge-color-primary); } .flowforge-tabs__tab--active .flowforge-tabs__tab-label { - color: var(--flowforge-color-text); + color: var(--flowforge-color-text); } .flowforge-tabs__tab:focus-visible { - outline: none; + outline: none; } .flowforge-tabs__tab:focus-visible .flowforge-tabs__tab-label { - outline: 2px solid rgba(var(--flowforge-rgb-primary), 0.45); + outline: 2px solid rgba(var(--flowforge-rgb-primary), 0.45); } .flowforge-tabs__tab:disabled { - cursor: not-allowed; - opacity: 0.5; + cursor: not-allowed; + opacity: 0.5; } diff --git a/apps/extension/src/shared/components/Tabs/Tabs.tsx b/apps/extension/src/shared/components/Tabs/Tabs.tsx index 27c6f58..d1b67f1 100644 --- a/apps/extension/src/shared/components/Tabs/Tabs.tsx +++ b/apps/extension/src/shared/components/Tabs/Tabs.tsx @@ -40,9 +40,7 @@ export function Tabs({ tabs, activeId, onChange, autoFocus = false, getTabId, ge }; const handleKeyDown = (e: KeyboardEvent) => { - const enabledTabs = tabs - .map((tab, index) => ({ tab, index })) - .filter(({ tab }) => !tab.disabled); + const enabledTabs = tabs.map((tab, index) => ({ tab, index })).filter(({ tab }) => !tab.disabled); const currentEnabledIndex = enabledTabs.findIndex(({ tab }) => tab.id === activeId); if (currentEnabledIndex === -1) return; diff --git a/apps/extension/src/shared/components/Tabs/index.ts b/apps/extension/src/shared/components/Tabs/index.ts index 1ff22eb..941e6ba 100644 --- a/apps/extension/src/shared/components/Tabs/index.ts +++ b/apps/extension/src/shared/components/Tabs/index.ts @@ -1 +1 @@ -export { Tabs } from './Tabs'; \ No newline at end of file +export { Tabs } from './Tabs'; diff --git a/apps/extension/src/shared/styles/modifiers.css b/apps/extension/src/shared/styles/modifiers.css index b592b70..2a927d6 100644 --- a/apps/extension/src/shared/styles/modifiers.css +++ b/apps/extension/src/shared/styles/modifiers.css @@ -1,13 +1,13 @@ /* Modifiers: color */ .flowforge-u-color-primary { - color: var(--flowforge-color-primary); + color: var(--flowforge-color-primary); } .flowforge-u-color-secondary { - color: var(--flowforge-color-secondary); + color: var(--flowforge-color-secondary); } .flowforge-u-color-danger { - color: var(--flowforge-color-danger); + color: var(--flowforge-color-danger); } .flowforge-u-color-muted { - color: var(--flowforge-color-text-muted); -} \ No newline at end of file + color: var(--flowforge-color-text-muted); +} diff --git a/apps/extension/src/shared/styles/tokens.css b/apps/extension/src/shared/styles/tokens.css index 3023cde..738fe10 100644 --- a/apps/extension/src/shared/styles/tokens.css +++ b/apps/extension/src/shared/styles/tokens.css @@ -1,81 +1,83 @@ /* Tokens */ .flowforge-main, -.flowforge-main[data-theme="light"] { - /** Colors **/ - --flowforge-color-primary: #6d28d9; - --flowforge-color-primary-hover: #7c3aed; - --flowforge-color-secondary: #f97316; - --flowforge-color-secondary-hover: #fb923c; - --flowforge-color-danger: #dc2626; - --flowforge-color-bg: #f1f5f9; - --flowforge-color-surface: #ffffff; - --flowforge-color-border: #cbd5f5; - --flowforge-color-muted: #475569; - --flowforge-color-text: #0f172a; - --flowforge-color-text-on-dark: #e5e7eb; - --flowforge-color-text-muted: var(--flowforge-color-muted); +.flowforge-main[data-theme='light'] { + /** Colors **/ + --flowforge-color-primary: #6d28d9; + --flowforge-color-primary-hover: #7c3aed; + --flowforge-color-secondary: #f97316; + --flowforge-color-secondary-hover: #fb923c; + --flowforge-color-danger: #dc2626; + --flowforge-color-bg: #f1f5f9; + --flowforge-color-surface: #ffffff; + --flowforge-color-border: #cbd5f5; + --flowforge-color-muted: #475569; + --flowforge-color-text: #0f172a; + --flowforge-color-text-on-dark: #e5e7eb; + --flowforge-color-text-muted: var(--flowforge-color-muted); - /* RGB versions */ - --flowforge-rgb-text: 15, 23, 42; - --flowforge-rgb-primary: 109, 40, 217; - --flowforge-rgb-secondary: 249, 115, 22; - --flowforge-rgb-danger: 220, 38, 38; - --flowforge-rgb-shadow: 0, 0, 0; + /* RGB versions */ + --flowforge-rgb-text: 15, 23, 42; + --flowforge-rgb-primary: 109, 40, 217; + --flowforge-rgb-secondary: 249, 115, 22; + --flowforge-rgb-danger: 220, 38, 38; + --flowforge-rgb-shadow: 0, 0, 0; } -.flowforge-main[data-theme="dark"] { - /** Colors **/ - --flowforge-color-primary: #8b5cf6; - --flowforge-color-primary-hover: #a78bfa; - --flowforge-color-secondary: #fb923c; - --flowforge-color-secondary-hover: #fdba74; - --flowforge-color-danger: #f87171; - --flowforge-color-bg: #0b1020; - --flowforge-color-surface: #12172a; - --flowforge-color-border: #2a3150; - --flowforge-color-muted: #94a3b8; - --flowforge-color-text: #e5e7eb; - --flowforge-color-text-on-dark: #e5e7eb; - --flowforge-color-text-muted: var(--flowforge-color-muted); +.flowforge-main[data-theme='dark'] { + /** Colors **/ + --flowforge-color-primary: #8b5cf6; + --flowforge-color-primary-hover: #a78bfa; + --flowforge-color-secondary: #fb923c; + --flowforge-color-secondary-hover: #fdba74; + --flowforge-color-danger: #f87171; + --flowforge-color-bg: #0b1020; + --flowforge-color-surface: #12172a; + --flowforge-color-border: #2a3150; + --flowforge-color-muted: #94a3b8; + --flowforge-color-text: #e5e7eb; + --flowforge-color-text-on-dark: #e5e7eb; + --flowforge-color-text-muted: var(--flowforge-color-muted); - /* RGB versions */ - --flowforge-rgb-text: 229, 231, 235; - --flowforge-rgb-primary: 139, 92, 246; - --flowforge-rgb-secondary: 251, 146, 60; - --flowforge-rgb-danger: 248, 113, 113; - --flowforge-rgb-shadow: 120, 120, 120; + /* RGB versions */ + --flowforge-rgb-text: 229, 231, 235; + --flowforge-rgb-primary: 139, 92, 246; + --flowforge-rgb-secondary: 251, 146, 60; + --flowforge-rgb-danger: 248, 113, 113; + --flowforge-rgb-shadow: 120, 120, 120; } .flowforge-main { - /** Typography **/ - --flowforge-font-family: system-ui, -apple-system, BlinkMacSystemFont, 'Segoe UI', Roboto, sans-serif; - --flowforge-font-family-monospace: ui-monospace, SFMono-Regular, Menlo, Monaco, Consolas, "Liberation Mono", monospace; + /** Typography **/ + --flowforge-font-family: + system-ui, -apple-system, BlinkMacSystemFont, 'Segoe UI', Roboto, sans-serif; + --flowforge-font-family-monospace: + ui-monospace, SFMono-Regular, Menlo, Monaco, Consolas, 'Liberation Mono', monospace; - --flowforge-text-xs: 400 11px / 1.6 var(--flowforge-font-family); - --flowforge-text-sm: 400 12px / 1.5 var(--flowforge-font-family); - --flowforge-text-md: 400 14px / 1.4 var(--flowforge-font-family); - --flowforge-text-lg: 400 16px / 1.5 var(--flowforge-font-family); + --flowforge-text-xs: 400 11px / 1.6 var(--flowforge-font-family); + --flowforge-text-sm: 400 12px / 1.5 var(--flowforge-font-family); + --flowforge-text-md: 400 14px / 1.4 var(--flowforge-font-family); + --flowforge-text-lg: 400 16px / 1.5 var(--flowforge-font-family); - --flowforge-text-h4: 600 13px / 1.4 var(--flowforge-font-family); - --flowforge-text-h3: 600 14px / 1.4 var(--flowforge-font-family); - --flowforge-text-h2: 600 18px / 1.2 var(--flowforge-font-family); + --flowforge-text-h4: 600 13px / 1.4 var(--flowforge-font-family); + --flowforge-text-h3: 600 14px / 1.4 var(--flowforge-font-family); + --flowforge-text-h2: 600 18px / 1.2 var(--flowforge-font-family); - --flowforge-text-monospace-xs: 400 11px / 1.65 var(--flowforge-font-family-monospace); - --flowforge-text-monospace-sm: 400 12px / 1.55 var(--flowforge-font-family-monospace); + --flowforge-text-monospace-xs: 400 11px / 1.65 var(--flowforge-font-family-monospace); + --flowforge-text-monospace-sm: 400 12px / 1.55 var(--flowforge-font-family-monospace); - /** Sizes **/ - --flowforge-pad-xs: 6px; - --flowforge-pad-sm: 8px; - --flowforge-pad-md: 10px; - --flowforge-pad-lg: 12px; - --flowforge-pad-xl: 16px; + /** Sizes **/ + --flowforge-pad-xs: 6px; + --flowforge-pad-sm: 8px; + --flowforge-pad-md: 10px; + --flowforge-pad-lg: 12px; + --flowforge-pad-xl: 16px; - --flowforge-icon-size-sm: 14px; - --flowforge-icon-size-md: 16px; - --flowforge-icon-size-lg: 18px; + --flowforge-icon-size-sm: 14px; + --flowforge-icon-size-md: 16px; + --flowforge-icon-size-lg: 18px; - --flowforge-app-offset: 20px; + --flowforge-app-offset: 20px; - /** Animation **/ - --flowforge-transition-default: background 0.2s ease, transform 0.2s ease, opacity 0.2s ease; + /** Animation **/ + --flowforge-transition-default: background 0.2s ease, transform 0.2s ease, opacity 0.2s ease; } diff --git a/apps/extension/tsconfig.json b/apps/extension/tsconfig.json index 70f712b..8a2d1e3 100644 --- a/apps/extension/tsconfig.json +++ b/apps/extension/tsconfig.json @@ -1,7 +1,5 @@ { - "extends": [ - "@tsconfig/vite-react/tsconfig.json", - ], + "extends": ["@tsconfig/vite-react/tsconfig.json"], "compilerOptions": { "lib": ["DOM", "DOM.Iterable", "ESNext"], "types": ["chrome", "vite/client"], diff --git a/docs/DOM-TO-RAG-PIPELINE.md b/docs/DOM-TO-RAG-PIPELINE.md index 6a458fd..4d9dc23 100644 --- a/docs/DOM-TO-RAG-PIPELINE.md +++ b/docs/DOM-TO-RAG-PIPELINE.md @@ -21,11 +21,13 @@ The DOM is parsed and normalized into a structured `PageTrail`. This stage captures both the raw structure and contextual meaning of the UI. Includes: + - Page basics (title, URL, metadata) - Content elements (text, headings) - Interactive elements (buttons, inputs, links) Each element contains: + - Attributes and properties - Semantic roles and labels - Embedded layout and context: @@ -34,13 +36,14 @@ Each element contains: Each element is also assigned an importance score. -This layer defines *what exists on the page and how it is structured*. +This layer defines _what exists on the page and how it is structured_. ### 2. Transforming to semantic representation Transforms structured page data into AI-friendly, human-readable `IndexableDocuments` enriched with metadata for retrieval. Includes: + - Chunking (splitting content into manageable pieces) - Semantic formatting (constructing descriptions using element attributes, roles, labels, and context) - Metadata enrichment: @@ -51,13 +54,14 @@ Includes: - Content documents (informational text) - Interactive documents (actionable UI elements) -This layer defines *what the page means and how it can be interpreted and retrieved by AI*. +This layer defines _what the page means and how it can be interpreted and retrieved by AI_. ### 3. Indexing / retrieval Documents are embedded, stored in a vector database, and retrieved at query time based on semantic similarity. Includes: + - Embedding documents into vector representations - Storing them for efficient similarity search - Retrieving top-k relevant documents for a given query @@ -69,11 +73,13 @@ This layer enables fast and context-aware access to relevant UI information. Retrieved documents are rescored to improve relevance using a combination of semantic similarity and UI-specific signals. A hybrid scoring function is applied: + ``` score = semantic_score * A + importance_score * B ``` Where: + - `semantic_score` reflects how well the document matches the query - `importance_score` reflects UI relevance (e.g., visibility, role, position, interaction potential) @@ -84,10 +90,12 @@ This step prioritizes elements that are not only semantically relevant, but also Transforms ranked documents into final, actionable outputs that Agent can directly use. Includes: + - **Selection** — choosing the most relevant candidates from reranked documents - **Mapping** — converting documents into structured UI targets Produces: + - Element references (selector, dataId) - User-facing descriptions - Action hints (click, input, navigate) diff --git a/packages/contract/src/core/dataId.ts b/packages/contract/src/core/dataId.ts index c573c6c..29be4fb 100644 --- a/packages/contract/src/core/dataId.ts +++ b/packages/contract/src/core/dataId.ts @@ -11,4 +11,3 @@ export function generateDataId(): string { export function validateDataId(dataId: string): boolean { return /^ff[0-9a-f]{8}$/i.test(dataId); } - diff --git a/packages/contract/src/index.ts b/packages/contract/src/index.ts index 2ab9ea1..50a1d0f 100644 --- a/packages/contract/src/index.ts +++ b/packages/contract/src/index.ts @@ -3,4 +3,4 @@ export * from './types/agentResult.ts'; export type { PageTrail } from '@flowforge/page-trail'; -export { generateDataId, validateDataId } from './core/dataId.ts'; \ No newline at end of file +export { generateDataId, validateDataId } from './core/dataId.ts'; diff --git a/packages/page-trail/README.md b/packages/page-trail/README.md index 7b3098a..39a10eb 100644 --- a/packages/page-trail/README.md +++ b/packages/page-trail/README.md @@ -8,14 +8,15 @@ Used as the core input for RAG, search, and UI guidance. ```ts interface PageTrail { - basics: PageBasics; - content: ContentElement[]; - interactive: InteractiveElement[]; - timestamp: number; + basics: PageBasics; + content: ContentElement[]; + interactive: InteractiveElement[]; + timestamp: number; } ``` ## Basics + - url, title, description, language - viewport (width, height, scroll) @@ -26,8 +27,8 @@ Extracted from text elements (headings, paragraphs, lists, etc). Each item: - text -- type: heading | text -- selector, dataId, bbox +- type: heading | text +- selector, dataId, bbox - context (path + optional sectionName) - importanceScore [0..1] @@ -43,17 +44,17 @@ Extracted from buttons, links, inputs, ARIA roles. Each item: - role → type (button | input | select | link) -- text + labels +- text + labels - state (disabled, checked, etc) - link (if any) -- selector, dataId, bbox -- inViewport, aboveTheFold -- context +- selector, dataId, bbox +- inViewport, aboveTheFold +- context - importanceScore [0..1] Filtered: -- hidden elements +- hidden elements - sensitive inputs (passwords, OTP, card data, etc) ## Context @@ -72,8 +73,8 @@ Heuristic scoring normalized to [0..1]. Used to: -- rank elements -- apply top-N limits +- rank elements +- apply top-N limits - improve retrieval quality ## Usage @@ -93,7 +94,7 @@ Used for indexing, retrieval, and tool responses. ### Content ```ts -formatContentElement(el) +formatContentElement(el); ``` → heading. Pricing. in section "Plans". inside "main content" @@ -101,7 +102,7 @@ formatContentElement(el) ### Interactive ```ts -formatInteractiveElement(el) +formatInteractiveElement(el); ``` → internal link. click action. name "Pricing". visible on initial screen. inside "navigation" @@ -109,15 +110,16 @@ formatInteractiveElement(el) ### Short format ```ts -formatContentElementShort(el) -formatInteractiveElementShort(el) -formatConcatElements(items) +formatContentElementShort(el); +formatInteractiveElementShort(el); +formatConcatElements(items); ``` + Used for previews and compact lists. ## Notes - DOM → structured model (LLM-independent) -- Single-page snapshot -- Optimized for search and UI actions -- Safe by default (sensitive fields excluded) \ No newline at end of file +- Single-page snapshot +- Optimized for search and UI actions +- Safe by default (sensitive fields excluded) diff --git a/packages/page-trail/src/collector/PageTrailCollector.ts b/packages/page-trail/src/collector/PageTrailCollector.ts index bfb1baf..9a37d47 100644 --- a/packages/page-trail/src/collector/PageTrailCollector.ts +++ b/packages/page-trail/src/collector/PageTrailCollector.ts @@ -25,8 +25,7 @@ export interface CollectorOptions { getElementCssSelector?: (el: Element) => string; } -type ResolvedCollectorOptions = - Required> & +type ResolvedCollectorOptions = Required> & Pick; /** diff --git a/packages/page-trail/src/collector/extractors/context.ts b/packages/page-trail/src/collector/extractors/context.ts index 3cc4473..9951469 100644 --- a/packages/page-trail/src/collector/extractors/context.ts +++ b/packages/page-trail/src/collector/extractors/context.ts @@ -11,10 +11,7 @@ const CONTEXT_PATH_HOIST_DEPTH = 6; const CONTEXT_PATH_ITEMS_LIMIT = 4; function isGoodContextSectionName(text: string): boolean { - return ( - text.length >= CONTEXT_SECTION_NAME_MIN_LENGTH && - text.length <= CONTEXT_SECTION_NAME_MAX_LENGTH - ); + return text.length >= CONTEXT_SECTION_NAME_MIN_LENGTH && text.length <= CONTEXT_SECTION_NAME_MAX_LENGTH; } /** diff --git a/packages/page-trail/src/collector/extractors/primitive/label.ts b/packages/page-trail/src/collector/extractors/primitive/label.ts index cf9c2f4..1369e7e 100644 --- a/packages/page-trail/src/collector/extractors/primitive/label.ts +++ b/packages/page-trail/src/collector/extractors/primitive/label.ts @@ -1,7 +1,6 @@ import { dedupeBy, normalizeText } from '../../../utils/index.ts'; import type { ElementLabel } from '../../../types/index.ts'; - /** * Resolves the `aria-labelledby` attribute of an element into a normalized label string. * diff --git a/packages/page-trail/src/collector/extractors/primitive/state.ts b/packages/page-trail/src/collector/extractors/primitive/state.ts index 1d5e279..b3eb157 100644 --- a/packages/page-trail/src/collector/extractors/primitive/state.ts +++ b/packages/page-trail/src/collector/extractors/primitive/state.ts @@ -1,7 +1,6 @@ import type { InteractiveElementState } from '../../../types/index.ts'; import { getElementBooleanAttribute } from './attr.ts'; - /** * Extracts the state of an interactive element by reading native HTML properties and ARIA attributes. * ARIA attributes take precedence over native properties when both are present. diff --git a/packages/page-trail/src/collector/extractors/primitive/view.test.ts b/packages/page-trail/src/collector/extractors/primitive/view.test.ts index ebcb717..06ae8ad 100644 --- a/packages/page-trail/src/collector/extractors/primitive/view.test.ts +++ b/packages/page-trail/src/collector/extractors/primitive/view.test.ts @@ -56,9 +56,7 @@ describe('viewport helpers', () => { const viewport = { width: 1024, height: 600, scrollY: 100, scrollHeight: 2000 }; it('detects whether a box intersects the viewport', () => { - expect( - isInViewport({ top: 0, bottom: 80, left: 0, right: 10, width: 10, height: 80 }, viewport), - ).toBeTruthy(); + expect(isInViewport({ top: 0, bottom: 80, left: 0, right: 10, width: 10, height: 80 }, viewport)).toBeTruthy(); expect( isInViewport({ top: 800, bottom: 900, left: 0, right: 10, width: 10, height: 100 }, viewport), ).toBeFalsy(); diff --git a/packages/page-trail/src/collector/importance/scoring.ts b/packages/page-trail/src/collector/importance/scoring.ts index 38559fd..1a7b3b2 100644 --- a/packages/page-trail/src/collector/importance/scoring.ts +++ b/packages/page-trail/src/collector/importance/scoring.ts @@ -1,2 +1,2 @@ export { scoreContentElement } from './content.ts'; -export { scoreInteractiveElement } from './interactive.ts'; \ No newline at end of file +export { scoreInteractiveElement } from './interactive.ts'; diff --git a/packages/page-trail/src/collector/importance/utils.test.ts b/packages/page-trail/src/collector/importance/utils.test.ts index 6747828..ab80e1a 100644 --- a/packages/page-trail/src/collector/importance/utils.test.ts +++ b/packages/page-trail/src/collector/importance/utils.test.ts @@ -1,11 +1,6 @@ import { describe, expect, it } from 'vitest'; -import { - getMaxImportanceScore, - getMinImportanceScore, - normalizeImportanceScore, - readContextPath, -} from './utils'; +import { getMaxImportanceScore, getMinImportanceScore, normalizeImportanceScore, readContextPath } from './utils'; describe('importance utils', () => { it('calculates min and max scores from weights', () => { diff --git a/packages/page-trail/src/semantic/format.ts b/packages/page-trail/src/semantic/format.ts index 92cf872..2ef5a42 100644 --- a/packages/page-trail/src/semantic/format.ts +++ b/packages/page-trail/src/semantic/format.ts @@ -1,9 +1,4 @@ -import type { - BaseElement, - ContainerElementRole, - ContentElement, - InteractiveElement, -} from '../types/index.ts'; +import type { BaseElement, ContainerElementRole, ContentElement, InteractiveElement } from '../types/index.ts'; const formatSeparator = { PARTS: '. ', @@ -240,11 +235,12 @@ export function formatInteractiveElement(el: InteractiveElement): string { * formatSampleHeadings([{ type: 'text', tag: 'p', text: 'No headings here', importanceScore: 1 }]) */ export function formatSampleHeadings(contentElements: ContentElement[], headingsLimit = 5): string { - return formatConcatElements(contentElements - .filter((el) => el.type === 'heading') - .sort((a, b) => b.importanceScore - a.importanceScore) - .slice(0, headingsLimit) - .map((el) => formatContentElementShort(el)), + return formatConcatElements( + contentElements + .filter((el) => el.type === 'heading') + .sort((a, b) => b.importanceScore - a.importanceScore) + .slice(0, headingsLimit) + .map((el) => formatContentElementShort(el)), ); } @@ -279,10 +275,11 @@ export function formatSampleHeadings(contentElements: ContentElement[], headings * ]) */ export function formatSampleInteractions(interactiveElements: InteractiveElement[], interactionsLimit = 10): string { - return formatConcatElements(interactiveElements - .filter((el) => el.labels.length > 0 || el.text) - .sort((a, b) => b.importanceScore - a.importanceScore) - .slice(0, interactionsLimit) - .map((el) => formatInteractiveElementShort(el)), + return formatConcatElements( + interactiveElements + .filter((el) => el.labels.length > 0 || el.text) + .sort((a, b) => b.importanceScore - a.importanceScore) + .slice(0, interactionsLimit) + .map((el) => formatInteractiveElementShort(el)), ); } diff --git a/packages/page-trail/src/types/index.ts b/packages/page-trail/src/types/index.ts index 93d09b8..e1c6d61 100644 --- a/packages/page-trail/src/types/index.ts +++ b/packages/page-trail/src/types/index.ts @@ -1 +1 @@ -export type * from './pageTrail.ts'; \ No newline at end of file +export type * from './pageTrail.ts'; diff --git a/packages/page-trail/src/utils/index.ts b/packages/page-trail/src/utils/index.ts index 0392cd1..57d247f 100644 --- a/packages/page-trail/src/utils/index.ts +++ b/packages/page-trail/src/utils/index.ts @@ -1,2 +1,2 @@ export * from './text.ts'; -export * from './array.ts'; \ No newline at end of file +export * from './array.ts'; From 43be4c0ef9273691c074c424a4235ab5b43324e9 Mon Sep 17 00:00:00 2001 From: cerberus-ab Date: Sun, 16 Aug 2026 11:24:23 +0200 Subject: [PATCH 18/20] Documentation --- .agents/rules/agents.md | 23 ++++++++ .agents/rules/changelog.md | 32 ++++++++++ .agents/skills/code-review/SKILL.md | 9 ++- .agents/skills/update-changelog/SKILL.md | 24 ++++++++ AGENTS.md | 3 + CHANGELOG.md | 14 +++++ README.md | 17 ++---- apps/backend/.env.example | 2 +- apps/backend/README.md | 33 ++++------- apps/extension/README.md | 55 +++++++---------- docs/ARCHITECTURE.md | 60 ++++++++----------- docs/BACKLOG.md | 8 ++- docs/DOM-TO-RAG-PIPELINE.md | 47 +++++++-------- packages/page-trail/README.md | 75 +++++------------------- 14 files changed, 209 insertions(+), 193 deletions(-) create mode 100644 .agents/rules/agents.md create mode 100644 .agents/rules/changelog.md create mode 100644 .agents/skills/update-changelog/SKILL.md diff --git a/.agents/rules/agents.md b/.agents/rules/agents.md new file mode 100644 index 0000000..dbbabdb --- /dev/null +++ b/.agents/rules/agents.md @@ -0,0 +1,23 @@ +# Agent Guidance Rules + +Use these rules when creating or updating project agent guidance. + +## Skills + +- Store project skills in `.agents/skills//SKILL.md`. +- Use lowercase hyphen-case skill names. +- Keep skills short and consistent with the existing files in `.agents/skills`. +- Include only `name` and `description` in YAML frontmatter. +- Make `description` specific enough to trigger the skill in the right tasks. +- In the body, list required context and a short workflow. +- Reference `.agents/rules/*` instead of duplicating rule text in skills. +- Do not add `agents/openai.yaml`, scripts, references, assets, or extra docs + unless the user explicitly asks or the skill cannot work without them. +- Add every new project skill to `AGENTS.md`. + +## Rules + +- Store project rules in `.agents/rules/.md`. +- Keep rules concise, task-focused, and reusable by multiple skills. +- Add every new project rule to `AGENTS.md`. +- Prefer updating an existing rule over creating overlapping guidance. diff --git a/.agents/rules/changelog.md b/.agents/rules/changelog.md new file mode 100644 index 0000000..bca2287 --- /dev/null +++ b/.agents/rules/changelog.md @@ -0,0 +1,32 @@ +# Changelog Rules + +Use these rules when creating, updating, or reviewing `CHANGELOG.md`. + +## Goal + +Keep `CHANGELOG.md` as a concise record of notable project changes. + +## Source of truth + +Use the current repository diff and existing `CHANGELOG.md` format as the source +of truth. Do not add entries for work that is not present in the codebase. + +## Format + +- Keep the top-level title as `# Changelog`. +- Keep the introductory sentence below the title. +- Put unreleased branch changes under `## [Unreleased]`. +- Group released changes by version using `## [x.y.z] - YYYY-MM-DD`. +- Keep `## [Unreleased]` above released versions; keep released versions in reverse chronological order. +- Group entries under `### Added`, `### Changed`, `### Fixed`, `### Removed`, or another Keep a Changelog-style category only when it is needed. +- Write entries as Markdown bullet points. +- Keep each entry short, user-visible, and specific. +- Use links only when they add useful context, such as a public demo URL. + +## Rules + +- Record notable user-visible, behavior, documentation, packaging, or architecture changes. +- Do not include low-level implementation noise unless it changes behavior, public contracts, or project usage. +- Do not duplicate the backlog, commit history, or pull request description. +- Do not invent release dates or versions. If `## [Unreleased]` is absent, create it above the latest released version and add branch changes there. +- Preserve existing wording and categories unless the current change requires a precise update. diff --git a/.agents/skills/code-review/SKILL.md b/.agents/skills/code-review/SKILL.md index b1f0936..2b1587c 100644 --- a/.agents/skills/code-review/SKILL.md +++ b/.agents/skills/code-review/SKILL.md @@ -1,6 +1,6 @@ --- name: code-review -description: Review FlowForge branch changes against master/main, architecture rules, code-style rules, and CHANGELOG.md. +description: Review FlowForge branch changes against master/main, architecture rules, code-style rules, changelog rules, CHANGELOG.md, and docs/BACKLOG.md. --- # Code Review @@ -11,7 +11,9 @@ Use this skill when reviewing branch changes. - `.agents/rules/architecture.md` - `.agents/rules/code-style.md` +- `.agents/rules/changelog.md` - `CHANGELOG.md` +- `docs/BACKLOG.md` ## Workflow @@ -20,5 +22,6 @@ Use this skill when reviewing branch changes. 3. Review architecture and code style using the required context. 4. For `packages/page-trail`, check that behavior changes are well covered by tests. 5. For `apps/extension`, check lightweight implementation, component state ownership, async handling, a11y truthfulness, page isolation, and selector safety. -6. Verify behavior or user-visible changes are reflected in `CHANGELOG.md`. -7. Report findings by severity with file, problem, impact, and suggested fix. +6. Verify behavior or user-visible changes are reflected in `CHANGELOG.md` according to `.agents/rules/changelog.md`. +7. Verify completed work is reflected in `docs/BACKLOG.md`: if a backlog item was implemented, it should be removed from the backlog. +8. Report findings by severity with file, problem, impact, and suggested fix. diff --git a/.agents/skills/update-changelog/SKILL.md b/.agents/skills/update-changelog/SKILL.md new file mode 100644 index 0000000..0a9137b --- /dev/null +++ b/.agents/skills/update-changelog/SKILL.md @@ -0,0 +1,24 @@ +--- +name: update-changelog +description: Update FlowForge CHANGELOG.md from changes since the latest release tag using changelog rules. +--- + +# Update Changelog + +Use this skill when updating `CHANGELOG.md` from changes since the latest release tag. + +## Required context + +- `.agents/rules/changelog.md` +- `CHANGELOG.md` + +## Workflow + +1. Find the latest release tag using version tags such as `vX.Y.Z`; do not use `master` or `main` as the comparison baseline. +2. Inspect `git status --short` and the diff from the latest release tag. +3. Read `.agents/rules/changelog.md` and follow it strictly. +4. Inspect existing `CHANGELOG.md` format and target section. +5. Add only notable changes present in the branch diff. +6. Do not add low-level implementation noise, duplicate existing entries, or invent versions/dates. +7. If the target release section is unclear, ask before editing. +8. Report the section changed and a short summary of entries added or omitted. diff --git a/AGENTS.md b/AGENTS.md index a916e82..14161c9 100644 --- a/AGENTS.md +++ b/AGENTS.md @@ -17,9 +17,12 @@ Claude compatibility shim that imports `AGENTS.md`; if they ever conflict, Shared agent guidance lives in `.agents/`. - `.agents/rules/architecture.md` +- `.agents/rules/agents.md` +- `.agents/rules/changelog.md` - `.agents/rules/code-style.md` - `.agents/rules/documentation.md` - `.agents/skills/code-review/SKILL.md` +- `.agents/skills/update-changelog/SKILL.md` - `.agents/skills/update-docs/SKILL.md` Use relevant rules and skills before making changes. diff --git a/CHANGELOG.md b/CHANGELOG.md index 31d6be7..d313ec6 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -2,6 +2,20 @@ All notable changes to the project will be documented in this file. +## [Unreleased] + +### Added + +- Page Inspector for viewing PageTrail `basics`, `content`, `interactive` elements, `metadata`, and semantic Markdown output. +- PageTrail snapshot `metadata` with collection counts, limits, timestamps, and duration. +- CI workflow for linting, type checks, builds, and PageTrail unit tests. +- Project context for agents, including shared rules, skills, and navigation guidance. + +### Changed + +- Renamed PageModel to PageTrail across the project. +- Improved PageTrail data collection performance and semantic formatting. + ## [0.1.4] - 2026-05-03 ### Added diff --git a/README.md b/README.md index f1c847c..1b4fcd3 100644 --- a/README.md +++ b/README.md @@ -4,8 +4,8 @@ _Forging your experience..._ FlowForge is a Web Onboarding Assistant that turns user intent into actionable UI guidance inside web applications. -- Explore content and interface instantly -- Ask anything about the page +- Ask questions about the current page +- Find relevant UI elements - Get step-by-step onboarding flows ## Demo @@ -14,9 +14,7 @@ Try the live **Demo** at [useflowforge.app](https://useflowforge.app/) ✦ ## Overview -**Why?** Modern web apps are powerful – but hard to navigate. - -The Assistant lets you ask questions in natural language and get immediate, contextual guidance directly in the UI. +Modern web apps are powerful but hard to navigate. The Assistant lets you ask natural-language questions and get contextual guidance directly in the UI. It can: @@ -24,8 +22,6 @@ It can: - explain what's on the page - guide users step-by-step through workflows -It works on any website out of the box and becomes product-aware when integrated. - **Under the hood:** browser extension + AI agent (ReAct) + RAG pipeline. ## Use cases @@ -63,12 +59,7 @@ npm i npm start ``` -This will: - -- Install dependencies -- Build backend and extension -- Guide you to install the extension in Chrome -- Start the backend at http://localhost:3477 +This installs dependencies, builds backend and extension, guides Chrome installation, and starts the backend at http://localhost:3477.

diff --git a/apps/backend/.env.example b/apps/backend/.env.example index e034069..46f7a1f 100644 --- a/apps/backend/.env.example +++ b/apps/backend/.env.example @@ -20,7 +20,7 @@ OLLAMA_LOCAL_EMBEDDING=nomic-embed-text # OpenAI API, requires API key OPENAI_API_KEY= OPENAI_MODEL=gpt-4o-mini -OPENAI_EMBEDDING_MODEL=text-embedding-3-small +OPENAI_EMBEDDING=text-embedding-3-small # Agent Settings AGENT_TOOL_CALL_LIMIT=6 diff --git a/apps/backend/README.md b/apps/backend/README.md index 997f267..5c93f21 100644 --- a/apps/backend/README.md +++ b/apps/backend/README.md @@ -9,8 +9,9 @@ AI agent backend that processes user queries, understands page context, and gene - Run AI agent with ReAct pattern (LangGraph) - Process user queries and page data - Perform semantic search over indexed content -- Manage vector storage and embeddings (LanceDB) +- Manage embeddings and LanceDB vector storage - Expose HTTP API for extension +- Track in-memory query analytics ## Run @@ -19,24 +20,19 @@ npm i cp .env.example .env npm run build npm start -``` - -Development mode with auto-reload: - -```bash npm run dev ``` -Server runs on http://localhost:3477 - ## Configuration Configured via `.env` file: +- `PORT`, `LOG_LEVEL` - `LLM_PROVIDER` — `ollama-local` or `openai` -- `OLLAMA_LOCAL_MODEL` / `OPENAI_MODEL` — model names -- `INDEXER_CHUNK_SIZE` — document chunk size for RAG -- `AGENT_TOOL_CALL_LIMIT` — max tool calls per query +- `OLLAMA_LOCAL_MODEL`, `OPENAI_MODEL` +- `OLLAMA_LOCAL_EMBEDDING`, `OPENAI_EMBEDDING` +- `INDEXER_CHUNK_SIZE`, `INDEXER_CHUNK_OVERLAP_RATIO` — RAG chunking +- `AGENT_TOOL_CALL_LIMIT`, `AGENT_RECURSION_LIMIT`, `AGENT_TEMPERATURE`, `AGENT_MAX_TOKENS` — agent runtime See [.env.example](.env.example) for all options. @@ -44,18 +40,13 @@ See [.env.example](.env.example) for all options. - `POST /query` — main agent entry point (question + page data) - `POST /search` — semantic search over indexed content -- `GET /analytics` — usage data and query tracking -- `GET /health` — service status - -## Key parts +- `GET /analytics` / `GET /health` — analytics and service status -- `agent/` — ReAct agent implementation and tool definitions -- `indexer/` — RAG pipeline, embeddings, and vector search -- `analytics/` — query tracking and usage metrics +`/query` expects `question`, `pageTrail`, and `domain`; it returns answer, mode, optional topic, matched elements, and execution metadata. ## Notes -- Single-page context only (no cross-page memory) -- In-memory analytics (resets on restart) -- Requires running LLM provider (Ollama or OpenAI API key) +- Single-page context; no cross-page memory +- In-memory analytics; resets on restart +- Requires Ollama or OpenAI API key - See [Architecture](../../docs/ARCHITECTURE.md) for system design diff --git a/apps/extension/README.md b/apps/extension/README.md index ebc6899..b93f5da 100644 --- a/apps/extension/README.md +++ b/apps/extension/README.md @@ -2,37 +2,30 @@ ## Purpose -Chrome extension that handles UI interaction, page data extraction, and visual guidance (highlighting and workflows) based on backend responses. +Chrome extension and embeddable browser runtime that handle UI interaction, page data extraction, and visual guidance based on backend responses. ## Responsibilities -- Extract page structure (content, interactive elements, navigation) +- Extract page structure (`PageTrail`) - Send user queries and page context to backend -- Render answers in popup UI -- Highlight elements and guide workflows on the page -- Handle messaging between popup, page runtime (content scripts), and backend +- Render answers, highlights, wizard steps, and Inspector UI +- Route messages between popup, page runtime, and backend +- Store settings and per-domain question history locally ## Run ```bash npm i npm run build -``` - -Development mode with auto-rebuild: - -```bash npm run dev +npm run sandbox ``` -## Build options - -The extension has two build modes: +## Builds -- **Chrome extension** (`build:chrome`) — full browser extension for Chrome -- **Embed integration** (`build:embed`) — standalone runtime for embedding on any website - -Both builds are created by default with `npm run build`, or can be built individually. +- `npm run build:chrome` — Chrome extension +- `npm run build:embed` — embeddable runtime +- `npm run build` — both builds ## Load in Chrome @@ -41,32 +34,26 @@ Both builds are created by default with `npm run build`, or can be built individ 3. Click **Load unpacked** 4. Select `apps/extension/dist/chrome` -## Sandbox (testing environment) - -Test the embed integration locally: +Sandbox opens `http://localhost:3007` with demo mode and backend mode. -```bash -npm run sandbox -``` +## Embed runtime -Opens test environment at `http://localhost:3007` with: +`build:embed` creates a bundle and declaration file under `dist/embed`: -- Live embed integration demo -- Demo mode with predefined Q&A (no backend required) -- Full backend integration mode (requires backend on http://localhost:3477) +- `Runtime.start()` — uses the local backend +- `Runtime.demo()` — uses predefined demo Q&A responses +- `openPopup()`, `closePopup()`, `destroy()` on runtime instances ## Key parts - `popup/` — user interface and interaction logic -- `page/` — DOM extraction and element highlighting -- `background/` — message routing and background services -- `chrome/` — Chrome extension specific files -- `embed/` — standalone runtime for embedding on any website +- `page/` — page overlay, highlighting, wizard, inspector, and collection hooks +- `background/`, `chrome/`, `embed/` — worker, extension shell, and embed runtime +- `core/` / `adapters/` — API, storage, locator, root injection, and transport ## Notes -- Chrome extension requires backend running on http://localhost:3477 -- Embed integration supports both backend mode and Demo mode (predefined responses) -- Works on any website (`` permission) +- Chrome extension requires backend on http://localhost:3477 +- Embed integration supports backend mode and demo mode - Limited by browser security (iframes, cross-origin content) - See [Architecture](../../docs/ARCHITECTURE.md) for system design diff --git a/docs/ARCHITECTURE.md b/docs/ARCHITECTURE.md index 9c4df50..8fbb929 100644 --- a/docs/ARCHITECTURE.md +++ b/docs/ARCHITECTURE.md @@ -2,9 +2,7 @@ ## Overview -FlowForge is a client–server system that connects user intent to UI-level actions inside web applications. - -It consists of a Chrome extension (UI + page understanding) and a backend (AI agent + RAG pipeline) working together to provide contextual, actionable guidance. +FlowForge is a client–server system that connects user intent to UI-level actions. A Chrome extension or embeddable runtime handles page/UI work; the backend runs the AI agent and RAG pipeline. ![Architecture overview](assets/architecture-overview.webp) @@ -12,42 +10,45 @@ It consists of a Chrome extension (UI + page understanding) and a backend (AI ag ### Extension -Extracts page data, handles UI, highlights elements, and manages user interaction. Runs in the browser as a Chrome extension with popup, background, and content scripts. +Extracts page data, handles UI, highlights elements, and manages user interaction. Runs as a Manifest V3 extension with popup, background service worker, and content script. + +### Embed runtime + +Website-embedded bundle that can use the local backend or a demo API client with predefined responses. ### Backend -Processes queries, runs the AI agent, manages vector storage, and exposes HTTP API. Built with Express and LangGraph. +Processes queries, runs the AI agent, manages vector storage, and exposes HTTP API. Built with Express, LangChain/LangGraph primitives, and LanceDB. ### Agent -Interprets user intent and orchestrates tool usage using the ReAct pattern. Powered by LangGraph with structured tool calls. +Interprets user intent and orchestrates tool usage with the ReAct pattern and structured tool calls. ### RAG pipeline -Indexes page content into vector database (LanceDB) and retrieves relevant context for queries using semantic search. +Indexes page content into LanceDB and retrieves relevant context for queries using semantic search. ### LLM provider -Inference layer supporting local (Ollama) or cloud (OpenAI) models for embeddings and generation. +Inference layer supporting Ollama or OpenAI models for embeddings and generation. ## Interaction flow ### Query flow -1. User asks a question in the extension popup +1. User asks a question in the extension popup or embed shell 2. Extension sends `pageTrail + question` to backend (`POST /query`) -3. Backend checks if page is indexed; indexes if needed +3. Backend indexes the submitted page snapshot 4. Agent executes with access to tools and vector search 5. Backend returns structured result (answer + target elements) -6. Extension highlights elements and displays response in popup +6. Browser runtime highlights elements and displays the response ### Indexing flow -1. Extension extracts page structure (content, interactive elements, navigation) +1. Browser runtime extracts page structure (`basics`, `content`, `interactive`, `metadata`) 2. Backend splits data into documents with metadata 3. Embeddings are generated via LLM provider 4. Documents stored in vector database (LanceDB) -5. Available for semantic search during query processing ## Pipeline @@ -60,48 +61,39 @@ High-level overview of the DOM-to-RAG pipeline: 5. **Reranking** — Hybrid scoring (semantic + importance signals) 6. **Resolution** — Documents → actionable tool results (selectors + descriptions) -See [DOM-TO-RAG-PIPELINE.md](DOM-TO-RAG-PIPELINE.md) for detailed pipeline documentation. - ## Key decisions **ReAct agent (LangGraph)** -Provides reliable tool-based reasoning with full control over execution flow and observability. +Provides tool-based reasoning with controlled execution flow and observability. **RAG over page context** -Enables accurate, contextual answers by retrieving relevant page content instead of relying solely on agent memory. +Retrieves relevant page content instead of relying only on agent memory. **LanceDB** -Embedded vector storage with no external dependencies. Runs locally alongside the backend. +Embedded vector storage that runs locally alongside the backend. **Local + cloud LLM** -Flexibility between privacy (Ollama) and performance (OpenAI) depending on user needs. +Switches between local Ollama and OpenAI providers. -## Contracts +**Typed contracts** +Shared request/response contracts live in `@flowforge/contract`; DOM snapshots live in `@flowforge/page-trail`. -### Extension ↔ backend +## Contracts -HTTP API with main endpoints: +Extension ↔ backend: - `POST /query` — submit user question with page data - `POST /search` — semantic search over indexed content -- `GET /analytics` — usage data and query tracking -- `GET /health` — service status - -### Agent ↔ tools +- `GET /analytics` / `GET /health` — analytics and service status -Structured tool calls with typed inputs/outputs defined via Zod schemas. +`POST /query` accepts `question`, `pageTrail`, `domain`, and optional question history. It returns an `AgentResult` with `answer`, `mode`, optional `topic`, and target `elements`. -### Indexer ↔ storage - -Embeddings + metadata stored per page. Each document includes source URL, type (content/element), and original text. +Agent tools use structured Zod schemas. Indexer documents are stored per page URL and embedding provider with content text and source element metadata. ## Constraints **Single-page context** -No cross-page memory or session continuity. Each query operates on current page only. +No cross-page DOM memory. Each query operates on the submitted page snapshot. The extension keeps short per-domain question history. **Local backend** Designed for single-user local deployment. No authentication or multi-tenancy. - -**In-memory analytics** -Query tracking and usage data stored in memory. No persistence across restarts. diff --git a/docs/BACKLOG.md b/docs/BACKLOG.md index 69a3595..96bb195 100644 --- a/docs/BACKLOG.md +++ b/docs/BACKLOG.md @@ -5,6 +5,12 @@ - Test coverage (unit/integration, vitest, playwright, promptfoo) - Create extendable abstraction over extractors, embeddings, tooling +## Page Trail + +- Cache for the collector heavy computes +- Adjust importance score for headings (h1-h4) +- Parse structured data (Schema.org, og, x-card, etc.) for basics info + ## Backend ### Models @@ -52,13 +58,13 @@ ## Extension - Support standalone mode, properly -- Cache for pageTrail transfer, with RAG cache - Enhance dataId and CSS selector usage for Element locator ### Page inspector - Loading state - Lazy rendering in JsonViewer +- Provide the history data about the page usage ## DX diff --git a/docs/DOM-TO-RAG-PIPELINE.md b/docs/DOM-TO-RAG-PIPELINE.md index 4d9dc23..57b5368 100644 --- a/docs/DOM-TO-RAG-PIPELINE.md +++ b/docs/DOM-TO-RAG-PIPELINE.md @@ -2,11 +2,7 @@ ## Overview -A lightweight architecture that transforms raw DOM into actionable, UI-aware answers using a Retrieval-Augmented Generation (RAG) approach. - -Modern web applications expose rich information through the DOM, but it is not directly usable for AI reasoning. - -This pipeline converts the DOM into a structured, searchable, and actionable representation. +FlowForge converts raw DOM into structured, searchable, UI-aware context for Retrieval-Augmented Generation (RAG). ![Pipeline schema](assets/dom-rag-pipeline.webp) @@ -16,31 +12,29 @@ This pipeline converts the DOM into a structured, searchable, and actionable rep ### 1. Extraction to structure representation -The DOM is parsed and normalized into a structured `PageTrail`. - -This stage captures both the raw structure and contextual meaning of the UI. +The browser runtime parses the DOM into a structured `PageTrail`. Includes: -- Page basics (title, URL, metadata) +- Page basics (URL, title, description, language, viewport) - Content elements (text, headings) - Interactive elements (buttons, inputs, links) +- Collection metadata (counts, limit flags, collected time, duration) -Each element contains: +Elements include: - Attributes and properties - Semantic roles and labels - Embedded layout and context: - Section (e.g., header, main, form) - Hierarchical path within the page +- Stable `dataId` and optional CSS selector for browser-side lookup -Each element is also assigned an importance score. - -This layer defines _what exists on the page and how it is structured_. +Each element is assigned an importance score. This layer defines _what exists on the page and how it is structured_. ### 2. Transforming to semantic representation -Transforms structured page data into AI-friendly, human-readable `IndexableDocuments` enriched with metadata for retrieval. +Transforms `PageTrail` into AI-friendly `IndexableDocuments`. Includes: @@ -54,40 +48,41 @@ Includes: - Content documents (informational text) - Interactive documents (actionable UI elements) -This layer defines _what the page means and how it can be interpreted and retrieved by AI_. +This layer defines _what the page means and how it can be retrieved by AI_. ### 3. Indexing / retrieval -Documents are embedded, stored in a vector database, and retrieved at query time based on semantic similarity. +Documents are embedded, stored in LanceDB, and retrieved at query time by semantic similarity. Includes: - Embedding documents into vector representations -- Storing them for efficient similarity search +- Storing them in LanceDB under a dataset derived from provider + page URL - Retrieving top-k relevant documents for a given query +- Optional filtering by document type (`content` or `interactive`) -This layer enables fast and context-aware access to relevant UI information. +This layer provides context-aware access to relevant UI information. ### 4. Reranking -Retrieved documents are rescored to improve relevance using a combination of semantic similarity and UI-specific signals. +Retrieved documents are rescored with semantic similarity and UI-specific signals. -A hybrid scoring function is applied: +A hybrid scoring function is applied by the agent tools: ``` -score = semantic_score * A + importance_score * B +score = semantic similarity + UI importance signals ``` Where: - `semantic_score` reflects how well the document matches the query -- `importance_score` reflects UI relevance (e.g., visibility, role, position, interaction potential) +- `importance_score` reflects UI relevance such as visibility, role, position, and interaction potential -This step prioritizes elements that are not only semantically relevant, but also meaningful and actionable for the user. +Different tools use different scoring profiles for lookup, answer, and action-oriented requests. ### 5. Resolution to tool results -Transforms ranked documents into final, actionable outputs that Agent can directly use. +Transforms ranked documents into actionable outputs that the agent can use. Includes: @@ -98,6 +93,8 @@ Produces: - Element references (selector, dataId) - User-facing descriptions -- Action hints (click, input, navigate) +- Action hints (`click`, `input`, `select`, `navigate`, `highlight`) + +The final backend response is validated as an `AgentResult`; invalid `dataId` values are filtered before response. This stage bridges retrieval and real UI interaction by turning data into executable guidance. diff --git a/packages/page-trail/README.md b/packages/page-trail/README.md index 39a10eb..2dbd2f5 100644 --- a/packages/page-trail/README.md +++ b/packages/page-trail/README.md @@ -1,8 +1,6 @@ # PageTrail -Normalized representation of a web page extracted from the DOM. - -Used as the core input for RAG, search, and UI guidance. +Normalized DOM snapshot used as the core input for RAG, search, and UI guidance. ## Structure @@ -11,20 +9,13 @@ interface PageTrail { basics: PageBasics; content: ContentElement[]; interactive: InteractiveElement[]; - timestamp: number; + metadata: CollectionMetadata; } ``` -## Basics - -- url, title, description, language -- viewport (width, height, scroll) - -## Content - -Extracted from text elements (headings, paragraphs, lists, etc). +## Content elements -Each item: +Extracted from visible headings, paragraphs, list items, blockquotes, and figcaptions. Very short text is skipped. Default limit: 250. - text - type: heading | text @@ -32,16 +23,9 @@ Each item: - context (path + optional sectionName) - importanceScore [0..1] -Filtered: - -- hidden elements -- very short text - -## Interactive - -Extracted from buttons, links, inputs, ARIA roles. +## Interactive elements -Each item: +Extracted from visible buttons, links, inputs, textarea/select/summary, and supported ARIA roles. Sensitive inputs are skipped. Default limit: 150. - role → type (button | input | select | link) - text + labels @@ -52,30 +36,17 @@ Each item: - context - importanceScore [0..1] -Filtered: - -- hidden elements -- sensitive inputs (passwords, OTP, card data, etc) - ## Context -Derived from ancestor containers: - -- main content, navigation, footer, dialog, etc - -Also resolves optional sectionName from: - -- aria-labelledby / aria-label / heading / legend +Derived from ancestor containers such as main content, navigation, footer, dialog, form, section, and table. Optional `sectionName` is resolved from aria labels, headings, or legends. ## Importance -Heuristic scoring normalized to [0..1]. +Heuristic scoring normalized to [0..1]. It ranks elements, applies top-N limits, and improves retrieval quality. -Used to: +## Metadata -- rank elements -- apply top-N limits -- improve retrieval quality +`basics` stores URL, title, description, language, and viewport. `metadata` stores selected and total element counts, limit flags, `collectedAt`, and `durationMs`. ## Usage @@ -87,36 +58,18 @@ const pt = PageTrailCollector.collectFor(window, document, { ## Format -PageTrail includes helpers to convert elements into compact semantic strings. - -Used for indexing, retrieval, and tool responses. - -### Content +Helpers convert PageTrail data into semantic strings. ```ts formatContentElement(el); -``` - -→ heading. Pricing. in section "Plans". inside "main content" - -### Interactive - -```ts formatInteractiveElement(el); -``` - -→ internal link. click action. name "Pricing". visible on initial screen. inside "navigation" - -### Short format - -```ts formatContentElementShort(el); formatInteractiveElementShort(el); -formatConcatElements(items); +formatSampleHeadings(el, limit); +formatSampleInteractions(el, limit); +generateSemanticMarkdown(pageTrail); ``` -Used for previews and compact lists. - ## Notes - DOM → structured model (LLM-independent) From 42c3691b1a8b04d7f4f3e8aef1758427b63e0fe5 Mon Sep 17 00:00:00 2001 From: cerberus-ab Date: Sun, 16 Aug 2026 14:16:43 +0200 Subject: [PATCH 19/20] Add openPageInspector runtime API --- apps/extension/README.md | 2 +- apps/extension/sandbox/index.html | 26 ++++++++++++++----- apps/extension/src/embed/Runtime.tsx | 10 +++++++ .../src/embed/flowforge-runtime.d.ts | 1 + apps/extension/src/page/hooks/usePage.ts | 4 +-- 5 files changed, 34 insertions(+), 9 deletions(-) diff --git a/apps/extension/README.md b/apps/extension/README.md index b93f5da..4e11098 100644 --- a/apps/extension/README.md +++ b/apps/extension/README.md @@ -42,7 +42,7 @@ Sandbox opens `http://localhost:3007` with demo mode and backend mode. - `Runtime.start()` — uses the local backend - `Runtime.demo()` — uses predefined demo Q&A responses -- `openPopup()`, `closePopup()`, `destroy()` on runtime instances +- `openPopup()`, `closePopup()`, `openPageInspector()`, `destroy()` on runtime instances ## Key parts diff --git a/apps/extension/sandbox/index.html b/apps/extension/sandbox/index.html index e8dcfc8..6149569 100644 --- a/apps/extension/sandbox/index.html +++ b/apps/extension/sandbox/index.html @@ -93,7 +93,11 @@

Manage the Runtime on the page

Click Demo to run a simulated version with predefined questions and responses,
  • - Click Destroy to completely remove it from the page and clean up all resources. + Click Destroy to completely remove it from the page and clean up all resources, +
  • +
  • + Click Inspector to open page inspector directly to see how the extension + understands the page context.
  • @@ -102,9 +106,12 @@

    Manage the Runtime on the page

    +

    - See Embed extension docs for more + See Embed extension docs for more details.

    @@ -112,7 +119,7 @@

    Manage the Runtime on the page

    If anything, you may email - flowforge@gmail.com + flowforge@gmail.com

    @@ -171,7 +178,7 @@

    Manage the Runtime on the page

    }, { text: 'Open Embed extension docs for more details', - dataId: 'ff00000004', + dataId: 'ff00000011', selector: '', action: 'navigate', }, @@ -187,7 +194,7 @@

    Manage the Runtime on the page

    elements: [ { text: 'Open contact email', - dataId: 'ff00000005', + dataId: 'ff00000012', selector: '', action: 'navigate', }, @@ -205,6 +212,13 @@

    Manage the Runtime on the page

    runtimeInst = null; updateState('idle'); break; + case 'inspector': + if (!runtimeInst) { + runtimeInst = await (await loadRuntime()).start(); + updateState('running'); + } + await runtimeInst.openPageInspector(); + break; } } catch (err) { console.error('[Sandbox] Command failed:', err); @@ -216,7 +230,7 @@

    Manage the Runtime on the page

    if (state === 'idle') { btn.disabled = btn.dataset.cmd === 'destroy'; } else { - btn.disabled = btn.dataset.cmd !== 'destroy'; + btn.disabled = !['destroy', 'inspector'].includes(btn.dataset.cmd); } }); } diff --git a/apps/extension/src/embed/Runtime.tsx b/apps/extension/src/embed/Runtime.tsx index 9e95c09..3ff893a 100644 --- a/apps/extension/src/embed/Runtime.tsx +++ b/apps/extension/src/embed/Runtime.tsx @@ -16,6 +16,7 @@ import { EmbedLocalStorage } from '@/adapters/embed/EmbedLocalStorage'; import type { AgentResult } from '@flowforge/contract'; import { embedConstants } from '@/embed/constants'; import type { TriggerSize } from '@/embed/components/Trigger/Trigger'; +import type { MessageResponse, OpenPageInspectorMessage } from '@/types'; interface RuntimeStartOptions { triggerSize?: TriggerSize; @@ -38,6 +39,7 @@ interface MountShellOptions { interface RuntimeApi { openPopup(question?: string): void; closePopup(): void; + openPageInspector(): Promise; destroy(): void; } @@ -115,6 +117,14 @@ export class Runtime implements RuntimeApi { this.shellRef.current?.close(); } + async openPageInspector(): Promise { + const message: OpenPageInspectorMessage = { + type: 'OPEN_PAGE_INSPECTOR', + senderId: await this.transport.getActiveSenderId(), + }; + await this.transport.sendToBackground(message); + } + destroy() { this.stopBackground(); this.unmountShell(); diff --git a/apps/extension/src/embed/flowforge-runtime.d.ts b/apps/extension/src/embed/flowforge-runtime.d.ts index 5263c81..59ab7bc 100644 --- a/apps/extension/src/embed/flowforge-runtime.d.ts +++ b/apps/extension/src/embed/flowforge-runtime.d.ts @@ -20,6 +20,7 @@ export interface FlowForgeRuntime { export interface FlowForgeInstance { openPopup(question?: string): void; closePopup(): void; + openPageInspector(): Promise; destroy(): void; } diff --git a/apps/extension/src/page/hooks/usePage.ts b/apps/extension/src/page/hooks/usePage.ts index 663ac9a..314bb8e 100644 --- a/apps/extension/src/page/hooks/usePage.ts +++ b/apps/extension/src/page/hooks/usePage.ts @@ -6,7 +6,7 @@ import { isStartOnboardingMessage, } from '@/types'; import type { Message, StartOnboardingMessageData } from '@/types'; -import { useCallback, useEffect, useState } from 'preact/hooks'; +import { useCallback, useLayoutEffect, useState } from 'preact/hooks'; import { findElement, getOrCreateDataId } from '@/core/locator/locate'; import type { TransportService } from '@/adapters/interface'; import { constants } from '@/constants'; @@ -164,7 +164,7 @@ export function usePage({ transport }: UsePageOptions): PageViewModel { }, []); // Listen to messages from background - useEffect(() => { + useLayoutEffect(() => { return transport.addMessageListener((message: Message) => { if (isCollectPageTrailMessage(message)) { const pageTrail = collectPageTrail(); From 89034930a466beed3efe501c2ebc0bf448fce87b Mon Sep 17 00:00:00 2001 From: cerberus-ab Date: Sun, 16 Aug 2026 15:11:00 +0200 Subject: [PATCH 20/20] Add initialSettings configuration --- .agents/rules/documentation.md | 1 + .github/workflows/ci.yml | 15 ++++++++------- CHANGELOG.md | 1 + apps/extension/README.md | 6 ++++++ apps/extension/sandbox/index.html | 17 +++++++++++++++-- .../src/core/services/SettingsStorage.ts | 19 +++++++++++-------- apps/extension/src/embed/Runtime.tsx | 11 ++++++----- .../src/embed/flowforge-runtime.d.ts | 15 +++++++++++++-- .../shared/components/Star/StarTwinkle.css | 9 +++++++++ docs/DOM-TO-RAG-PIPELINE.md | 3 +++ 10 files changed, 73 insertions(+), 24 deletions(-) diff --git a/.agents/rules/documentation.md b/.agents/rules/documentation.md index f54cee9..ea27940 100644 --- a/.agents/rules/documentation.md +++ b/.agents/rules/documentation.md @@ -80,6 +80,7 @@ Target length: 80–100 lines. Target length: 80–100 lines. +- Link to `packages/page-trail/README.md` for more information about the canonical DOM snapshot format. - Overview - Stages: - Extraction to structure representation diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index ec34e4c..eebeacb 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -6,7 +6,7 @@ on: - master jobs: - checks: + linters: runs-on: ubuntu-latest steps: - uses: actions/checkout@v5 @@ -15,16 +15,17 @@ jobs: node-version: 22 cache: npm - run: npm ci + - run: npm run format:check - run: npm run lint -ws - packages: + build-packages: runs-on: ubuntu-latest permissions: contents: read actions: read checks: write needs: - - checks + - linters steps: - uses: actions/checkout@v5 - uses: actions/setup-node@v5 @@ -49,15 +50,15 @@ jobs: # artifacts - uses: actions/upload-artifact@v4 with: - name: packages-build + name: build-packages-artifacts path: | packages/page-trail/dist packages/contract/dist - apps: + build-apps: runs-on: ubuntu-latest needs: - - packages + - build-packages steps: - uses: actions/checkout@v5 - uses: actions/setup-node@v5 @@ -67,7 +68,7 @@ jobs: - run: npm ci - uses: actions/download-artifact@v4 with: - name: packages-build + name: build-packages-artifacts path: packages - run: npm run typecheck -w @flowforge/backend - run: npm run typecheck -w @flowforge/extension diff --git a/CHANGELOG.md b/CHANGELOG.md index d313ec6..440c0c9 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -10,6 +10,7 @@ All notable changes to the project will be documented in this file. - PageTrail snapshot `metadata` with collection counts, limits, timestamps, and duration. - CI workflow for linting, type checks, builds, and PageTrail unit tests. - Project context for agents, including shared rules, skills, and navigation guidance. +- Added initial `settings` and `openPageInspector` support for embed delivery via Runtime API. ### Changed diff --git a/apps/extension/README.md b/apps/extension/README.md index 4e11098..f430d21 100644 --- a/apps/extension/README.md +++ b/apps/extension/README.md @@ -44,6 +44,12 @@ Sandbox opens `http://localhost:3007` with demo mode and backend mode. - `Runtime.demo()` — uses predefined demo Q&A responses - `openPopup()`, `closePopup()`, `openPageInspector()`, `destroy()` on runtime instances +Initial settings can be passed to `Runtime.start()` or `Runtime.demo()`: + +```ts +await FlowForge.start({ settings: { theme: 'dark' } }); +``` + ## Key parts - `popup/` — user interface and interaction logic diff --git a/apps/extension/sandbox/index.html b/apps/extension/sandbox/index.html index 6149569..844268b 100644 --- a/apps/extension/sandbox/index.html +++ b/apps/extension/sandbox/index.html @@ -127,6 +127,10 @@

    Manage the Runtime on the page

    (function main() { const bar = document.querySelector('[data-role="cmd-bar"]'); const loadRuntime = () => window.loadFlowForge(); + const initialSettings = { + theme: 'dark', + }; + let runtimeInst = null; bar.addEventListener('click', async (e) => { @@ -135,13 +139,18 @@

    Manage the Runtime on the page

    try { switch (btn.dataset.cmd) { case 'start': - runtimeInst = await (await loadRuntime()).start(); + runtimeInst = await ( + await loadRuntime() + ).start({ + settings: initialSettings, + }); updateState('running'); break; case 'demo': runtimeInst = await ( await loadRuntime() ).demo({ + settings: initialSettings, topic: 'Sandbox', stubQA: [ { @@ -214,7 +223,11 @@

    Manage the Runtime on the page

    break; case 'inspector': if (!runtimeInst) { - runtimeInst = await (await loadRuntime()).start(); + runtimeInst = await ( + await loadRuntime() + ).start({ + settings: initialSettings, + }); updateState('running'); } await runtimeInst.openPageInspector(); diff --git a/apps/extension/src/core/services/SettingsStorage.ts b/apps/extension/src/core/services/SettingsStorage.ts index 19639fa..f5807ef 100644 --- a/apps/extension/src/core/services/SettingsStorage.ts +++ b/apps/extension/src/core/services/SettingsStorage.ts @@ -8,16 +8,19 @@ export class SettingsStorage { private readonly storage: LocalStorage; private readonly defaults: ExtensionSettings; - constructor(storage: LocalStorage, defaults: ExtensionSettings) { + constructor(storage: LocalStorage, defaults: ExtensionSettings, initialSettings: Partial = {}) { this.storage = storage; - this.defaults = { ...defaults }; + this.defaults = { + ...defaults, + ...initialSettings, + }; } /** * Get the current settings */ async get(): Promise { - const stored = (await this.storage.get(SETTINGS_STORAGE_KEY)) ?? {}; + const stored = (await this.storage.get>(SETTINGS_STORAGE_KEY)) ?? {}; return { ...this.defaults, ...stored, @@ -28,12 +31,12 @@ export class SettingsStorage { * Update settings with a partial patch, merging it with existing settings */ async update(patch: Partial): Promise { - const current = await this.get(); - const next: ExtensionSettings = { - ...current, + const stored = (await this.storage.get>(SETTINGS_STORAGE_KEY)) ?? {}; + const nextStored: Partial = { + ...stored, ...patch, }; - await this.storage.set(SETTINGS_STORAGE_KEY, next); - return next; + await this.storage.set(SETTINGS_STORAGE_KEY, nextStored); + return this.get(); } } diff --git a/apps/extension/src/embed/Runtime.tsx b/apps/extension/src/embed/Runtime.tsx index 3ff893a..9a1332d 100644 --- a/apps/extension/src/embed/Runtime.tsx +++ b/apps/extension/src/embed/Runtime.tsx @@ -16,10 +16,11 @@ import { EmbedLocalStorage } from '@/adapters/embed/EmbedLocalStorage'; import type { AgentResult } from '@flowforge/contract'; import { embedConstants } from '@/embed/constants'; import type { TriggerSize } from '@/embed/components/Trigger/Trigger'; -import type { MessageResponse, OpenPageInspectorMessage } from '@/types'; +import type { ExtensionSettings, MessageResponse, OpenPageInspectorMessage } from '@/types'; interface RuntimeStartOptions { triggerSize?: TriggerSize; + settings?: Partial; } interface RuntimeDemoOptions extends RuntimeStartOptions { @@ -68,7 +69,7 @@ export class Runtime implements RuntimeApi { static async start(options: RuntimeStartOptions = {}): Promise { const runtime = new Runtime(); const apiClient = new HttpApiClient(config.serverUrl); - runtime.startBackground(apiClient); + runtime.startBackground(apiClient, options.settings); await runtime.mountShell({ triggerSize: options.triggerSize, }); @@ -93,7 +94,7 @@ export class Runtime implements RuntimeApi { stubModel: options.stubModel, stubQA: options.stubQA, }); - runtime.startBackground(apiClient); + runtime.startBackground(apiClient, options.settings); await runtime.mountShell({ triggerSize: options.triggerSize, demoProps: { @@ -131,10 +132,10 @@ export class Runtime implements RuntimeApi { console.log('[FlowForge] Runtime successfully destroyed'); } - private startBackground(apiClient: ApiClient): void { + private startBackground(apiClient: ApiClient, initialSettings: Partial = {}): void { const localStorage = new EmbedLocalStorage(); const historyStorage = new HistoryStorage(localStorage, config.questionsHistoryLimit); - const settingsStorage = new SettingsStorage(localStorage, config.defaultSettings); + const settingsStorage = new SettingsStorage(localStorage, config.defaultSettings, initialSettings); this.backgroundWorker = new BackgroundWorker(this.transport, apiClient, historyStorage, settingsStorage); this.backgroundWorker.start(); diff --git a/apps/extension/src/embed/flowforge-runtime.d.ts b/apps/extension/src/embed/flowforge-runtime.d.ts index 59ab7bc..387371c 100644 --- a/apps/extension/src/embed/flowforge-runtime.d.ts +++ b/apps/extension/src/embed/flowforge-runtime.d.ts @@ -7,13 +7,24 @@ declare global { export interface FlowForgeRuntime { readonly version: string; - start(options?: { triggerSize?: 'medium' | 'large' }): Promise; + start(options?: { + triggerSize?: 'medium' | 'large'; + settings?: { + theme?: 'light' | 'dark'; + }; + }): Promise; demo(options?: { triggerSize?: 'medium' | 'large'; + settings?: { + theme?: 'light' | 'dark'; + }; topic?: string; stubModel?: string; - stubQA?: { question: string; result: unknown }[]; + stubQA?: { + question: string; + result: unknown; + }[]; }): Promise; } diff --git a/apps/extension/src/shared/components/Star/StarTwinkle.css b/apps/extension/src/shared/components/Star/StarTwinkle.css index 6142f03..93c6278 100644 --- a/apps/extension/src/shared/components/Star/StarTwinkle.css +++ b/apps/extension/src/shared/components/Star/StarTwinkle.css @@ -26,6 +26,15 @@ 0 0 4px rgba(var(--flowforge-rgb-secondary), 0.45), 0 0 10px rgba(var(--flowforge-rgb-secondary), 0.22); } +.flowforge-stared-twinkle--inline { + display: inline-flex; + align-items: center; + gap: 0.35em; +} +.flowforge-stared-twinkle--inline:after { + position: static; + display: inline-block; +} @keyframes flowforge-star-twinkle { 0%, 100% { diff --git a/docs/DOM-TO-RAG-PIPELINE.md b/docs/DOM-TO-RAG-PIPELINE.md index 57b5368..f04489b 100644 --- a/docs/DOM-TO-RAG-PIPELINE.md +++ b/docs/DOM-TO-RAG-PIPELINE.md @@ -4,6 +4,9 @@ FlowForge converts raw DOM into structured, searchable, UI-aware context for Retrieval-Augmented Generation (RAG). +For more information about the canonical DOM snapshot format, see +[`packages/page-trail/README.md`](../packages/page-trail/README.md). + ![Pipeline schema](assets/dom-rag-pipeline.webp) ---

    | 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%0A2&00N4>(PKX2fgZC(lT^Jt*xwbio&QW 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 z zpqLN*b>)1h9t~pBR_<{|h&=TNtBn5H_Z5CdP2_7feH|^x1<|fidB+fo^ow zyrQO3&~Pu|y33bBDfX<@8IhI3w$ibzZ29T{SL9ed*IrX_x?TyW&z`2T1Ze0C?uB%a zM_+P#Qb&c9Lag?Rcl}7gg2_}0tU`^hWx@=Ej{?egpR!gzP}kZqzBxNas{Sb z33tL+9=KAPtt zD+Pj!Y(;vP;QmpqPE8xG-?aK(YX)pR(DUy2tt9c(vRy>&9rt|c3o1nq@eP`Cpqy@c zbZ2kW^we_sKrcy6?mJ47>NL}PfJm#?GQs{Ofd{w8t|z)Q)>pN>_>?EWsTQ7Y?*>P> zS7vDn{YVSEWM(WN{(a>~D~^qR-}U1|7E3mbYfkTfv2PAbdCTIw%nfD^=K=NfAc&Gj z@8?t7U+4C??oA>P<8-U1^A}h|dNVm6($`NJ_ zm9;C|rBs9C6i*g=+1HmKe7~{t{L&u=VSaf_b&+N|cb*4(axqe7xzjbcRr@dk)c)GJ zu7;#%A0;ad&HcV*G1065A)6%)39he5Q!C6SL9YE}b2vNwHu-&qncUr7vTk8`I%}(r z87Ke#GXXfP*>x#mcTThys(6IBmCGO8>8U4R-w=bX54SVVy3RzL*-KxN$>(}L?oDXy z;*PCoW}C0TRrOIJ)r|-DBdXbWYmyXPwTsLOtHcjZxz6R!TJ(2ME(SP?7nRPsKX%b^ z&Uh^MY+(`f$FdtqL;5|_)c1_l#{H(MdDZMT1EAVr;o>{`R;wUZt?m&M2H6OR4McN& z;}H!X_o}4zcr~`a+`NLK`Ou@Q>hltlT6%0{`4c~y48>Mq)}cxg48d+m*E5g2KJ>C( z?AwvUVo;&jZpFl+!bHA;YanLr%b#D@sK7b^iPxc|2I)#x-8q-ugO9k7)v%A|k8qc8 z(q#x|f-Z!GuE5ygo|S3Z{5pu-xiA;WxpPL#uu3N zR3h6AQ~hYSq}9pjC6|ZmdrQ5;z>(3+s(Ff@g$C^>{(dDQfK8}e^Od1)ku#%OHNAyr z%YYhPxjCr$Fn`2miFs>iuzYKN_&2(J6B{?K5hb!lq$Z)+e#siJwDTzrDu><$ z;R@klQV@HhL|!|7Y2ijwq1Ow~YkbQ=U-YFHKdyqS9`}OqiCx~46Z#nhlUbchEg~^e zw(MmQX{!7eHcUDIfu-bDyU^HYOokCNZiJ^hXG>xn<@j?;bIb%m&S{d~aP+JKpOd`t zHcJ0_$7DB8#T1A6z`|qP_5g@Xuaz_(^&+SR#DMGw^BH)6{n#{4g}1BBrguSOVouJq zy6EHN6y_is)GJFfQZJKvjwB52o`aOBa4GMqu2f$SXZUp}2psf}P2%V7p@JOIKnVhp z1+ucUE|#O@N~ZW8LXS8j0JL3zK14?m^qLfpm|JbiQ7HA~=SpbzFEp94&x|f}W#kH1 z@47U>jbnG?!^4j}d1wK8o)*%uV5_P+c)*~)c~L}ye4}qgP`@)RHQvF7Yp8Te-0y0w zp$$ipxfJFN`ci-grnp-AG}AH@t_5h%hgQVZ;G`Ekn!cx@Y?>!O$@dbU_IpxDRYd*A zwg6fg4@6k|)KEfn^)24PKbrji#MU2>GHp$B;~y3;2mIRupb=8+2VDdp8+Go!*Yf{k z!hQ2c-AwkKoV}nbK3_%UvocP}_`JXY$T=jk`MabGUpOy>28Po?nNGpx83VddRCHw@f(G}WG z`-=sf;Ic!oBKkjXe@>4vy0ebh^DN%+KLz8#>?i=g4D`=oLH7Qgfs@giAd?hM0HC{w ztG9#&Lji34=YKHHz}LEfXW-oVMEmdW{@QMYk{1(1lp8oF^UUsfNnFN14h5KP{D}`D z-Mkn7S&F|OI&Q-hECRjTENNiQ-+_1wUH~vh18WreyEmThf7QiLh6sp+4fHHvYz%w@ z|8&hEX8_APIVsvj0w|BC@GFjA^glmPdIVtFZilzE6R9Ef@kx^@NTpO>=z zpDiRzVDd*vy%W^VomoE5rSOUFG`6)u$zo*A_v8GR-49y;UDy>M!q4U2qmFpf!dWEyRS_80Bp(h21Bv5!JcV3Di}r zr^ZKRTn6sYe>6% zQF56GD{wILUs3fxyCsQ;;PHNNW}N{&CEa9t=*$V}6098@Y8Qrb9sqqEzWLx;zURiT zzD}V#>)UrX$m{4_NR9NTbfY3jkXbSbG;%@Hfb@p_AJDp!C-`UbCtJ7B{=YjFit1rs z-?+@o3xGur{s7zf*RbGuTaaw?$Zqo}JaxUpaYeZn2Hq%Llmnu8Gn9VUMc z4AFV8wO>hI@cw!(Lx+32agGOQ9~y?((h`u%$lwbf0|zI&77zlr4S{K0DY#2eQP4m7Hc9ZJf2EuBJ17OK0?(J zft3GtvU|gfvZi2D#Xn*uK1zLa#qtcHG$SJr_8+e8c`toW7l-yogyv8NvU${?M5Cgt@nEZjveXG>qc+hJF&?d zc$+d<*i~7-kXt3WcY?47AJeBVg^xf+a|ckrzvMDEI9(THxY+-1j|3Dw`2Jb^AO(uX zEH4ITQL*VehhLV1mMC67#*g{So>sY*)DW~gLxJ2n_mko}&Ph*bTLpODHcHLUq=Ka_Po2YbU!?xBCR;@;v`V&rUT z?FN}|vafd9{xHg8CGh|nl64BEYBI0=U}@&iZ;!S25{eqGBkZt6 zh`^WRQbPSPzZ+6{H#p}B-61P+UC9@btCAC7(Rksnp5&46UILvWGIW+1OKW)ekFAi5 z9sbeixO6*f1>u1-p0^Lhs$?!WBMW%P;w|1+&UG{zR9(Q@4@gvfd>!-E@L%iw>#l(S z{)FKCnj>8qdOEsOtnXPalzB10=cVsm*v1#agQ;8_Po)2dd&_3UqHqV# zTaZF|RZ>@l@wTn%C!&t__XPXy$_4i)-)pG7LU|LJJk6`wYEBeMM+Md?{`)XcVd3@s zSN!^W*ZZa+Bt?R$pXTd50$?=ahWA2B{ZBKJpM_O0eELXNgzs$vddAEqf8;6xH1}Vc zwS+GzgI|y7b=@K;U>*0hIjn9R)wrSjjzucROV2e7__s?;7Z)#n_~&9FnhFCJ1Zo^Z zH06(acbam<3Q4fe^i@YvT&bT9)(I2?q}ej#D;RiLF9&D9c7^aab@gex;vhExnc~Gj zJb%g%?tE=40L4oJ4lqq?YqI4Fwxou;tp0G{b?iH$7c%#v{yoYzm%$#UG6B0tl9&ze z!lCO|0zVQt;g4H1h4GvE!Q(d;Znz>$oy3W@arj4tu$?@42dD;OQ3Hif#QZ>xg^}g7 zst*ZBX4B?GkDsxt!GmwWY2m(n7(?Eh{WYXuo1;hxGX9edC+AZLToG}%c+8lT*Eb(}7=wOJ0quNGz*TEYl3HoGjZPO{-w}sau zky~}%K7#ancNwYSP8N2&36z8C4`J^~xv$Ol3zFvCP0EAsXUM>>A@=%d$-GS{l!Ljo z25*b}l1Js{G_flgc06e!KHY%XNfkIYJ493Wyeui$*uc?+Gq-q9G_v9cAp7R7FDcgH z`+N}Y~Ey8XK)0MBbXN-`PZ?Rp=9f!#hs{Vm_%^Gxq!K=9if0gJe$_q-o*pM96$r4OU)R(ES zd;8@KNa3oXa?_jG>kI-ATe*ch&S$p%(=Zez1#HMIRra4Z1N~6^a6qA9N^yUVs)NDm z2fih1-6z>@kiy0U%?EZk5freG*X$=@T&uQ>ZEt-(z6rRKygr0FWHY`3&-tZWONiYs zPRu)cJU`43-P&sE^3q^a1pt$nFjiLMNbp@_?$wV+jeJ{neip8 zelG<3eKm>VtK35ODlsQ76C{`7B8CB4u^AZGR#|B6RS;|@A166qhs52qQEdUwRH@aU z+*Qz&vidQ3iF;Ul-o#}|oe^9RaPKT#T%sv@^N&2$@mWO31N&kq3%r*#6_ljUPbm`4 z55YnHk2TAw3|icftI01hzy}Cldx2R*cxO;_U`xqPj}4+VdWzn?f=q`vTO6o`U{CTU zg5*NYwJ~M8Qr90MQoaCf&J}ZU@@)6{Vs%+()nVd}%YP#d#s%maKVbjlP4tvISjFIB z9RWRaeEB8w$7(31mj{j8^9&a6zbbZsbz({45uV%BcI_-io9lrq4)iuU3!`pIqX;vT zcY1yYdfj^l4Ux`h&ODswYBQ^$O{DQRs?nmto}ZZRg-D@b}7%{ZjAk&FQoL-I$s-9 zd0eoP7o$_(>saQ3V@3^i-}tn0<#i5?;hy9_+0|ioo&d^hmY9Dm0Ftw*^G+Cu>an)C=0;`UZwf~eY2e-VCW61Fe5kfo42`Yh zb`#++(r#VyjDD05>>hKHdB1*Xg`U0pg$LS#+^|Q)bH!@8sdAsQFoso!W@w}1)ASC8 z@E~9apxz(peG043ccMQ3xfSt?{X=?6p!w50m~(R&K$0X}f8}0spTCC*h};}Z$4cdT z#+VC91T|Ivd!3WB5kc3&$7XSg*EjItec{MB<=}^sC98~nuuF(CcJ>bx(~`d~cBhv+ zQ*_v8VIS;uY-XB=)#mZabY4lqs$f#}L^icPV>GJTIPS^Qm=c0B6Re3JfL1qXUGcBY zi!z{BfHk%3y`o>qa+r_lEzS}p_I{2JcR$$t)p?+0` z#P|3J!1YjvfDa(EmAxQSI1*l@cL8C+hL@g#@`usOHFL5PeM)hW8+`Q=bx87I-lf<6 zGgfU6!8)=FXJC~v$$_~T#i~dS_S~DtQ>X+(WSbW0TyKo@_?G9x z`MXDd_nZg}vCN(k^+nW4mm`?!i-v21BCCn1H}TxAau?sHDQOtiMWq}~1^2RVH9=3q z%+H8O;dx&pc=$JZbOtn$I4ZG{dyJ9<$S=wr3bJ));A6a+c#5)EF+bR4IfM@zJKLv} z+Sj3La)`d2lwI+igX_|a>97j%`dn#U&x)CS`^fGC6$u3VQ=aT$v3#z%T*VBpW_e5& zM!HJxpTW1o5N8P07}TCWbbnxQkDafh3j?svUXF7BIZ0wnP<48))Pk5|Pf8D8AvE&8 z!IWe!nJY1Y@n7T6RF$^NVVl=dQPrD1@tJQU$CZzd^$zHtEI1}Ra2fXIa#HOp*mF6A z9h*#c$`>CS@yvu!O_kugvUS3VNYUT2b>XX1EeFGdxP6_yW~((z1Ns`+q00s)(Pbg` zmab++;C^v(d5wd5&`VT`SB?0-4(7d5MdUtT>X+PP_c=Z#Op+d1L{YYlY8ycYn7n*0 z@-qk=f52xogMLDFHNsHy51rEF7lIFl+JYIO|jlX##pG}B?HawP|)5EU%pcJ6HReDb!;5m}_i9ch8T zhS2b;0{uuQfcM2sYaHl<`bxyM`Y|a^3Gs@J{ULbYP#N0S zWTm>wBEVj`rzys8ZOwMfN+M{Hp#{z~o-3hidnnu;Vn+|Xa$B_Ol>Nt>%%1don36$4 zc7C|sVYnT)dzTQYQnW5%bs+juVi6C|M+{FDnteW|TL+WW>`pgB#F(dzukoYY%cmZJ z-bTHHeUqymLbTmwfm^z%lCz2endh)uL@av;H-i-L;S2lDz2N%}g^767#6crhwXTwd zVwm#;CNA=UB8L-xyzgo_?TerVx9O`pwh05GHu_EM7@wJmC1t%TOmR{QmPs`8zO22> zUt10!8&O0&S9xye-$ z-hw;0sdlj5+^JQukzPM=J0*z9-Sex6=4ZEVV*;s zj5zfo5E0sm+a=Boo1jx{#%{*niI-2b3#?arhVjl#Hvhr8B;T|W3qUn+`7Xnew1M{# z{o5&wicV|OF`RSfquu1)@Z==f;n}=Oqy$C#E;D|Nd9iocE@s&NY7dBfpzAH{sc0Wq zA67&9wIv*f2`cFoml>c6t_)p1%N&26Ii8An+Fg#6!0~~A=skMbSw_(v+xb~xeIePy zIAi{x;i#Gmykyq?Yay0K|I|(bx9aXWVDV&(D~WcSFH^iG1eU!Z)-A8G-JP+i-I40~ znj}Z-!S64LK3Z~!ySpg{Q80ZlDHqdHTs%Z(%FnMJ9*UZwZ8O%>*OODk{1ZtAz*SHN zs~ELE;GB0edBn9kt30b9JF935=E99m0^@LEvgW9i4H{VC?pMOdXm{|!7d~qu9V&ZD-ZdG3yx4%xlLlJ+arKI9lp^Jk@`o8=@%%a5_f!`vLl>3U35(3gIVS9C$g( zGF4S_d0A&>_>~BC{U!!g$?Nd?aO6cMnMI>DPc(R~^-s1RnVdX*zIL(2UA5K4$~9v% zDp>!l^G)U))??4%YNQt#id`@j72)$pPE~oF^TV!|4WnT8P1QP*?eSz-Ama3{ZE|^J z1frVqw>!ZA$9%=s=!Ca^j@laHre;^w#}wO-DXvno&WUzPpa;m>o?*gsnBBj~KjRO` zf9)qu21PFbMMapfvy*40prS&L7ep{K#YI&$_&)w)W_T;|s)nkbw|tIf)i85Os8^fc z{xsU?QOm<>EtcsTFSNF9J$MD8HH>qIJBY0#!cH!2A}ZzU^0JcL@aiINAtUt^*s~^r zSNBvIWlL^udCTl@HfGd5_NKk=?ZBbN4EHq3E?2b~AJixh6?~d=)scCG5Nr$35m=Ru z+42q)B>TYb|MBq{AuR3>q#nEqL-??R(I$N$3uISLOWCBCmE?tUQ!205$-_SAu{zq8 zx9Ic@`npXvtH;0fNio-u#pD4OG^a%Z5hH#6c&LwMP~JQs%>J;^s)5H9os>7*SXzER z>{OlXlCrlHgImu{c1IXujbo069#12BEH*CUX-tcNKKMZe$*ThsKaf;Iwhr7vC77*_=@*tpge=P5^h%A)Yhtt^9-b9FMNQ`hEQ z!c#-R2Op$WHLA&$$Psv^-u{aOFA^yef@~QS8a|GIM(-1>w9AMSCKkaWs1jT`RgWlR zzNIC2kJa(k&Q4M)ECQi5W2N+_JYvy~?iHce1D3Oont7r71Pg_=e~-&uqP*8$6y!5k zp!n^a4hsK1Gkg#{{&_#}bvxA8>Lv)%n;me|tn!wO5^%l<*6I5wtF>;83ht^*;I=_u zBt)6y;Xr`AxD^zls5jaWN{le}=hCGsXC~Y)x-BUWiwJELW*?8GEt>&8byq=2XkzHK z10oP4n2PXs1m#q4om$(C%T zSFoCjw(zIvM&;~yvUUga_+g6o$P?hU-E;))r&C3g1Ql(iA&zGLh1&o~|d$f8Z|^(N8X8a%GM zNwx5k7}gU7tJk}-UJk8|mzsCmPxAsP*v&5cR5t)9DmVa8`#26~v%rV{azm*}wmtRv z`X~Wrof1+v%H0xhF3%?pNdRnWJ0($HaT?z9?a8F`!G7GvN?uz3nS&`Pr;G0Iha^_m zIJ`eepkZ<1*B7O0IJ_EOPyB2TfW>NYvcg|Qu%=Q42fQzm!d$2`kPSY5_FL6j!iApG z3}4g|!t=e}7o~w5PfW-aDC1uYqQh%K2O0h*kL;4AEoy zEi2}uN_BQHH4p)mK|Hb9jjWQD$EdHJ}?A-p(JvBt0q0Mx>|6S^19(vykjms_TRi1K%}y)M!An#5I*VgX*&lgP zQ&n6g41FqqUh`;k8vhtd1Rn=D3)vd`YC3XhiED1l`4j^i&)np_$-~WQynr(rLw4@u zXCm(oGYkL24FCt^K7=LBcS}!FppsSz1XcCm$kla8Lpc6S( zG8|9GZ=P|6plp=EK8}B#e)rHd=%@LQ73xb@(?zdnks?kvSX<9ug1xzdlK4BNpw9wG zxq8lq(?d2$g_E2f*(WoRaTY<9#~2hq3d6p`Z=SE{IL<_X@njQicjkfOP9*12+ls?3 z%EV(uAaZN=Eb`12=H9j9#1d#j6Z7ExF{{K^K(H#Q$a{=Ce*!Rpgv4!r6;EjlP9Oh8 zs)>+*-vFr?w^qZuSDkfcgeNzGcN}7_vv%+qKptb5?c{n;CIAdv{&M~dkUIObiZ1xn zkeCf<1dKm%SA1^+%8avJ!9PgL^ZA5$wOeaI!I#=dnsrDuP?tPji>*1}LTE{zKd0=) z4IT9zmT})Ckk4){b^p;7=vL!yAR0NCz+m~{x}eZT#@y&mzWmm|_X22wxd;Y!1?)O$ zue@Uo9c4k-VSbZ~MINl)&$eeyNN(DOu>6NxKKqSR$%k>~-^zRqpj6vbC7#ILBm;n1 z_7F;uY?*YH;^^3!lB@1)6z7d=g+n>bbOPTNkd_)J{g&`|L7;O5c9wb*#FJTMQvuEb z_{A8U_jaEIx6}4Z%AM*XlQF~8f;z9~R|3N~>kM>Hb$TS2FdWAm?}?Bqx7@GWN&5tz zyMe0|C4V|#n}*&l{n8O7?W|3 zuvI4&Z`Doo;v_{4Htl=hoSVFNWEyJ49ViqvFthpxkhbw(prk-C62jE~;h2#Bn|*;^ zq=0K&npjDR82Jq1Er5Me0`})3ApW(|&8D>IQIY#1v~l|G)9;~(Xe29*y% zs7Wht{O;HgyttMGvi_Ox-XM`0o_{>gZ`pWfm1H0x(h83#KqhFNbPpXIWBEP$VAuc8 z93Ow#3y$Dfujg?U9bEt2SH}wjvd=0EygzMxFQS7p6vpz660jAXqW@EN3oX~*&gUu} z>M_vYkr}9Io4N)m&-^#iZ2w2so5w@le*fboQdHWcvfj5_g;3ebUW%+K`(D|Xp~6_k z5EYeB2_YdF+1DBC3{jDN-^LjGK4Y6P%ou*xP~G?Y^Lu>%>7mE)n%C=fUDr9!bI$WT z57#-*BSe3A!&m`*tS~HJnCD-{ih#%No)op%DkJP`0x2A) zPXw@E{x5X{AVx@7FqRT zDdA^-<$*7Nv``?TQt`_a2>b>9emix){a5V*dS$MQNBZa3*N^ny==a7O<0+q9+3R-b zct8$iW1)eXd@o==3jXKr*Z-|Ou0yW1<4vrGNYjqE%JxP3ryOXoX!xaI6k=zrem_PYfo+WcGpcfTw%oREayvl21& zUqRTPC1PAGIrR6U>|6o^TyBf^9q4lvE0(_B6v5wL4h{i$Uw^Ctus@d>AhIqlmGKTw zvFrUQivL*y(B8}O+qegTs*8Zd)3u%5CQ!gU{fB_Wc;4;5`Bt?{ai>fxFu-s+*i$Kr zzwYob2NQ{*v-hu^W&HH}jxI8){%3TLh5uXR1u)g@HxuUHr`*1y=a#@O6~Ks&|C2#E zj@niCAF|%IO<}yG=SAR+M-&~?^!`6zzO4Qj{pV5ty-nt)-hn4f8Nu!Ue)!*)vHc*x zI01uEk{%N=Vewe(|6Ck6zD<_tzy5O(K#x+nT+kwm23A|5n&nk|G5=V?%ZM`0aDKPmtF#-$`1wXX}=#Kf$2Zw*qzt#@0;E?&d|y{l>aXULg26t zQ!&f`<95JC0+7}4HR1O*VEi87L0;a@PW;b1Vl4jo!(e6BtK)%ioQB5d&;J~F`}V?3 z&6kiT{yrLaxqJ_=EmUo}c07%B1w+>#eL(2&C4~ysZ6WZG%`>*t2`-nhs#?+ot)S1J z`vTCqnxE(z8Ylk|x(9UV-c8W?!Z_J7n?1P1ion2)W-q@nLO)A)@t1*x56`p+K`E)( zwK?edczLRtA$Garz3@Vd_ta*zhU9V~H%japxa2=dfnOiH2sc^CO@2X`;0U@%7;!R%iODZsuwTs?e>-L0xOJPIiT|3sZ0O7ixD%Ad6JXCI3mY$ zREqaL4KsSSBLjK-MfDbxuq~0M=r;F$tgC45;CjcTWsuB#-)5*VVW3RXdeziKetiyP z@+-DBJk-lobE!T~^`2ipcz5P(^E()R>+nf1lv=zxL%_l9&J>LAB@BUyRI<^*;vCU? zmF>2LmGsz4JD;IwZuF3{6+FhH^_u({)*Z7TV8pBzewvfbQ)GI*MSkJ9MknX`f&LI2}SVsX7u(;|IP8!8(?beL{`!U<=CfOn* z6zkKLB$T-n4>qc4iC+eFQt#T+>UOCzhQBv?P%%@LJH3|5%v3XyW*8yNkGaVgq`;Q{ zzX$Re!@cWGy=S0ZxH4qEtQ#k=7ipmDY$8Nix$6WPs^2szhfhm zP@37$C(s?T=j*dUO5T?4l2)hQ++)Kpd8qo?nM{!#_z&fs@Ltc8b>C0U&<%H9rS$Um zO)cCy5dGb6a7g{xqErW_y;=~N?~h0)$Sjwz^r|eL zuE$xn7#+O~B#fZYG5t&04ACP)3unJsjZ-~W&;gJVC9AXY&<)O6Gcaeg7`-|uSE74->4}#$NcTo(P zHpWb@a=$pvY40H8923ScdMItpZACWDusQY-(i=>xbX~1*?;pLfa%o=w46CO82AEYl zQ23plFqemUV0~D#=q<~Rkr~y#3$zJPeuTXV6^?OqGDUgDFP+R7me#!WpbSmfR7ct4 zVo_e$RZnuENE;?L+r%a*+tguevqCa!mZ-Q^!5>g~L(6yoTQpRHw03RkfetKTgedLj zJ3m(i$pp|6(UJ~tbdu2Z@3!z;o3T#xS4Q=A-fjU2jQLv&fyFg30fj#T=!$gwZ8@UD zTvZ`x?<^$9Z;}!wd~@=u5(9wD~A1<_$8dMzUtu`B5Pv72Dnd6wnOUB(cR*pLI2%C$-drn|dyjBzr}w+gOE;-QTtUgc5- zRnhq;Z~V>$+=>*>%^tJ+TF17@n8IL6(Wq*Sl*gLM$hFTJD1Gz%0Q$gbvon)m6lD?4A7UfTD`$+NM?zAdBImMd){7iWo*awtbOMIn;N2PFn{Y}_ z@4!Plt-iAGTgBY+#VAn;xz287TGy<2X@dQechA0Z3?7r~NeU$9J4Mwc%=Tvay|?Vi zERc55YbKYtN1AJYoqX5){(I#vUIuVDYJB(WXr$OoeUyct2bG7*HOG&7!w7VHGuk6v zK@0e`%Rs&}@*v-po`}rOnusf)nC{1{rc=zsr*H?L?J}>bHQ_-ok3$ zSd(dKmr(#}NY|yief3ItO5$MQlWw^zG{JD>xIC>RfdIr*|CaS`WMh)895$2BgtE&^ zUr^4gB|t4wQEnAsa?ql2>j1_S-%5WZ@59l4=&GHpOM6;q(#f%g%#YAF=Bvlx)pF_U^!w^!|tX30)3p=3qXGMAgvzswGNSOCC-3GRnKb zDnDL|fEribLxIs~^Q~ZV>s$p{mbb)j4B9ii;o@4QnJzB~nZwRcE#FZVqO`*T8Jc9q<3#FNlCG!3xD%+>f<{#%VEpi?B&Q3SwSC?lHH#u=Ak!!~ly zD?;b{MrKiNxB+7MoH%SYBi%x;+@bX&LPpxDE0ARTlp<|ub6{WKZed>oXw$PdFI0U>YPLlT%f+!%O1r4kPD6!Lh<;W!G_RRwuk*^zV zFEBJ%EM}7AQ57i1<146~s)|d>rj&kX7q1?T)ycI2%(-TZAbS??P{l!cow5^B!KNNU zIaTzKRRq;+RpW<5WIzY8Y^?l1RodL#ML=La$C+#joQK+QQhwDb`xfi@;G9z|{K$6n zo}_$Y&|Mq*tJwYe4*eRq}6SM188jy7&=w5MAYx^W!v_&Vxf9ni_!o7d_8^QCmq zFzjsSw4)e}L`H~-Kjs@co5SutM}P9MSj)Y#_wTtcRbZ$`zRSXV0&(HgddUIi?=a=% zV#vU9D)f{lV+ThnZ^g6EOIRa&HgR!&0jiuoccA=X8z#$g&!1A$w52+JEY2Gb8To4D zbt@GDyuz}!`jM)oAKc=l+2wI*{DB+oEO0~FA~|`cq$m;*hdusz)k{|y3~lPawDv5} z8s)oU&kfL_c~?C)MK!eCf9*O=LsOGYq5-NTtA^e4)te;%?>m)vATssMSF@xMO*TOF z--WG10!&n@g!ViHfb>o6AkkcO|E#Pl&+LX`iFfg0wPPe!E~Lj2pH`7LnEYl&7RnD> zHS9zMOg!WAz7UP`ZG8e7O_PAChrXT(OI`052t$O0Gcx1T4Ok#i8#a8-^ zInrOeE=pkZpAK;-x-muq&N^Ls)!U9CKNX@tFKk=@0^AJQW|}9_hvqn70=r+0gF2(*-4f4m?AABT!)Znx;>YLQ6+ZiD|As~=-Alqf3*EfmKwdaPkJ`i#*UGGoz45KyyW zWfs`NwBkRnC9@t{2yt(bRC~anw!y+PkQT^n!;t^x5wUVleC@6BI#rjea6d4)!gaku z0!xcZDhgewF#Imwe1N$@x~5Oe_CkMRLSAli?tste!)QX;Uuf4+k0&{}b%*tC8B*Ls z86aa>lC6|UkLPD7!yu~Xx!qf#>mRf?u7JsmHZYqm0T{jiYR_iPWQt|w8dZumJvJP> z?0=8K$|p%SZG1H2V=C&M8$v4U%;eFx0*#OPjTab6EP&8;nK3_Yne!Ju^4Tc3^qjAn zo@6WCTyB&QPr|+ks5QPiGVhuPCXG;?W@%6WWpZqPzIBq}m2rJf-&kpNyIwHBgSnIH z(HP5ti4Bc)kWJziWcgCG(npv_1u@{#W3J~1_R$^zzR-3Kqf7;8Hk7NMcW}s6m!j?E zlCT?u?)(p(rtFY4nRsJ}pA7&BS zp)qoURv)G67#gN~BTw3R%}PHoMBIuSo{U#m+L(j33mKcHiFD_v#xqR z1w`^FwznuzuE|eThJ66cC=5}ZziGwv*E{(3Oa*P$O_&pM@86J3LblgZO~9n{NA%Om zc8CO*OG{o2F7%fgHvBEB#xAnw*XO{ow%Gx72cO0u{mFt*^0@ZvWlBG?hn>Tb?r)} zRCsvRkqJ0oF#T=O{hOZ9rJeor?M1brv8CPVj4V76Jrcs*LDm!uhL1EvixQr2C@qG$ z1=Rl)YEl(IA9Npg9)Dn)-viWUvrP(W{#I`R7^h{jDbB{ZHqm=1PJCG2YqqP64~RFa zcvtFO)wEw6{wj0-+w*s6!`W`Qa<_jTJrJgJemLo5>#_F5KCp}1y|P_V#;+~;YE0}d zB%U8+4}rD4|Dqq_$Gff2vhRAyW2WeS9lzpRKJF1B#us(;Od=)uWT_c#^_Jam(hDxg z0$S@_LROc1+s!O*P3K+x3!lF!3F&;bXEB)z4L4YwqwLR?FdlI%`BEpm1-!O+-p^yI zRF}!O!C7Fu#+OE##!onOGo8f?-~(c*72m16 zLwCc64XTjbO)TjQP0%BIh%(^_!wejJ=NiFFZQ z4NGbNmJ*z=ZSQu^km>3|E~*#ED!lAkJ#$cBOx`jerJJ33T$Ph4F3N?M|NY)AG3zp! z_dmaqM%m-zf+-^j$JsX&$M%egY>lKRNqcBS21DbjZLe<;jf(sh-4WHFXeD@z5X7V^ zSKPYzSj5hBJe5s0DVLrmx3Y;7S$ZkKynfRuJsJ9EvnMtYU4ntLg@jYbbVN zj2#f2yAyRrC);;rQhecTk$rPv{hLO#ANf&|)0$ja+*H>zfRVB+&uSyRfcjCNSFfc5 z(xn##BEf<87j3kINQ-g|TpTpdXtIeo>U9{f)2NJM_w>^Dehs!tVnH3>jNg|xWh1Hj zG}6t3pNBdrN3tFb?w>*ZbPHliZ#F}<*@1Yt8J&zKfg)-_x#S<^FqK5I<4Ix9!&@5@DFPH;kb zy5nRA5M3Xcd=te!V8v%T9+PFD>Z^q)#pnD-^@nyQsI{OPDF7g<+68|781%*{B03ne)F@JJ@7c{Uk|=q zc-^09eiungzuk0-C6Qw=P#IXLC}#wpR--127)O;Iq1+2H&uP>x|D+RkAS+Ri(5JV) zV7|3)f?V%b^}w_*H4Pp&3C8*sFRGxH_?cM5sy7*naP9Eru~(!db%U&!RSmw8puYOL zv!Xs0xfW$oVvLwO=jxNDr0gSQk*B4d-}CLK1N@h8OP$ZxHXbfgeR_T0WCgKY6nArU zF`S5|Sjo?R>8e83^iKSfq@U_uMVDzNaxS`otU&xFmMZCZIi0`QfrV3%0Xc4mJugHU zKWFd%rUk15qvQ&sj{D#|T8mTdE3e|O3U-G3DGD9Fj?V1N!D!}Ap8a5QwvnJjy^A?G z-`Sj7_PIX#0}tqEL?y952hIm_&I?&*}xo;^X7LhV4=c#mbGMyhTpn2 zVY`#Od+xQHg<3dUTgee)-iuKs%xk%$9(kD$e4Lmwf95yU59f$%a@H@g5`1cT=KdX^ zhuC=Tebz2A+1TQECi?DD9dzlSB133)4d*+t%)}>UD7~T?*Q?FEdT3&K$(NB(j=?Kj_XWe-(l;^|9<|^JDueZKc^O0D% zTtv>b*gda$NUnN9GM>jg#Z~S5J4U^5dydla=*Mb%)%j?{Pb35Q4bhA3HD)d67r9Rv z7+EICxbE9j9E}CwWM1uzi)Z1jJ$pYZ?QibY($!rxl~tZjev*AFNlBdlN``e62I+>A zE4*ynctsi*0sZ(f9&Zb(L{&y`@Ju{|gB0{(-{;LF16|Z7@tw^5MKFbHBrRvAe=5xh z0%lW};ySl5`x){KCyr z{7=ML1{rrk5@Ln*&(uDG#{n%${jHdW{5xl!f&7+s2?9j@GYtmGb;hBA zyLIf!bgo?NxEQdx?$CT~CcpL&`$Vne6`cDT3K&y?hm5izu`GRxaip&8b9_hadXZ7( zo36_dFw94zmsr1RrjQs?ctEAJaJ>k>pI|QNTLCmK6<6o8h_^emlxXd`nSo}G=vJVd zJnKGAKpIc(cCc2?^Pu+>;Omm)@9+!GG}cU2ZEom07FevmO!4mAJK#gw$>giD*viiT^>wNtC4 zF^&qx(0I-Xk?5?~RORaln04n8+S+}bLkd|vy796APo~P=-OM{BIF%;0>5I)kFqc0z zTYY~Zm^8@s9z7M~k_|$t{ugzIGU0A?03FziBVjC?lX?Q>)+OA8Cm9lb5=qS{hE#ii zRF)cDHwk^AQD$EMzPrA%!9!duzAx7@Zj1TbfP_qDyjFCC_|)W*T)$1^s1ZYv8}?{j zV*YkV?giK7O?AES3~2(`nl<7QOSTi8siJ}5Um>#B1$Vwk_4c7^YhY7 zNk}cF$g%zJ1O?wmKDXm5`OfAX`RT;QelNwfzt|dKUKN0b;NmxhA^iS}SN|#wQ9Yiy zi&ZuGFmM)JOqW8p3!vvt2Zd5S*%dR(z{Jf}Dyd8PJ^mvpUME383D1q9Mx~{|tsYHy z8KL~0+q(1CmS_vEHhZgT%_r--ICNqIi|YgW3j5vP+AGbc3^7ItiPPVHpt(Pb5r-Q% zRu$pt$}n#x_wO594>u&8j$Qk5{x5UenOn!x%7wIEJ}>;IA%4EU!R#l-!MgB_`MW|c zp-+0x|91IYKhTOP-dLcS<1bDPdbB7~phUETFP#tG>OUoqk6RB&@(3gju76nY{)kHY zJN0qx!S8WGVO-e0vuY=%Vz#iJMc+E*#PAJZ9NTvISVW=$M6a;OTOm{P9 zUQc$`E$_GAg73Ey(^FYZaL3%1(JpdmMKM6*+)|v5EKUmHI9U3SG1BV$J8*{7W$so# zet(?zcGj*eCd@_o?>Xnr(bvWz>!OV|oc*^ve}svb*MIstlcAqJFx{Ste8J$lz0&~2 z)VR_wJ542`Ol%L7l$Jl{m#OBVJE46Kx#ZWI*lP<{S{1$?|8S6f^irBmDvvQPM=kx{ z=6I@U?s@7`t8yS1D*lm6jBO>$AkR%P;NzMwG#7Ic85MqSg2f|y};kBaA{P$^NVvdl8_%MJyiLk@Uz8WB+MMF&elVkRFHzfG#xXw^PN}^mt|&Qzd>XnbxjbClzW3nKo);4HD0f=^ z^l}0bsk}v%x1gM2so^(0a@fj-EZ1XG6%n96Bu)_@5Szz7Gsf8mZk(d&ndyW2OxLM< zyuad<BO89T*dYlq<2eX z?3+%`;j5~2-e34j`}9GJJS+5rDwo_c#5dZj(1YCeOP#l^;pFbsZe#0bG($Cn*IW;3 z=|`gj|I!qUfb7+Vs)ihR2$x?UkD?<;Fim_B;g$5&ggi@u5^o9`(ljPmBiG=+{yqKPF3P)`)qdX;OZr}~=oa-a zRLw;!4SZhe$!q;O@Lh-{(%2Fi(Kshab;FzIR(07|l0)e0Q~U$(q{#d}8l{Af*j$e( z{lM7sruVG_$v4Gh1K1*_Vk%>x_P)##FO3sXn6a^`!zK!TEM5rQ z=*MhM%ESBznXxOcqvpTfZVmBzx9&+)Ft7A^Q79TMhk~3U;@yWiSEu{9YKI9m3xS1a zKl=7Z$U*c>(!X@K+*2}~oK~#}=@h)>JBJ=sA{EU@Doe4HaFTdvqqcKx^s3NOt`7m( zIhcV!if~3mVk1^}x?Ai=+H~?5PC8&IIs@9D56iYJ8N+$CPAGLi8Re_p%$NRZ`*efd zr90EGDJ6h9b5?$#a%H~HCKA~wUeUA(j@Em^lBnDdMwv`M`*B9_XSVo5ymDO_8nNO% z0Td0&a|#FoPbgI-5S;SjhQunTFsx6#R-KXI2d@OK9}Ij#mMzW- z!Ew8B-{v{4bhkATcQHb#SpRZ&aqz$tN104^dK2*m%xMH@id)?eCHDRpN>FOfIZJaa z{%H@j8ow-uAId2~LS(Y-c+Fg$Vy*g=2g$`Ad*cv8huG`4?X7LXF2c{FLC^|e!^=_M;a5&X93$x~Jh$xgpm`<}UB zxFtkK-`^3xlHFpTlS4FuUhb(V!buO&@}meF zqHf53{y-uM!Wm~Kw{Uw}V8>@@Ft;etT(J*ox2&wAzYK_1YFJGye!mrOp1pWyBMut?5hKv|x zUEVj}iyYkCf})P;@+N0%aee6S4FL7n*gUHZy@kTLg~Dzl>)IT3=VM$bH!U<5xab}M_zKm8$ECIWEw|8U<+fnidfacBb_4iveM2Ic`o+o z&ISe<+1w$SbZ6!qEo#oY-Z(MWX!;Al$ zJtOzj3!j&YmJIl830pd46o}hGT(BtjjLWKO5NU@+Y%ROltldL769(LJ?89f>W|ZB~ z{*Q(G=6aE&uVxd`As?}=x%@oxM-hGx+l;aAKKbT|BAv=o(Xt~)u*mgQGoAOIgJ(mn zAz9s~()KVpw;7UrqMVW=Z|CFD=xMmtlJlCxK=1TYE!+1vN8j*Ln6R(^MaT!|SoyVHE4tyAFw7F^%fVx#(3hMv2JswtwI!NZ6$1#AxIi z_4|zzj4wRQ+>@%#0Ru9iuE39l$6fQA%PB#L=9bo!d(9zKpJlARgw^CfJ^*&~YZZZY z>zMr_`tR(Rq!?`Iddb}^p30lhf@oPtY5SR;fYz3aw1whExBbyA3hs{DXyjZDcaQv9 zzS1hSDUUGoVqu^(7GE$TnDh_}5I-j|bytR{_F{n*Jp@YIW8(@$=Lxe33ngKBr9aga zDIv}Alu(>cuOPw$QvA>ccJEQmY}xNzK!YpS8hr6*?0Gq_qC**PN~7>`E_qFBHM}l; zxXAKycQ`5WAdi2ze8}vLC^bH1*>!lrT2DHdL{qi?0_oV@VmQ;6;nKJI5l$^DoDNl! zp0lvAjvpB~pOioh$Sw^pnkPhJNUHUCJ{qX%9reTf=@g$|GhrZn zr#%3;=(jJHmA@>#(P^=v!t^DixDxIF=9`%>W5aMWr z1qpn99kH~gC#NJvddO!_!pgw0RWM#2GWtb+zGHV|pgMp4tv4>AEuB-Z>0qrVH(?{E>f)Kcw<=0CVc-ilVErv1=|MlU1SeDUV5hBfweVa!s`h&bi!O_$mE7l$B6_Pwz)xH z^12WzuV^(MT4y*F*RqbIjp=BtU!+*Mn7bEbG@IwQ5mN7ZHJ_HYz-aRu?2u%WgIV}s z^A}+NE!BE%u5ZyX`oq%YI_p&O7VT|?dpuMAz+@-LQBKJ|YXtjn;Gpc_U5U!YU~^|P zdlqH9&)7k(eK_!Wt<3agZ=9ELXx@xVAYQv39bk4}ON z@-NkpzNlMDPN4XYl*RjZved{!=N;KkoY#xKAXI*0M2!IvtJ#8_MPtr`K(vv?5$H1- zITS;DurRn5(_$NaCn7C1@+PrFSxl67c+Xm|Vp#hPb zAEw{WxwqAa%M7JAUd<)OyL4+Ah@J1`zrigt(A5QHNj#?b`k-i?o%0FS%90@{Yp;EH z@=%4AtV^ZuG5utvT#>A8!w=3VqB;UAT_AX9pqEM}x`{ytdq$rGxpZ6BhL?&tcMr0> z=u~hu>y~jf!H26EEqd4Y!wKI~524@#C53zE(lANq2*c%7dXGufx&)ow1A-Oas6-Tg zU^d&VqS$i9jn|A`bg*QN1f^m$X+WbqgawI!Dl>& z^$zTB$f)hvTb_49n_yF&tJyZu;6@U@vr zYC?jnJDa`2{K!WQ}e*GVXLflie97=^BY^``@!a}s($uI zqV}_>9@@{V6BguNIwA#`B;Llob-%U^h*YK--|8TWEF%4%Py5Fg01kmG8(ZWBJmB8id19$uV83w++CgVZi*%eBkd#2oHxh(g4xf!dq z^YI@_I#_sMa;zDA=DFxJYruc!+r7F|R^R?;=bxaB|FG(T1|5*__|mB3uuXv4JSOlz zeIDE2u>LPc{_*1r%7Cf4{oSwsL(tw{jqQJye>3p^0c83Qub*A}^MK%3)FYs+AFgx) z1Aw{H876^oOajxe#Y_wTNr=B?{_7e7?92gR9`&Nt=!>%-zmQJMY>xlnb}weotH8n3 zo0)1I-#^uyFhxzlG<{U8XbQC|eQ?i5%)U9^aFX7?O~4l@V&VZaDmxer!x&EK9ctH3 zRw}BxufQe;WXsbKXvz>)2Ji3TGEkg>CUt1p$*Bh!BWS-~D!MwDg}ny$B7jac^aC>S z6l-}#ktJ{o5KmM&45{mqzBN}oCQAdpNPxp3wvwW}HvDAKOaWxk?1qwfe?3g{Ak%#5 zTd>&1M_=Rqb078Zs_Q`hnO7cK4Bmyje(3n+edBL-S^obQYkA+ekxHq8qAmZQ7YVwb zRFb_HhGgs--o2OdUAC>*+N3eye*u*|7n-9$EFGH%FLz(>wq;`heMbNJ=IyZcjGmZ{ z`l!l2Ta(AXB_u)T-9P#L_6erI{@%ZnAOo4N7mO?x&8zGf0-hD?m>OOqZv0)IsWvKV z=O&YnvRwY7V9eMM2H9Ynz9dgf1CR4@7jowfob%bu@=E$rpK4RQbfbe7m;ku$0Gmqm zo?o9zDsk#W^c!2l?X+Uf3*VM7{R-+(_WS{BDKm*rwPM9}jKrMER(sdGe=N@@k*Zy{ z7Z9ACSNk@|z1FKe=I;Hl1+;@7>w|Ju%SxXD_-enyDquXNRcL7|CeDGxy*EV|tekff zic|EI^>l#!Y*)tWXqZI#inv8-e$!MNx=XTEVQe+lGLGZ*-O$YZn{5YP{#v+QyU(hq z^j%!sPOs?sGJV)?e-wzTjxl#T<`3wTuZD`Dx{9g14`tz9@uPmtc_L$flWNbJ{=|~8|1I&$s%Xmy`cgm#oTETM0 zTfPfr_I}nlR#Mecg@a=I&0KQqSo!_)(d&~5-=)`nAI)gt3xHtD9$cOF;@H`8{1n(i z6*=XznLQvGL95!LDQB4$Awbs1O87}-Ue#uKmVT<*LG1l7vFxi)_M!+Vpb|gz(S`cA zi4(kotIN|W(Iu1@`hX(LDE=z0_SLGrI(hp(1>8V0^2$CY7Z6<5NT6mgLi?Dq%u8}z zS_jKKY$8@bdc%BWvKa^3ib^O$u!48<`QPWCgJl}1OTE(=1}EgeoVyv%@Im93 zlGXw1X@CIvRV|XwveIZ750aV$zJb-*?yPUBhT(iYdn{SpIM>37AmNl`o}>hye|k*! z0mmDprQqvSFJMr-Ws%5PIEaMWbyk5biRbG>x%PLE^rY9Xo0O_8Q_{%vD%PE! zPmeoNQ(^R59m{DBhN815jfxp zp}m&gae?(&tmy%;jpbl=@qDl|+c;f3m!x|wYyi#R5-$bZBy@rb+@NBz;m4@8(_@r-w===n{($KJr-elOeFbn=_pbLg_b`L-s( z5*#!^5hOdIEmx*Wmu;^aLwF?ZUy&E^)~2y7m&Xpk0Cv!x!c2b(vxrlY3VWgavB!JJ z*MVEXC%;fU(Qh^bA(2rQJsR1mD=${La691>MK1nt>T|(}bGgWkB&Le^8#nR_^{O}@ zTVcM>gBKv9^Mufwss)eJouk$yGF6|x2M6b;JWkIbS7m7?Jt^1KETi&-6YmF2uvb)K z_O}7e>v}~10n5Cb9WVZI$ts7ys51fx3vAk@+=mo8YgHAQyGf1h?ImoxXl}D;Xh2uE z+TywCET>b_X=8x3;T~%pP<9XmB*u~Z_icf#%b*ND!18(zj_@rzUta_Si#fglHU1N! zoW{1K+!1cK(yuu{f8fYBhmXDpa9&#uDU$R$pV%pmdvU&0cEhYsj^5g2AZ^Bd8tx+z zu)R3eb9V>IJRB;<-)ar+v%<&3TKWBSz+IxsSAzYv+8~)v!zSJ>7roolcxl&)*YY`+vdfZng)j3JhVmvs`c8cF+go z5p7EzBlHLFJ~?l$&iR#Vk9Bu|SFj3br?PBALJ0#Gn+Y9hTBW%Xsq36{4By53Pt6T?8Bjz( z?}O*urmFSz&U5Bfe3l}PbL!;T&1+YOr=b&MmP-(QD`Dzv7@%yF-py->K0a-D*evK? zjwlXvWgsM~g%>)(Rdp!WHQC0g%hPwPi&y59eCB)UcPL71XN(0mN)6lXq1`6G|& zJB4!p9T$y!&hzs8?+vN<7gK?^!cX0+|I@W(Q2LnfN5pCA1}UBUBwN2P>qD@GxVLJU z>m_1l#r5Gs?fYUK%Uaddd0oaMB_hSii^hT>sdh@rkO8SABz+Yt(NyQ~sZ&Rd@*=Me zz){<>UClt``2%O0!OyJRa_1MTvcNl?r;UX2*KB}{__0aOr;doSfR+^)&3z&7l^R*(a8Bi0wSz91_7h(CH`9ZFzVf-^YzO?!slH)+hJ#CRhHXRtx4_~d|yP?V4#FIa4(d15}}q2{9F!tbpT;= z7FLA^nflXEH9@PI=u+)ZZ>s#JtfZ2&z2}jR?KMZ!Ks%AL!l%I3+$Uad1EYG)-KV3i zfvEb2FX~y@g)e8c9G0*f(^k>4P94|7o(i`s28#rMVw_p2CqTGoDwW$5Yfm|R7@3{6 z`5Me(_U$vs^M2Rq(R=aYqh$HWCQG@Mll_IrAThsmQU7qSIC;?h;oTcfUHYtfVqBj zGRp3f-JAKfcRO8kU?D|CRaAWJSo#@KC-tXxpWbfmeVxS=PX(##m8-_#yJkVlgwuEv zFemd^_bMc4g*r12h#KUYWrLsr3C!Bx*;A5Pd6@Fn@(I8!IG^}=xC9%-@oW2hkqQ#H zsT41BTkwd2;sZ(M1Sml&au-r{7X+y?s=oLfQB?R}&@ z>9CPtI52kn@aikT-dS7R&w!m{K|~LMK;kG?cqfSD*^R3>$Eh3XQIrnK?!J8w6!lF} zuBN4Y%?iMkw0B>q0?k69>%g~P0j3h5>5-3l(|jW!?2YKphTKwEdMeuad;*|ItQt3D zyhr*V`O4IXvE@xczsTDL2DS`ui$7lE58@e{o?|)MahJZwoHu>z7zI-d#U~%BS4wh? z+aG3IhhTJAKWBT*U{^JO<4{`pXx?~+DgI~yh;L)g^LlmN?#Z>3@2r53)WZ>nHKoPw z7w=({nVWLX%G;cNQNI;or^zWmjFQ(fMBtgE6)D9@83Hd>Xp zp3W(G0EAxdeVPV{2ZX?xwAh%wY!y#W%~@bCqQ4xo&M!Q%RA=*R#Eayf-9fJy^M}rz zWo-A1kj68#YEDNbZ zMXdLZ21Q&`M9?l$B~i|6e!wN~Ah##zxvm&qa7cpN$7h-rg-%N!Zil_ffAmmo_k>Nv z6~tu+BA+T{Pkh03vNW>D{$A%M8*|nj3K6Gc{lnPG`er94Gm8wesPfe5)M#V`uY3qa zT%?Vw*FWEMw@tM0OewfB3J$0gZm7$Nx9SuCxGBD(%?5S(5uGpaww>!FX~G|APPqk& zVug$dm8{;q_YjZcTy{}Jp>St|$!CQN+`r6dvI?^ZCV}~>=+JvfgU65EdZdq@iI;lT zeuK->7CaAI>z5f$>1#Le)C25-r{IlUTVF@Qyj}rgT}^teAIJ=n(AKK}8kufL-8lU- zi%t*7i1AC;$s`QOK<7=iv%mm@e%m+wmtnCAhha2H&rrBL+<%kJ(KdG>5u<{TD9S+% zI1_^=Shy^PWyk=Ei;+_Va!@phA5K4xvVA4#uMW z!)TNRcXQW*XEb!x)JIr+FvvxeXW@Yfd-HWO%!c|XAoLI~qn7~HW9AZPe@{OS+QCHx zlm%To%Z}I%&s$?gFO`dRtb;{c$^+xmnj@`@xJfM15WU0le%4a1eHS{{rOiLIq{B{h zccLR=H2ng`_OzQ(H1rKb^E@(epnRP+W2H8w?|b|9?H3MLMQ+73xV)M7`PXO1F;apW z&Cv=cD$*sA1>8ZZ>3qCYVhZ1@ImL_ZP7$Ow{e^)rW$NhnFfnS*ZFH*IZhKzUg@&x# zsUg@K9P-|M_gE{I8$@-2EVo#n$T$xO!m|w54Q7Dr(?a$`U|?(F-v097qb$dF=^7v& z(TDE5#JBiC_Zj3_DZ17-yo&GMqk*=O@Z%rl$cCN7sZW2+#7IpwB1sfsU<5wS(5uRm z+V_}3Rx~(N7(xFWuA)TZ5l2vM^ysVL@6;NL+e=T{N4t-1k*Zf;ist5r^7)+`p@nPB ztLz4_TW^@@SsNUe{*9t`zAU%52O%IBe?@xQy&S1-wB}Lya^yVRp2OKZcXi7b!;6{_@jQJtD^HulevJQU#gnC-jNWT-be_h-(%okM|sUKshy#`zF5~(!NpijNKBwMmJOsvTcq*yeVKLES$b&e|$4-b(ON8 zdM%#F?|Fz$>{V+2e7mAt_I9!{g(W_OI+@@ugOgxndKgI`v)Yh@wU+OC3;a72ua{nY z+kW5yCL#tn*H~;O>@-Ld#YGT9-9QPV({b!Z*ol6CCY<7bUiY%{o#5$zM#)qMoFf*iPJ>EM#3Ua31I$XfSdz%cT^?n&yD?tYooK8t4oJ+dH*Vaxmk8jn96&4) zmq(xH-xQ3kjV^t~)Pp%!9w}iHH^)@Wz}hChK%iKk_Xak4F9+WT&!_5{^!^xbCh}~z zB>bvQsx$C^lL*%c_cD9AcJxcW5a;8s_#VxsWV~f6&&BVr)+qfwVFEb z9CtqEgAh=hOWviUmK@CdsS0){@fyQnROkpBTB0~Z9wTmcb-mP7=kw_v+7$U|}17h5ANpQXI7Z~0n&9*j`6lf%KCc`rR?agOY zHRm&!7nwFY-K-*3$%U=SD(>Y|29`oB&!RhUk$&rE^P6R`?~~-rD7>IgzN9@>9b4?w zIiC{BcPV@r^r*Y{EwPK23N-zy5!|%{T#&cKiw4FFATdK!SKJA&M9dzKF(SFL|BtWl zj;FeR|L5eCj>v~?#>vmz%0R4HpcT@8 z1rqvv=)e^b1pfW__BgOEO~d^<>4tR9ii|(OV3&U#@?!Y*W$=6ZCOL?LM(S3OoDH+E z3ZV&Hey}%2R5cy7VicicV!z6KuAXk3@kUO?K?03KR`hseqOWCZYOtQsMnkzuX)>#| z+@`w>Tj?@(HMhJ&0Z#x)n4ZdQV&g`#hG|e_p;zEZMpxp*i~9^{y_#y9|3LCL$Xpy6 z9CNtl*Rwy0UQjXY%kF_X4OL$}1qm%lJgyQ)dV&IS5(X4x*VxBzeBuUQ zOXTZ;Q&&H+B}GzAC-Bc+gLCG3< zocQa@;;b>Za;-+Zi|?B)N211rEQeg)D%+LORZyw=#8 zBSC8xQ}%6Wx1Z9mqL@q-Ne*kEJ&D=A$7px(p;G9rX%`hqQ<>5G!*N@NijJ2Wks`oVz7`bJkZF5ENk~* z$Tz;2y2o(H2hBTckZ*66RaU6gZJzhxvl8>EYxOO$vL^MBXAGRn{I6#ev|-w*jY{lB z>1jnF;b5=|TL?1^u=cgB7s8A0#?sJqynaBl zDu<6G+~_m`@ZF$$4bnzr)9-j7Gg6LZSuB`S6I~T!w;2F@cHf&8|`9MycqFL>l9n zm(b@QJ&e+GT`52y1zJW%Cva`TJzh3a4;;G&P{KZ+5}U!xYC5*ToH`}E$9=A@E)8=F z%`}`J1)?*V4+I^i0E9|Ef6AWs#bH<@=~9$-Fyg{M+Ux67nd5w6XMtJi*$s(Y(j(Lj z%mwcX#p`^$Ln;odyH0R0cZbB;hi~`Cm zeV@{<(f*# zL1XyiL&UYErcil=Th^JOo@@9(7;+;gm)AhTz+^o7fw$=^F#g6!UJ)r6p!TwHDZNz#czqZ>m>{<((tNcJU&(CkncB3ab_>EU|@ECiH&Iw<^-#e`{soSm0HLqUcdR{eGV+#X1Xvx=QlKJpC~06 z3>XD%vJo8|KvhQox7arv36YE)QoCGWYP4JtAaTfR7hAn?OK!blWdFJ{E)nV?dPdSX z*LP`$rmH#!TXZ^8KMltOJOD}MzKrLNcZS%`BuZtTDZKkg$r@k;A#LShsWU(d>jc=^ za%Fk`mY#QA%MFBu(QqWH{ifm23kDWR660fFBnx04C+O*ZFsEHvVUBKJ5rc^`htsbR zK#p{oBVxTBV|2y7zv(<`nxd;3Yx8EH!FcwRd! zAWhS%4K0kAqC1POUl*fz4h?Tys@YO9mBb4?zauo|Ff6MUFUR9+{HOML;WbE_!orJz zNn&|73snV)@D#ReEzJfy@YRYSP_NH?F;yGd`0_z#;c#YYxa9?2v~BJj60d&dEB9Ny z@8iebhHU|w9A=n<+T!|*dZ)zt;mayZymE-X=jIA=de24a+Uo1q%7)Ofr+nf~KO`&0 zDOp@S2mxsT9m*zl0zr63_>ko_S~8q@3VnYzHT^wPR2<=M<=RTm8YEL837LNX)lFHF zDNVfV_oblY_ZgV+ZR3p5zskcTlqS^PMN3v0B;Xdf_0z#Fr$!9&BOOrjF)zS3s^h43 zF``i)TmlfhNZhrNrPfUIB@h}upgm?sJ8a}rD@Os~yaEa|J_vC4)}MKNwV?!(w<8eD z=70=YC&B``{$ldp;JtrZZ}b3CmmP&zJw@C1p(nr2K@utN_1rPJ@Vi~n5Z3+1VUNT2 z9~jMXA!j2^k9V>;xHv-9aQtXOf$`+GH)A4k`3~lrg{NL550{_h>Tx>fIM)WT(aQOY zu09_uz5tf!<&JW|YTLkxr8*VwNmGODS2Sx(g)fB8D`n|eXP0!_qs;GHm6q9zyk&{? z8QWPr-h>7A3&6-CDV8vWzWw$`V<=xCRGw4y0B)Ue;t2n3|8 zGWgFN5GFqX#u+ui0J_Cs`mmX>_h@d8B8gs~otUQpr~tpfq4x0#_=W3)yJmS&3$UR) zEBoY&&l|>laZPKi3GX)t{NJ)Izvc(#!z!%WIf$#n%LS4&K2t@R13)kb5q&3kmC?pG zn|R8a)#gu3vDU39&$uC&Z<(eZ4-DK{I#x(G=beAM z%Xjv4Xy7W>y!&NNAMfF;;}2H5GOw_)3BaL|6s;N+EKI(P_cuDr z$;j2-_ph15g1e?(igXe0V(9%s$Kt8dEWvTY5r|@G;TC}YT3!gyx;XXBD+D`gcrFrHNl>TJZWfin(+Ck3bdHba!9o@nz-QX&w!`V~#hE_}c&d$BaS;Qx&7*>C$ z8sSL6>ac`Faz3Norz$veSkiP#3z2*eA`fDil&~HOu4i#lo|AEPwPk2|u{1b~J*Rqi z7L0eIMm_W5g?iW@=cDv z<29pKOtIncuaG9K(We!RzT$HSrK0bto8v&XznnNEpj@k9uPiA)yUi^M?hs6(yeyl=e zzN9~sWt)E0LI?}lzhGU z{?h^eem-w0azeE~b5`pKU=?@GoX}YI^t^GvnHv12tRkIT-K}NqCoJ<0+5;JxyS-4w z`F@YT?Rtdq3){Pza5*atx=Zh&7aN||9ICsrW7j@jXM+*&+*K7H*dVMGZo3a*r;=Xt z`wFzRw8lyLbLGgP=`GUnqd?e+Av}rA^Sm%^`Q4kmz)ZXiJ2Pv~x$>k5h$9D^pA1=+ z&8pH=#{+;8rrV#O<`@N4ZL~e7yRQ$5Tyzf&W%Nv@zZv%JpSrHH8yMTrUtdgQX6$U{c6~CZNN8_iokGI7SxB zu|GW~yYr`A?+#!z>f$Tbf}ASV*W{F%dX%MW$u%i^31w4utQs-ur)*eF9MAZD-~xP= z2-S*-@wfS%=!UpUn!3T}p$IPhF>o5BeW=)$dKKfYE1{LSfx>-SIDcQP;$iv+vG_cR zFm2$tu-jcE?inb-@Rj8;WwU3+SB@bm)bRQxAW$kk`Ve~Z6(_ax!vm+@F3pcK1Jh64 z_iWS5V>%rhMfJ?eTv1(hDX8jRj|h3#vjIu+s#ZSHv}->hx%VrLn)b7F8K~4e+08NV z^eg08Ppmm$&Nh#!He-Cmj6Hk+3upyL|;|B>hM_18|LuxlG~3OT`~1T zA`h`?-hgp9A*q@Zu%yjlvDUay2U*$@THp4*Ur&eE*bbHBiWD>-Wc< z%iu5xp~>LL9@Xo4wv0!A6?tpcc!ZZh-w&SYDf`?OHycLNYrGk5o?ZDvzE7qgUQx^votte?WNA1r70fpN zn5ksRBxKgg4s7&%g!FOIrGdlKaYi<>!l6JtykY@vqKz`!P?g~fxzkEjmh&%nNWR<4 zH7_7MB_`gXuW?NALt;5SOcgD6J`6}55hf}FO-1u)=eZonUU&6Y-Qjeww2eQu>GeWKQ)LFTdlcQLjIn7R`@&5%gp3mdf$fIZ zc!KSnQD#W1M;OY$@HvH!;agIjCodsaH2QFY=hm3E(W!9Wl{}AFgoI_X)CVYZOOXH5 z3wa@|p@eLTO#Z<#uK&770F0bW~NahnU+k5nIs={^v;E z(U4BPtd9+4kH_3?I=6J@y~&-6>#sL+ zT$t$>E^CS-q^Txyj}0z#X5#I0*)j^E0Ol#?R)8cj4JB(^k4cKh>tb$6atQx8-KCDA zUQ+JK{lkSJH9Ut0eu7wnUqYkMB>5C1u*etkb(%TN!j78+J?KfKEOuCn(wmnN{&W^8 zJT?^wS0^`f?$sbaJWD~aAmgCDHWMRIa{Y$l!gUa3NK`z@-f+iIn1~<}ZewXNZAAa| z+ce~=VusMhkQ(WGf(MXT&Rw}D4Z+URUDk%4p67r(9FN?MbSGYm?5drK+}9U*KG1%f zexhyt;A6PQD>$YuJ8lVxNJumGyFx$otq*UxZyds*!J5KBy zj`XwCW#@Nl7rQX$Lv;U9c#c4XYn{#KH%tQp2eDH$wA@+Er%(7kttpY@BLXrlDnYzu z-~fCrRH^z7$EVlqFVbjmF6^i+O+x6=do=Ls-bU6d z2~cbt^r<`-{lHJ7$g+DP8&kuMW1>y3Ne6#~!}_Y|uZi=a?e}#nVkxUdm@8TawDoAa zs{w8)%W5u>cflBEBncJdja6emw~1i(r0LN|opoJxqA8C5Zn|{+Xur-OBxc9w;A8PQ ztED57JLuHdnnf$36GQiTROTPSYactuemLM1jLgj+N{tF6O_VWPjRg#S@PIA8WZMG) z-0Fm|Gd(&sWnb&1vUy9$)GP9vOp%-M2_A82k+n$zV!vma3$tj6+CeJc~(crQ{6_93pQOCu~_4 zdei#(IL<-%f{jXgp_wYBg}*#TgoEN)eB;~6E;T#h#*=AK?Aq85c%jk|o6`yaF%fGX zk#7hO*dqQppG-W^##(0Vb*C#9a%}duGDcRq7P0w}~Pzt*J`%tLYY@a&r;_G++x}_F; zQ!c3r8B=$%2Iut?Kb^LLG(^OC={f(<*I3uAZX`cvf>QQfX!QeqXUuTO97VojoCH+g z%ZVpHWIAD*f)$;Ot95GHp$lxK*)idY%qwLO;e@b?OVSKh<@R_%CSo0wFjTGVkza^g z>iLQUq};g+^LxAwdY{6C4w0F>(U>1cFk3`Qx__3EQ7nB{HXh)oqLx>zq#2G$Dl}>u zM!_l(-GvDLTOF@-(R1(Rc}Odi7|oowc&wFgZZz#sPy=7mvh5chezU17;x=TStoX<3UBRM)d|R1KG^-SahgpbW3U1esnndu^oUS4lid58X9!Yu>zSH4K zswr^DQ|QrVy@~t7-2)=ufG&XXPjbuF>wtP+=eAhlo@^`eACQnDzsB5HcHeu2?p=_- zA8nfhuZgBVy3FDAINb`B8}}8+yx1RBNMLM~GGIQU3O%Z;bQ5e2CYDG8 z_Ui^2yXNj_(Cvg03?OoR3_rEWZAL=NP`5<>ndWn5oyNYot;Xahk8`VW*?R9Zf}*0u z_+V&x&}bFm%F5tendbFiX@_V!_8mgcdQ`BMyDGqLzu5nzKq?f-Sq2VXS9y=1d z(Qd*$n5toX0%G~YXYYAL!7Ix@XIh~OjSfEYdH=hIOu~ZNW^L(Vb&`5QCyi>c5u&c; z9R6z!&hIPTcgS6IH?r{elWnu9X7`cD*t~s0ccM90UC{caaF|4!|d^miwRRjY;_3MRV{Vges((!BUR=zT?cm*C|e| z!ab6#W_NS4zVl};sAucDi+2^oe&Ph(=#h}6=OejwBS0%s;y<0^y$Q z(s)1`uS4BoPnp$dF1&Eq8G+79=Q_<^Ij}_81lFl# z>2~w-<$!f)AnpAo{=Nc8Z(1{CNHA#I#aGg5o{bcR6bHx*jz}_+Or67#35nqa$ha|b8)+;g-&e!z z4#4T%W|3vxQJ|F3GL{Y3QFDUAf^nB=TE^#NzMYMwqr7t8A+WV@xITf@k%1P2WvK{K zDmp#>0V$Gvf2Zdax#(xKtLXB`De!Q6WXVnV_+ptX4lyax7#B%NnzV;^@y{>~*TL+^97iDq5QDcYc^R!Li4zqw>8n5(j{Kfi^Z4{r zVMnMXF^3JDlsS!-ZzM(6{~uD=XQyarlQ9uJaTPR)m+oCueX99i+ZRyEnX zou)rnI`o6LQO!%GUNIi0XQ(`(KEFRTtz8cYPYAacqg??rw+^i!0_ct0g()sZ$I5=Z z>^WZsl-ITbGqng{w6T3!+9Z$3&GVPbVKj~H=qk!{>!7CE%PZgw1fpY^;()`v(l76f zfgZ-9Ya>HLtFrF1P?6P>F?@dBMKcibk5XyxM_<--JvdYm#m=2!k(z`hA@P#QyDWsF zfj%|FLr3CAc^{Y2`? zkzy-{&~%>B=THXM0ryQgjud^d@)9rkKw?-nO0X62$wFsZl;y)Den^nJ!2g1iDn@a^ zM@LsoXH7_}qKAe^7w8>w&4Ok-$XF$uQ2T_2P#5wn8eKTmtBE; z9{hrNQUL5~Pkb5|uy{Ooj#u)p6Lz$T%I?=lH# zA&9eVHStou?SeZTJS!&$xY1p7^$@vi~Q8ruWBSr%+ zrq#1{;jm1sGHt4EY$H$OO00cr`yE1=C|B!_R-lS@LV5fk(~>E3v`sq8)7$?H&S+yM zO#A#%C7nrtacSO70VF(;@*GRFleIc+bYtl}Hd!@5poDXX3fNKWY*vU@ib#0cHCOz& zMva$*)A6wzu(^rgHM9ZsXnVH7`3UGxanK~vxU?3#04;g-_BA{3G6Fn02gRa6p&hT= z&wPJ)3Q^W!yODJR7@Z|ZWIVqa&4G$4(4c3X&LnxYqVZN zi|Qpdw!xuRr1Ep#c0DWC0sTs|sj9x3Kc~+pc1P+zWx^GZu7mNk`Wzc;`UVQjL-e4( z?or=l-!5}{gE$Kji`;j|CJ7@*uGasVN$7VD<4!TO4ic8rEwtM621+(d0>(OS2Lx8F z++D97@F|Ld^qey@&GKD{3Ne(#=PXYD?1FH#kEzL&-lTxLkyTHQEMmXrHK=gn3l)ya2@s`)C+e#<@If`CHQZ0sKOH&;$?59V7JH%5Ka&CODYJmE(E@Wj3Aud1m znQ*vlMv%J3L4*PnJ#b5)pKIqGUpr5sA8*+ zx3K83JbLt{Bh4g~MxnjT=eTXfVdh!os<{hQSKAAX>W*u4wUDCiR*JtTO@2Y@bx6m7 z(En17kfA~F_V&(?AQLfDrIQ=XutN}^#CDgO+cN`=bB&VB9RNlBl;A04TtHwwYgwd| z?aFDTwG~zN3^HWx*GcYsq8bg-Vha2K?;B0W@+0$wci-Kh1C|*VL4uuVz0XuueZ9BR zJ@L_53_pi{#3doVH#Wdq8HGY2yYa?mn+Jm*9eZ{j0FW}H?L8!mYPnK=C>4c*b{Z)maY>r{R-pKc5TWMSb zuL)I#M0p^Iz+NcQedvaI1^uke98A#8GD44sNUEkPL23GqOjJ;`fUvM)h;%LiUqXOw??L3dUeYu; zvLWEqY12Y0nt`nXs=invi$Cxd{O&W&{hjw{7UWu~Eyz)*S1Aua-E*U>sdmdAKPa;v z!C7O{i@rFt0Z*vw_IFgDxJ3TyE2eh1{<@eXoWW?o>Cw5rxFSiNG5gfvMl|8Bt5~hU%tJdrfdHO zD9cwrM4T=Hbg`AIbOhK8Q0!$s{o!;GFo)V{kE`or_UHnb&lU4Rb+Qlws83L3YJkv= zZyz^;j27iBKR6J=63xe;lt$HWQp_S0^PXrWbi!6Q2O)(U z$|5YCKjA>Pwh#q+hxS1}z8P@Qu0lXr3TeX+NEP@50~D}6Pg@2*@~#mKR5^f8bso4A z=(^xkLfVfdK42eYKmCZ5(v0n=H(7y1btj}$%zWwja^dk|vdGp&N@25@@*=_Ox%sH; zYJ|nr+2Qsg#908ANu;A}|2G=6gi)4R9+XaKj&>I4RB#pdQ8gESV>ek-rciGe`>D)) z`jh^STb7GQBBV>xM_X^$yg&|Tn{Il3^MTCoCP`6OAE1g6kUY-`(OZH@VZA^bxb_y{ z(z?i2K-#k}Gp;l9%J9!`NJ&2INWMg-t(s++xZ*!eDPt7SvF=}i2zAt`p%8~V5sAIO z7mcLzW4J}5ByrUw#+C`Y5n^m2Q5X1WOiyn%#)>EQ_5j?i-Af=o(@*#cneZYw7i;$k z^b*nOLn=QRDVpx=YXUsY96r%!_XOaq?NR5eeyV0@cEHNJF6h_wY~g#@wWm37I5f4g z>F!-a()ESl=^$>D2|Xi&C2RddDD4`hW{z)_QY+9A8-!Z z3-^DZY7mkIt9fc$=I6i%hgghVd2 z9?+rCM@WQ_z0rDe@}lVVCDi$u=Sv;8C#rU3Kxk7hdUcoTc0-0MMH@427@*xGGfuJ> zKUQOZ$tk>{G0~!+*l)Mr3737&&20ihO1o~P2FYZ@dEWsGm(&qBzH(w8fbUuoh48TG z%n1Qg2~TvbyPz_sw~&o!0k%k~(=RVn^0mkt_t+}a-Fm?}H!rV8$|J#i_-nO(_yQs_ zbUUs1OlKgv<3XnZR<5B1X*X?Q-#x9yYDH9w3Nb2G;^-jmvKb|1oT6B_aVhZp43sIX z5j5U$4k{OX-?vKXppWt$>CUi2Cl&<{a(*=j7-&H2SJIwM&AT64R;SXR#y%-HXKU zU+oi;)i}+*0HSt0awjt?izPVC?$m;GVOn~`Kc&$3$iQs|Nsh=>rQg&B)yvHKmK5dD zm^=Hd7n?+Qy){P(!sv?r)bdNfW#LuQ=tuN-Xt{z5%6OV>8|!mbtTYaX+Kyfa;e49X z%4`XeVZl<58ZVDh&DM|Ws!+(OsVXO??<>__3yQXb61r&?&;gBig&|e@aQ^Ic^4X1M z)|+`8ID1M-jNx!Z^ioi-`W3H4pM!>z+BIs?<;dyLkA*s;JT`n%V>&26@yW@LkSFLz zOH|qcQBH0)&4Rtz4n+7L%F`RAK|2cJ8kF2s z<(SjiJou*6#3U?~vs-tG12ofJdaDT1q^}^|bGF(3bcZ2z^BLzTh^9&hGeKI?2qSCS zl2gbQkd~4Kz=H`=>0;7(jrqQc!l_1^>dxzMdM8#EM9%2`0EM=H_NbIYNnYx=CIklv zS=uk`kblrKV=$q$99B29cwuwPcn^`lRZJyEmi}{8O87U8p8`la7;y5YV~?Lm5K4ow z%$O;&Jdb1yZymwe0%DSgOwBH=>>AjH-~u>TR@z`1=k-O$pC|`jWrdF!}fK z46at|ZmX*#JX~=4e2-^1A&;op40#*hw${ohp3c1Y%7+vGE#rBhz)|-Dn}&mn|8CHgNiy$If@Wweu)uml#d83!=g#Fj8k@sD&0fRWKNhJK; zHqD`POSoqkzF0z?v66!N@H>yh2dKLsTS_L`1R36>PGKkRNifA0tD%F?&0qXlL+qq}L>)GyNS5WN;pU0{Z+UJgf_ zaoYmX3}6QRg~9#jbB6@HOVO9|yG$VoglM_jK`E!~gpz7F|DX#Cb?c@Qd?X}NV7 z$|W_FO*u|Pu`aH-E{~p$mMdw&euBVlcMsk13UC8HUphN^p_#W69IDf0kJWdvnmNYJ ze!ufo@TojfUsVUnH4U6`%;4qtW+MFavrY?EGKMjObs*qKUY7U#c9rP5*NLI(&HigJ z@P(xD)ccXd?cl6YN7L0#ci2saJUHz~qkW&&f2nbVf<)}CW?W<9yM1$jVm+5LOV7Ed zWg3*q(>VAL43&#vHtNIVVd=QprgyH$0S|S@q2w13(GuRvb}#Sl=7;Q%vc5p;jV57N z@S|S7`ZeylPAhKwj!3{HK6;hXbde=0Xhh*;KPZb8ARQ@rEoLA{H=%zp$^l%jS6E(E ztD^ML3}Cp3K0HcR%U&Z4Agda;3rPv6LVk5+${z%5lDkz*lsa{jf)2!M+Fqh@Fb!$U*|0)TfnnKG!9F%4-@5nX!k+eM9%z8cV1ApdI z@&*LV2Gs=%U?63_Znx#=|J6XMQIX~mA0D!Rh{}k41A=@dZ*Xo;IZxd{atCPe96KA7 zm?i=w(vesnF6-vbk^JUMnNLTM6MPudFdiH!LU=d8o99qF-QkrEUDFtqf$LFW4oXOc zH|x(-KXqNTZI!D*56hSq?lfbEeO#F=tC z>H8V?;=F_cH}QJ}rV@Aiur&twF*4Q@>4UM^s-$*A61icm^ z8YWN14FT-AG9=B(_pJ!l;Mo45E`UQvr&bZ|g2cg8q+qUDN;8<_Q(D491V}Nu5-1^E zCo`%_ar)|&&)y!DsYx?P+;2{xumy0}AS`hlJ~xe!b`>Eh2)#x8#Yts*vsW-WnVvF; zN3Rt!_caNtRtBUL6UBdKp;286x9=EN&ZA8w^bJSrK8-#|ej$X&WNYQfxQjvv7@7`=*UrI`fHLc(;oZT8utcP?0K$f3U1 zyKW&9On=(a9J7$>Cvj8q&P$A-o^31PN8QrgXqxGI0sL=Ahsd1<1+tXTO@>B6U%jg5 z!irikb7Y{gkP(y;K!!oP%sT%d{JQ28f`zL?k?jT*Z9FX{zEvE38PZvDMsnkBW#7Cx zv~`sQpy_NwXQ9O~>ON8ch7K&41ivmDl&7>h@|ysO8}ZAig;C0F1-U=DXeT)G(rS+S zo*;A~m1lm!V7!`_9lL=zRHk>f?SG$0lmJdzZ2qb_!xLMWf z3ev9&QbxKZF0?iRK@OI5xh#hmh4G^k;=_xWa#`iQ%RCh=%a;*nmae6FrdlLGqr%0x zdFBleN@ob&N@C@}k1cs2f>h{7@ECdLj_n8HAP5TonzZb81@vZ4V)=W~VgmECR9iF) zpT$k+;WG++bgODYaVP(kw|k7_MjP_qyY!`?Qjj95t{=<8s#H!#x-wUXwC=k+0kQv* zTMMSn0}apYph%zf;IT4!^{UHgrPd!%me7&!&z?L=&zKgI)+QqZWQ|+^7di;dIr&+B z8D_CBnS>oeJ?a!+<>sFzMKxo)tnbO62!yPgB@nVWIICI3DW2rQGYz2*F5=DN2*R59y&ICZiGv;pL!$X4 zuXSttbR8M@i-rQ{wsej1{4O6Er%TmZb#)asOtcqvy&@(@CLt^~RvjJPnQyLCr&z4yUTW0H!NflG(Wh z>*PD8+cpPp*W5P;iIy&?8H3-{CfGG4x%DV{Vi_ft_=1IUH8$m@?ffY)aM?Vh;? z(kW{MGczN;lttE)4pQw(0Qpk7n3exdM2Oqd>cIm+s8^Fh$;Z>~yqw&7mC^kOsx>f3 zdA&CTRBvHepO*k5t_vvw2oJvvJYpGp7xW@;xXO4yYfF9j5A|xPVr4dfYYHUVOvC#? z;x$#h)Og86t~$NYr$ zu&z0D>OPx&{B|($(MuA~?*#RacEnHLUR$P#b%tM`KzX(`B2GuQ z3L=^4*=D=+n`*Ez5DHrfAKWbxUZvYWj6F(!7P=8o8DVh&9}xd}aj1cR{jhbSi2_48X2}VLy zkBNRuJ8}IU9RQhan@8ly7#aLH_86Lt*hF)%wK??n*^y@yp@wqqMsj~ zfp7$jE1_-_T*z1C`pqbrN;Vs2Yft+EGip5 zV=}Os4~SSc^7{XV^fx}wPzkRr2{TxbS!s3b15i3&IgY?Aofzob0T8op8 zKEpM(Eg$izYgu`SGY17uE2sTmkBhkMocewZ7rokbK`&R#jUT5_fC4<{p$Uu%#~W;} z2c8C05Hr7#RSy1H6g;@fL)+$VV|-v}a=CY2@4?q)0T7o4Q)Iu~&Y3Q+}ahA{jaP1=y3-FCYg2V!3eRd4=$ zkk@G>Op&Uj;P;W-O>6Ob{NHdsfz*l$8QslSu~x&m1Z6wCWHn$5fNyuR;@3uZPDB%( z+4h@_U;iZ>+!qF8Lr%}jnyB_dM&RC^V0O^n(Dq!2q<23@7qj+1XAN-;DUCrTMpg~B zEn8v$4M{2Xh>9t%G@DVk$5fA*HQW#MsGUHm~1mg^CGK^%`B@t2BMn9`<YDCol#Rl>Uc9-^ToPU3=g7n^D{Q0eSMP4B0 zAN2l1+K);YgcxD>4YJalV_e$MHr#&I-)DlVG`_04>dvmDv-c7os(Pz7xiroi+B0gg zb=cKXviidSPbKG&qt0;Qr~j<_&4+F`0fxGGcU|-?ut%~xEp5|rq}q4BCq>$M0_aQy zwp5d;B_yLVlj$?`~57{${=|p?sH-<)7ekx#|2s3DqnU*I3JLKraG{z zsJ$7WDq!PllFfRUKPoIv@$VNyfH<|m4u`CSGJ zpK^e<*XqAtr-Py=P7g{Zz=aCvyT8X+@&3K} z+!-iwZV`v+*o7iAQZoL*X{UUSTraZP+Qi6ra96IYt!@34wFdt1-C)&1@`w9$HN@t) z<=~x7&e4=btqUXk^{RmIHEiP*zrgATS?TJwy%@$4e|=FJZ^IgaHbzSQ{yv4bHYGgU z{Uv1ssX@ZjTxerefAE!xTqJesLu-pn`wTky|8h=FNbH_IA25oX`74-45#+o7@0B8T zJcjb6^n;>f+(tH5)&~m>kwECG@EQ8e7wjt~T3Htl+rFpQw=-#wqMPDNBa%3W1f)V& z#q!d6SEG$}D1*vJ9JcKjfy%uej#{_{zRbq|%|NeBLh_TXlDzGM5wNLTvi(}%_~{2t zNKX>l>e2R0sF!H_jzQkPh7foVGh3vWjmOr!K#rSWJ41}=Kmx2os=O86Hv<{X3_q~yK+t??Y_JF{N4CA}bs)1fZo*=b& zxX`<$AAmXq8dT(OS(4wM^yk`u0(e+`r;Kv;-orTU>?cqCkRt{F5axdk-XA|9Knv6= z)3H6K61%E>vUN3JvN>eJr#IJAW$o_l(|-*OG9&A&3nx#q|0rm(^2nC}n@*nVNcW!? zy69H^uLZddRrlQ_hjZoK{G-MyT@NDyEW}KVZT(*>P}gmXqWt>?_H31`UqkC^rD>3r zan9+|-(DCtgsALqH^%zBKIj7Svju`kjkz=;Rnnw{=y15F{d5!p;X2u5R-$U#y3+WPJ0$;uu3vM&J^jE~NzEHQ@eRp%Lf}6@k z;$~xo)}I9`y#!mQ+P5x8Odns*>KuQ(L`_n6=WT6Tk4TD3>~{s#{V-Q#-vygxNZ8N2 z-TXaXTg!i&<;YdS6U(DTX-Ekek2Q%#cKy^*X^oBrjB(IXs>^bpoQHm~Pr6DH>e7cp zc?z&)X?3yT$eS8g5OH4EGFn?pXk)*^gxXh<}xw*L~tyzY(F7UREjXyEf&~#K9O|uY` z=UucrVj2PCH3x0!9~9O#Fdrrjkw25sn;lqqw9_m1GoqTK)$Y^w+r^_{udMp-%&(!X zpLt;}un!!RW9N|RqQMcAvQLR554F?WCNM_VTK`H-AMQ$nNfud*$(b4|3d{nq(p2>5 zB2b<&`#6I8_qTk2l;X>do1DhGx9uTFP8DyB<(BoRVJAjAITI<#WN;)jOEJ%=;8ZTU zD{=;7Pt0~TpHUTQQFLt`2iAu`H`F2P{6VkMJm)|S!S2RpsXqCCnv zL;QS(*wMsQUu|Bn7hU?6M@eyMBcx-#YT?$Que1XxsA!Xe&2pW)ZkfDuF1>@0Q z^|jXI=(USLPZbE>*99}^o=zPj_V2rH#lI9aiE3L91*h(&L9yd#~rZ zm?1TEa-tmXh7_LK!`cly-G6`E7sgZR|Hsz=9S&Ud7wX944QfbsmzJF^`WDeqA(eom zC54zhW_?8-6%Qy>GNWl$-XH0_r11lB*S`cE{=NCuZ_h!Z{`c%Ga>fv4dpKgIjt-@u z?qX0N3z59fXpt?zQeQySA-cN^_HcK*SKGFe7WvRVZ=%s{1`Fz zQMnj^kM|Phn!q1M_}r_+2BM)z{Gj`~Ua)WtGDd3!%rp4VzrZR&qKsOnQV$ zL0_QpqQ|dUVu+!_tA~kD74zeh@m+b`hG}9A@{k6ftDmmdM6XA)$j+KN=gO9K+>s z1no}K0M7L#CU+b3OkNyYe8I!9xM;qW_u_RmPxQb5ERKHqD^UmFCrt7IS( z)62G>fwL~~?1vgLVqaRn>xC{qfFy<0d+%@t0=g$Ve08?lR$Ld_cvEC#>mBilBvigF zNA^du>G&OXH`F^JHItXLw06{b5d4u#k`Dy8ez<8&J2>!l+iw~3k^~z71&9joC%?B} z;RpQT44Mj1mUHSUkzR&HG$?y&3f)HL4KmO6dj(XZZ2m;0F{Ws2z6@{K_0~e~yq`X9 zF6BY7D~(U6Vu$u4ITnrOEUQJe&n46!rsI?$=9>lX1IX=?K zV8KP|wBKn%X4I1tKfcY-Z>*bbab^PPYu8EKYTfRHk@_D3U^s5z(zj5_eo`yie>?B% zjgCUQP?OCwg=XzsMM4*bDOnZZI<&*r!FAFtGWy^{UCUd3=F|D` z$PCn^sM(~bPe&g1RF8vF|IfB)1xq6NkLkR#9G&Fa8V2nc%j#k?LU-K|X#)?Z1 zT4idv0MmYF7kMGj0fU_-=cKlgTTxUoX@7k(GSpkKevO-(hwTA@JzjWR3Xz_ml(h2L zUeI`vtM=Qtq%V;uV><QvZ(rZ~=0t{NHV{w%MMT zCdcGKr`??dK}WGj1yL<@W25xg5#q1XJAc}2dsCH%M3Vousxea}yn%UB^>4#gscU+) zp>A-x=qBOwDb!1X6S08sUuHz%DzV+~r>;*}syghK-MxfK@tU~i;cFK~mF-&+-rF2K zFL?+Tc}QyCZ*{n>13;YAN_N{^=ZfQ81ohApKrQ9WOYqGhke3M3a})lbiz(n53iFB0imrz<7%iqxa__s5`aFuBhJoZk(t-Am{w{@1 zIw4_*1Aj)wZzHI|OA|xy*-fjtHEkQ8i4n)U3!x{dX4U#hJgMJdEyGY%^pxpAQevW~ zmcpd-eRH?u^VVBBaOqCKG)DBsuWXAx4siv|KaHfyOxX#oPX% zuhq=kx1{0S^VZ=90+H7T9{w}x*m$C-f3Mq^Y&7KlcMas+_FhUpp8&yJ0X%m@&2mIueq5)Zh9QpFs=ob>GDd zLo|F%T=dj~!fWChPx(CDte)y9l>BRb1sovu`^$$nqMmRULAyR4O|cNmK6~Q5G(BPSp1BS|YA+Bh> z?79c4Ge94#P9L~HeEOUi1TfA`kYDAY(z$|m4-S%7^`EMRg{W=cw$Z06#+yXozy8C< zIJl3{0rf%bWmDqgIbp?KMW|SiznI=@m5Pt=@$awQU88=HxEH5xnFXg*c^wLZzO-!r)?TXfWqJJAVzyR!!vrCO5*k7hZb=O9!lp4J zLJg8CAYFU6*+kqp@(iUIMWhZ_C1BC=A6i1f5LW?ZYWq(nFNqN`9hO^ImBFGMf>b~{19Dgi=f-dpg-wrnNEFz_g?z#!N zHLSfU&Q3}=UQ!g9N58uwTE{5FVx`VTU#X(6!glJ~$!RfF##7jPBM6 z4xcGatAJA`zI@czil7vr>@I)QLM^rLDxqVrMeXRU&OYfc7wpfNI0o|tP^%%lAL;%d zhA?1wgWU~Uf2{_@4sW?6hG}l7rx+)8HqzAinB>4IObC0*Q>DVW!-}OXy3sAWW~*6x zHfHBcujf?*%)IsCt%fhYSbqr zg}l+Z*<^<;Mh1r5K`($x!aQOMth+F_R4J_|NP7bv86n!eQ=5WxHVxYIKP;{|6YiZZ24h zVBtXeZBw-lKBNN``Cl-63z`lCHbkU`{C0c~c7y=t|NlxcRB)Q9p?H$EStj^ArQO;8 z^|ZkyNOh3HKTqvD!~OT&@P{xB*Z#ep*$FU$3D(PxbN)XQx2-km`t;*lk<9Xv8J=uP z$8GhGGqL3j{*{^mr(Xr`9iqEG9IC4Rg^X={$hLq9CRYY#{^p=*qw4yqF{g^*{67|e zdnAP2k<(8C_H8}<4Ve|lVEjEo8)20X3dG)!b~(-lK=g@j8hZ(Lz~v}f)g{o_n0s}uYEYh{9EIdeF>mObqgRC1VtNcxRI;Bm{RjaJa?3M>UW<6L7o z=)dY}E)y;!fUs9H_R}g5yx6}@KqKPAxcB6L;d$6}BF2B!57t6*5#l z7-`RPg`e4`LG0vkaPgGu+PrJwTY58f5S8Zme}sK^Jk{<0KcZWwMUgV1q>MslDI8^F zl`S(u*~yIT_ArtyBjaQqvf`MfNyag=LS?V)?BDAmrSALt`TcR<5BKACj`z5(*Yz6D zF_BH-fIl?~64s}dH~lrm#u`%AtT67@_QZQtFT|A>1^#0I$WF58o(sO`dq9KtTBJjx ztVWP6xvhRoDcP&z9z}h>cKWYa8pw&I`1NSLPVM*v+8LH{K0=s+lRzBfjb@MQ4`aSQ z^xQ@@UBBqn$vx!b%JAmJ^wsCGbv@7h`sA-`S!e1?!K0L>EqDT4T2I{pY~Sr!$*?|q zVtBGM@N#6;DuH*f0`&x{Nu@hHi<=Gsv;#$@fcOgLI3@~iuk(O~3Q#|yIt#2e>np{x zIMJzkRoqvuJiXuziRbKkt8xI5+ybv&GgvPvq6{suA76;}qPn02cF|cDAV@@{dGDg$RI!+^cnYo0^)YStyY-tfLgtvZRpc ztOXsWp7MovfEB%nFu#Zf(3oi=e*!SoZDX`GBLK*LV%mwzFH=PUYQ}1n*ih_ zVx+l&$52C1I(hCe(ssP-ZWoA}>j2==3fRTO_E!tQ zksI>PXLkMW#Z_l|Aw>537^olIOaK^dCRo9g)AViI%nCd?=eHD31kI1BSc1LQR!za$ zeBg{tBUY7(F$SGUUAh)7tBDgBO4bXV4;U2AaT-cO9o@ zZLV=0mg_v|`3)o;kzu@gb2FbsWZ*Kay@_S|-=bJ7!sMp^8t%ao#8OOu2l^MrPt0LJ zZ5{yrWe(BA_ZOmpe;d~xSnj?E(8w7r23`YCpg|esUg`LZRC^;%I@|81i2`zF5hy1b zE&^mz_{p3z?9xo+7Y1UJmyvR;nOrZTsk(MLfq*d%d*z)klj6(IKwRu#l4;GsX9G>0 zkoka{@cziu)wg>te**O6D9)|%%(v6qMZvD~Gsvi9H&bL*1Eo6T+@vy~bFU}lG0}fm z07VXMu&~*o9(Q;D}keV>wvo(k0`kVpYiX~382?q#*&Dv`m%7qrHboR*^i zkj&Ni@k<9aqxD^5*e)pzoTxJa?K!yV8*FH63*X=J42h3XfzE~zK zewA$Ar*z~*xCGZ<2gkUYr}dxbThKw9Z;xbd_tGD?H4fE0IJeXWI-#w=qrzVdS-9?& zQyV9<9k~Z&vIXGoPu~JWmVGl411$!{eOM&`i_Kwwgs!+wOb&>o?9WAu5&n1E1K;C4 zyOCN77^Ybw**9WIu_f>a#2C0~m3%i=lx;P}oQes6PN1Rep}(t6b{kT{FNJos0R-k7x3FR6WYjyc+)!t}fP=(H6v_76pqj* zhiBau_~!6mfImQ_OP}PU|7iUw!?64-2h}haSPApM69EPwZO;dqD9E*574%H*2J0~! z-v5pWs|gGDrb!Skx5P&aiHPWB<8C&Zwr8kZ#ewb9o9K#VBq#_ao85ybqxi`$fTQV8z9rpnBp=|KBOsKC1-I^C=u#SMAcy~ol3OM`k zkab`P4tQtnfxOWpS92!d8~`Jb2x~%;&bXH+r;WY9^Nx`a%zzM(3IajF>g)YDR@-Ml34+^52*VK1V@7#L*qIn`OFW`I~a0G+h{6aAS%y}U1l}4(3u0+RtD}+@e!~*o$E2s(_PptV??^!t5`fNepEuE%y)qr!+dzH=xT(vCCx0E148_qc`ao70hMY#f`00-< zizYl$25t4G*sR-m4cv7cUu`<{`k{NH%T;yOeN<3GFgCEP+y5wo@goua&4WTa5u+Vb zeV-#z^p%E=l?nZ(p{B1PqSvRhkyzXtWGO2MtQGSnyw!=}?8j2i0zkGx!uWzS5LpEj z6^EN>X&S}o9SQ-(-wMlUNJ!ACr5<0h^E8vQ?3SfqQ!>B2i84e^@^>!zGb7B@^PFBEZLx)=68|vKsM0XA z_%@#}+(GWek>~>KYnpVnr6w?MMoI+3g%ee5oa~+pK&;6lmaz%#qI&`-7IJX@1o8(O zh0`746i;bWm(stLJo$WQ;q}gQpFkXB@`9o6S&1IFs`nxe12kDu^K)d17Q+*VH>1{t zn4aC-9}UNq6YSS)Xm#)JI1k3Ih$&}C&uf59num5Uk}NHE~W$14S<}JC;G4(-BO4nn8wM=VB9z7?ZwTNW4X0 z>m&#sSR)@Q5IRAo+_|7>l`jO&MOKKJ@(CFFy;T#S=Wrg(#$U~eslwTtF>3yT=d#u{ zR6&o1*L^)n9mBBh2wsg;>ucy_X{;*G3-g9@0Vz9>hZ=@`nR6uf)BfSN0_OGaf!HN} z0!Sf>5?^5BCA2w#*u?WSeHDwgyysFfGjmLc1f?1Q>?#W+YBvnW4{m~7qBA8!lI1Cc z>6?dFq|ddWW%}0<3+MkI(CmG1*<3e+ZmdSNfA_}VNLSc&Z<$s0PwSZPN=@0BCUCve4 z-QWM)-;FGra;@h1S(kbZ0hj*Cy}`1h>%V%XQS!&rSiSlis9gCTOZ=8h+qq8b?&meE z-Q3z&yP}2#k7j^7Bm#fUWmf;#A4f9yKmcH}xX^wZy2Moh{FO8F_rKPSWH4xVbm`f- z{2Sf7_C$XFHndqj9sT}$#`=GZ*kue*MC-am*8-K+MK}bqfKuFyxG|g z?T^8ZfJgQv(6q5o2tm|(3(zc4Xoi%=98x7hJBU>u?bhA{x&vv?-_mmh%{b5TSc*A55L+KzS6=Y%w}sxmz5z%U8xp}NV+g6L3^b(NF)8QT zjbiJ0C|}DEQ&R}E1Y`VB$~WHdY?RVCo#e>h3H|yF8p!z_F1Qu6EcA+?_-KWz>mI)+ zW)7kaz?8PkGlR^?u=r#c=s~~Kcb_%64y~E8NAFFJSApT>FxbvyApaVW(NVwHgz{)H zP#=omHS{imk|$xn|Bz4E0sBtH$f_h8qdx$X|8Cyuu!HV z(R)2+P{g(~K~9hwMzu&a1u5ph0ZSy>tcAf8?gqjAVRTEwg-vL20is*Ggx_7hK|sqSGSC znjB7l(m4U;nbWY!bws9yU#zr*Zq9QMrs$wCw*Fk052^b{q`}pY+Qv>O1&czQ$?Dav`AM}{Yf`T5>~#xtu}1ytR(18nm1Yb`)Zkl?%6;%XF}TYY8P`BuLdd2Q+X^iiBeFchTVFl` zLDu5LP{s|U(|>Ka#Di$}kXih*qFx&D#d5>>DAl43+m4k&nx0$8GNS5M*mavB6+o56 zKuyd`yM)q<6D88zGQ#F172E|M?Ja#Cq9Pb119-IGbPLiugFRC&(h|t_NG=fCKAMi3>)HnMaqMuHhe_R)+g}k@x;vZqUmrBC6vH~N`EzvAS;5O zo^W`kPW`Y4Yl~Y_(1$!42{KWQwkAmH8z~fXcVwHX3NuZioC}95hVsV>DtX&hwP_IK z%`05439JRH)x--95|@YhFTSQ61bcTbP2Luh9j@%yRN{No>==dZ+?Jo7-$O54d%mE5 zH|9);5WS9rY(AnC2;+CAt?T%*{1_iUQ<=dLc5=I!^TfQvw!g7@bWXK zdG6{X%k_aZ6?T`9pcTjYG&h&&Av4S=P#Dc}w|iw`?=dWF-FEB*$cwiHHlmEgA_W)S zSVeD`YL*`4cOdgPr_vFbR>iEpD(PfN&&Pkx>VvpqJn>{HMB;Peu0n{wj^LD>?=%M6 z>8-VPKga<}rv!#KUH4eL?ta2yz_^{@!1dg(|y)7uinf1en>O(_BJNM#mXU2CfPb+Y^xLFO4`*n!k_lnAqC6To;-2gARQY_iA>#* zhS5BfnU)ag8w;F9ZL+Pi?}1cpq#m&IM??$4_a7%5QP+?2U366ZXLw>v-e=de31~@; zH-{!jj|!RBv*Qp~JM^>F0$c%-x=N4bUD2%*I&fkJT9rE*MZxL|IVyL#2-txhr?h6- z0^A8z50cxJ*0@9QNC8O8c{plf7bffp%7f}c(rxLh|0jL}<^r3^z>Z0PLQ>F0owNf< zIzrpT`W>U)Lv*AX($VaOe&~aQ317qEcoe%c597Z~P=4Vq+At2)!B%0eK1Td&6I80hv9(nmsQNR!qx{fk9&g@J0moo|X}UCZ zheMMdsxMT(w`it<>n0e0g8Bsmz6pF$z@Rd~hj9s-Kd+KeHwA?dS=IB86h6b`xhg_l zRtAN!OpFpTt^JuV{`_ez*ykUyfg|S@t5%#urDTydlqtgj^4!lsne0{sNOVNl(3AZBCa!<=u!%o{mHPV%S4Xbcy%_dmgECpg zuoumyY#@Yg8FYgOWhkb8P^8jMpp&7*&-WR1E@uZMWZ7p{jOX{u`pFv=zH& z|1uC}-?w6F{YM6f+OfnAP~5#r|tu)s10)Tl;_aSg>7~8oR$A-ne!QtSQ4~njuC$k4e+SUng7&1tOb=C2+CDLQ)UlvhY!W`X8I_zrE-dMF1z!$ldp zTpk4*lD2|-i}N1v?61_-SF{MXX9Gk3jyjThoB3=&fum(?w66^x5E1Fl@~#yrA0#*#B0@ z0}|v0sv=bv>rD*+)1uYebp3V?UM#tzoGYmaqrmL=$xsN|JhWO1f_AsK#NaIM_x{GE zF^q}`$k>nyWTc@zytmu5lG6@c*Y^MpF!@4Id#>)u3pu)$_D{3J-2YefgwjNZ;>!)2 z^ulquAb}hR%{XEq{ic*hDM|FtA>9j=-d-|UE04r=->RiS+iCNYxfsijZz0Q;f#DSO z&I8=szO&Di-_eILGC8MW;Dl{@m0sS#6 z%M34wruw)}YY-GhDuo&_qmxvx(8W<#BdvX}X7Frlg_OXmA^FYiA%Pv*4xlt*;xJHu zl)@t&I`66~R9c4`u7Wx%&CUf4f6dlFAuusHvg6>C&O6lN)MFN8a#%?0y?H|8R2NFp z9DJhWyq5b!W-~XvUa}9ex?uj3%8oT7`)Rwl(&JhE*J>N`LEANuqX7Z)PJ|@Ovo1i#XgdFx57tdy& zpExToU7DC*npeMiIM5@y)mZl9Q5dF?ng+iRP3FTg0zS{zzW6eoX!+h%W;IZsB;+`B zz5x6uQ$fJLYZ?hINvqzWI37T(4t9TQ8=rr?P62=cc1fn}zd{#w*QOepzmFQsDFn8U zjcmAENw%p)sz9%M7G$tn6z$S(yFzmtNwl|E7YtuQl0)*``LEpE5CVOe%%xmj&i^2Z$DHzyLec z4p~7s_Jmz-0mnDP5PcW3kGX1E;7@FZ$L-isC8d%|M)vB>MWaLO9}+J=)nCaMpCp!5 zFiub1fKQo(NBfQ|z}4B?U|6RECb)|ry@NF5kXqm{JjhJgm7mT+zo%9_Nh^$5HJZ&0 z7klXb@<*u`k9fjiQ^h(fBekmE>D_xJQo#H70=)^o4wncj;}V@OE7Us8|+eF3O{!rd_IJF(*b{=y})$yLh{lmOf> z1$iQ~G1gl-CFPVDd2hAdq>Fd49L0DsnYk_rVBN6o1cWP}__Q>O9(foFH8rA1<6$|HkF#o($Ptht?XR+@FoHnY{^$& zM1ZDe@V|R+bBMyuc?L^b2u%#0YL56Dp2SzQlZ^)|&EmWay1z062L+jg-`0&z_+gbA zf;!!`S>MjA-6QrE#>RI2dtQ0tXFR-&hn{*n(|3g>T5%%v?R%EB`3f&D_-xcr5mUY} z)vUyO9%JB~(w)rpBZVa+ zVEmp4u+hZ0=2jSN{QwH%c2o8JQ^FxImgLT#5KxuVrT@&)EL5hvY1u_SNLF_8@-d!- zdM?fHni2?KK2_==MzcjjOgZu+H&?;uomAW>bbSAAH)Dz9iR+d$mY&k|+hzUgUDNHV zNN$~S+x5q4I-K8ANNhkhD4}uZl*G#mE1+n#JDHhCfhf25jflvJ|KpYXd>}0C6qud6 zgS`+UJcIjKDxZoihP^N4Q9Fi&%S<#qm~-_ZI5)%<4naa2Qgrk(mPMR2_kVpWpEe8q zZfH2gDS`r{XuFef=FUJ^L&(K1%?Q1#CkY4HIQl!Jtkd~hfSAK3H= zxRJHo?`#b!dCwVJJ=nTiSee!T#@)kg;!VmhD(- zF#EC8c#=z0sSIzDNuH}1l7)##A3WI1{y~w0vauN-CXJ3OVZ0p< zmRm%q7>Xo&rU!VJxLnDucQKq!IBSb|aK1BM8tdN!wsunu%b#}zCRTu@mnA*JM&S~4 zzZUFabHGpS=0*tvc;mdu21)0VQ`7>#Y8vb1G#r|ea8t#2KUp%<1Gk|2wfYpUv_E_f z2GMr!PEr+K)Pb{ovBSva&n?BGdaS5o;Be$1slL$T)lb?JXYX=_&qk!yKHJgka9=%60Yv`eWVKu z7WPI0?EDS@%Wp*cU5^RXrar|mmlWqXN)u|X3y>+>3H8>_vkX3u|rJ63Ab58(IXi8Nc^ zzU_@8Z8a@$NbSr0vG}EFaW?ycfRvx?Uawa$vE)vrnfm=SIaNIE{;j9~64_qOy#IlG|^wIvW z4|rYkg39L|ji6cWflHCJG z#e7*Y@LV4Y;32Gj!0XHA*M3x0<>j19FF)<{+JRomK9+)CufdEPJM-5~!xg}KH{`&) z{^y4LSPdh_>mp36xOXwEKcoD8$tM3z4U*&JH7O4aJ-vnT81JQ`FPf$jI5glQ zQucr3=qq>kXRJ_*DUFf1aj_~YD2O(z3PVN<pAkD2YZ>oj@`g|R=BeJ2qQ>!QNYW_ zWB(9iDHS2rU%$gvR_ z9qMc>Pb9BwRQzjBb%ux3<&P9Dj3cJgMngm6l4F$qp-6a=nI7`T{!MyVx7J|?zgO~- zjJv@f=xu!{2|jYb&B#BVgQ`BwcE{)<(+vO<(N$uJ}#9_V0_k zQSmk?F1Q#TN$sB!5G?)=|IOR;QrQuD(m4~5a~XlYZw=+tJ#Ta)1jB=ye*q=E)c%$i z#cE+*`)z|5!WYG)8~lZ_-~d@aBNg|(&GUb5YPeafIb{vfp<8`C5O3A7FAaRCe52Gz zyZS_&$pd6zE%OyIWG9f54gJMEgD&>Znr7v0z3$U0@g8$eHcjIf$-CG=R~1zPx4Pi= z2|o6L9s36mX5BJgdE&C{F`ZYkwdnUK@E+qlCAJ4r;zM5xeu8ICk@Br=wzb8=;{UVM zJ44}xQ;g^_Klrj!_W;cS1Q$Bss%i?>!YI1#;l#f9KXwlXM@&-ep>t7;b<@yc4wt5U zhhz^?xIOzy_}0N++jadN{(7mf0c+##U^a67U>NpkTwOvR(Gr?%e`>YvTH|k!xcz#x zKOZv7Eee_ipDSW7JFijm$FZBC?EjU{PI4~_QVvR9O0q59EIC`{y2LjzLU)Vm%qB0E zGsDaJ|Bw!EhyO)#gM~6+q~y2&0tK;id9hIDEqjwjdkM^L32g8{#7hy*;6nfx%cUuuDs^Vq8bd`gtdRm6lMDhjY4sO#4wc#$z@yM@5d^z8ORVenn5n zuBg}wKWhB-RMzhCR~3Q2kR^*8im&g&Ef#4zw}3F_Ia){&lE%*x&yoiqk;y-&9_vaF zAZO~bDDxiU;(GAt<({SdGrN2#<=1)v-6K%O-Ee}Q_!9q)jjkJ2zVa(=T;6mh;&d%F z#G1pT#V=I8UVkuiZ$>uS>*HMd<v?8Q)dou~XJnczh50?B$q~TPBt~_;lb6czxUX z9zZG3P-U$)#b$e=lsbQm(PpbpWN zUr7m#mM7EiU9|S9(Xp&d5iVq9zTuy3A9EO17HND8EK(ZRI@9&KkGFQj{9LnZj~13X z4SS5i_irB_+cl{2p0D0km9wuIW4fJ;0?titlDmI)>ad)YHGk!nUa_0lDW9F`faJo@ggIKGt<-Neuh z47gj1iV&U`05kbi^YrvEyqH|%UP@>O2xF`sAX%r|?5b&9n173hb{~l`o3M|ZfB`|^ zOww^?vao$vo}arsMuB31h6wM8vu?^dOvv*FtC9pd6ey$WQ0Q~sq!cAWh7hZIV3~(w zhy{K|7FfPF!|JjI|BbMz{VDj~>P~e3aOt*{_t(t@bl-cpyBb_HThMO?vF-B@h6|}1w@Of5`3(~| z?n+Q={zN6fnoN+bv3im>OfK|cR57d9C^yCAIRJ+E!1fU&>TOHBN{v^cMmAQzM>7sQFPk^?%4 zW$S&<(-ID%uWC()PBtp;eWUlDxKfnIG7NyNc;~nfDX^24CSB)^+OlE=-ufuA` zSCpTyVU(%*MJ>pX%*FAF;o0xd%5R2$^!nzAM&@(9KvI%^aB&>wrRVbSEZ~A{aARvK z41>85+o||i6Cc3??=wr2s0YJpCo#btS8Cm7rw+NNBRCftw@Ec$?k*1+yJN`Y^^rEF z7xFe0vboPX#jeheS_+|^zu)cL+>OCG$tD4JQ9`}b0t}w$kCY3iJ8}V}$z!%rK6?xS z`QY1yi8$8^7&QIk6qyAhpKn^{7Hb4Q!7oK$j(laQG><4^B@5&7hRFpYnMeEvrKXe@ zD=LcfqPI6~(*M1!<)pB2-W9I*`&7(0{*j3J)wn@{g8gYJFanK`of$Ii0yOln^cVA4 zux8MSjj(aqJBmgz5tfViTr1g6C9|*-!wspA2W~kGa5>2tvO-TvwiU1^FyK$fb)X`(r z%N8Ksq`|zS>KYiwUv(P*qb4-eHDp3(FqW{nrlg)mi6sYU7$YYXI<6x=P{rW&VE~Ms z`@})PfCgMn!!gY6{n`>8g9P`Q+#iu=MW@s>XTXG$*DYk=ge{=i?3x7TxSIrhr^CQ> zbY83-THoB)`*pbDPVglwVzq z!;QJ87QCWoPxB}C?Y^}r5$!tzTsJKkO<5xEB|t8=LaTlde{{t_Dkpg0^&zd~NRz8Y z?95CBFghBMApz>Sw{+(#ZX<}zm?Da%!I!kr`fix@=CZu(t z`$g!sQrx0C)6GeKQ+2jIZWuk#jg&wxsS~m9Ga$U&J&c!je*zW?LKk1(HGPiYVW13S zohmJyxb%kZ!jQFr`Rm&qIO;KUJWM>*tT;bpoM-uDq ziJM5)m2El#Jef#6m;MCpt&gQElG_Q~l$)C_+b>>)XVL=0*P>$M_EWGD8xak*eS7=l zVk)1Ny3WC~Px^|hX>Y0{r%2t1AWapf;bmle)bK6F;s!ExPMfFGt6(=xwklSTA5I@+ z);q^Gw=a4?vJT7(Edd|IFB-tAjkkCRlhx{NC%i6Apct7-FB z9)wOtareSjTto?SIJmy_84hH!2do(^ zRv0bsN@#H6?#%6N!9I<&$C~^w+-irPC5)Wr{G|AZip>=Al3*2ob~bY05}mTn@=VFHSyup#dj#2Vho7QA zJ|+M{sdo#RAH*!$3;?mAu}4?-rKHcnhV38WwB=gC0gKFSYrIcZN^n$Wu?O^|$|DW~ zrpR{5CjL41#^=ZbvL*FV72)mojwWY4y2KKU02gmcXF6Vw=3(PKdj*QLAm&iF#|o_r zWA_FB|4fEu*CV8 z$79oR2O8rJf-ld|-q9E<%oonxNrhy2;nb3|h>R-W@EjM~DCj9YHaECK@A1dT6PgXS zY!s)@ofsCNvuPB(7myy$e3zp%(Soj$J=SQ>%4JvjIK5tq@|$wVAXoz$E-6Z+nME&d z&zUU3Q>P`ud+Zzdhuy$^c}e+2ej~xjlNz zK{Hda?(xs6Z{s6r4s_VpDe8Ha#7A$Rx})}z?8zEnOhpCTG!3V*L!9?c2kcC;fTx#% z&3>kGK2(+;ENYzu4d-!M10&l_eV1_7xk>7TeR*Iy#l>(?Q8qOuUOK-o-#Iz`5g|Fo z)?=sYpj>iXL`FFm8$l~&bJ>p=ymxwXdc0>wu#_T!bZADISA>$RWFVMc`Rj&6Jj=Y4 zu-jswAA%G2;0X;<;0wA{u_~ecsSS>mNq)IPnvfp(A;9bP_g=7%kXuPY&<{{d( z!56ITDZ;@?M#-cszBBy-(J8gsB8fp;o6~K!J4E|DY#MqC z3UvpoZfdgJ7M z2o3CXqVr9DQN-y&?(qeIx=TG#9?u9wHAp)8k}DvaYCkd+&{U~zRlzgMkWb&ALM=Sz zKzkE0%8l-a@Lbr7AG|b$eBH)mS?$~s5J%B6@35tZfI~uuEbDF8&pd)hVxI&Fw6x5~ zvU~CzGbOESKh6fO%886T>*!9)FS;nPrAjI?5yT>GY7Y25jv_h8hYJjL*ZD>f%PskUB!gPWgJe*ukv%YBf zhhk)LdoSk~7iH3Z(-66@6V#%6oqrbi?Dt6KaRr`ar5JLq&WOZx`UA1pj7ydB*^zwY zd`S7`V9ET7Ec=;@UOvK~k6G&JSHIlMWqf(kHGk;VJYD28kv7$17Er;By&rc_T)x5L z$l04=yNTZ&Q2c@x<0k{88Ks2h9`SJ2u^;qF{=n1kt?3ZQL5XQ%7WGh?@4xf|(ELG_ z!ctdm4upBl=E%2xc~(|6(`hLg6HhjTc&9WfoyY``|F-EtUoe6s0tl_o=A7v5Qvgpq z5f|qm*m}3PbzB}?hLx`|M&I*byurg$uHsi<3gi?-a~^gq=Xe(C&L{+v86Cv--BPgC zxlnTckxbAm#0V~xZ=x72C!#6dJf!LR9VR6!x0 zuIzSdwWQvI`PuUx?CYdPohg4{!Thki!2D6jVcZ>GQ-3Lz=g`7=%^kSXPF2gm+7rI^ z@msrPO`gmLXW?+%gGQg1ri&=A)qJ3ZSSDQr>E)YTCQq7y-_yQFAeo(*xX^^&76rarL{rW0se&6wU1dfU_{gJ;Aa&IKp&mgZRJ#)G8Lj%!xi69!9v)PfElTo$s7I!8V580CtXJ`8IGDSwl`QH%f_})*g9n9bHI1X+d=?17pn_vpmD#A+ z0jaFc8}5ELo3OkPZaqR?uGyqY+d+-hs*c?kn=~B9l2Lpj=u1h+6e|vFMDFy?0cKE7 z|E0dkBx@32o4FVs(`2+ky8+4$sG^N>gBs-~A8j?iKADHH^{~zPD`Qzchjns4Dqcw&q*P2F;_MlV9o#oH?73lE23+PzT(I|NM2$UlxtAF)u5ZzbOj?D|Uj$3a0s8%1%ODFchJ7>b(}dvEZs^mh*UVWEwp zs7jtJ70#_x?W?LUE4&Lq6v2gYATbX45$1rd4*_~@wp@c3_PTzTs5?WSHV}3_h*Mo9 zS62nzmnE<~9C`=Z3tm7nQrSI~31kLfKxJj-2bA2&}-Fa7@mF+5p^$7S;m@eUaI;WqnPV8$Evmo%v7s`v>Idr+XUcC_DxChxU^9vPm8%yN8Atj!&~=DUP98wEvNq2n+Xt zZx8{RP@e{okIVv-J=~+n0(2~&OF3HcQ``dv_P}^@x*55HYAzg6j$kKNU`ug{2gv;) zJn12*$1_qman?zM!U?H6f#!!VhreEm#*qkdk79-6lotI6ee8+!S{9dRMGH^ za;N&#tip^mrFNUBbwg*VZhJlBHLhBeICqr zWTbB84&4j|zxEndK13XwOGbox3|MUj8RO1| zeS1MKRj#~O-4AeZXHY-?`DRdyQ}P9QWPn5o3}~wIMqT@I4_^)d?#u3h_i?I?cRTtj ziO?kYEVekQYSB)}NhvXSNe1?;ild3%0I<(nbkI%XvdWOC(ln$Z=e#fL48_CUqqI%w zl7li61SP1=oGSlG1ugt)0>jaZH}#ymgGMNcU(G#4t7|%Tt1mY&d(_Q(Z|2T`#%(@H ze(Ujhsd;0bwh|V0SC4Iw2G?Ds3V_-MtHMo42cudYWUy)Y}HjPMsX2*UkWg;c2_=Vt`%yCE@@nMAY=&;ir zUE#MRTNjqf56QuuCK@f5og989X3;-5UkrAUbys9$Z2Q71NBJRJVGyxTOr{OR69zcz z9&#op&YW(#9&X*jEZ-W(8sMP!tQe(#qa`hLif?9JC1(!#VR4i-KV`oPJy*q9M=QRD z5Z>0as@PwVn`!#;A`7N3w|2hI->jcESHIdt004^AXH8Zq0ntv_@s`kDJ*xQinA3=^ zYDSZv0>PpP#6j7+@Dru(Rk+!9fzE7 zE;KBOw0Lu$_Gs&*(NV=aX~jq`2sfSVEgt2ap*z(ec@AU0S;E|Gv5z%Qxnu# z{9LG}n%h*v3fT_J(^5EI6;}|S>QIC6QFuBmCRluwbYMSC0z)sDj)l|ZtQ_0`kQJU2 zc#~;;-`xD|4+bydCD2B*jyIo7w!UqCGleXNC_)?5RH>x+p)JQkQ`lq@$b9OFIF!8O zNV4YY@Omfe>|8hJ7#-#0cz^hEa|{MPhSl#2VRs4wOSg@ zJqo$huH<=MLQioy;z9~-M!l0WYdyuuSV$zciv4niZj;wI}95e)Y6?dj#Z6<#Z zq?LG`DvrE(xQmV}-N?e+e36~I#3H@#rEseyKVqUP)Y&j!>-5t2WD(hSG_WbV&E<-K ziq=Z%l_4qN(lEub2T#W}H_>(Er=*WkG1-%?UJGEt0o3560_#SV!F$v1%eCo{N5$;w zqxym#RTRVZ-(y`#il1w2-K-X7yfm42Fms$g7|6XCs8gp39o1LywiC%R$0317n5(h% zZUZD<4{2iRe#YEi-}HJj0AS;>0R0_vh#mZ?Uu@4X`;97wwjZ!8$J{>4yZot~5|~T! z?oU+FIDn^DRDPqHwqX`HNroObP9)32RRl(1_W>l?iSMU!_R2sK9NAr=?JEQeo~#bB zu8^h`^hd7HHn(BKXFzCVF!i89s8W~Jy(^wAh=z0>9F@NcKZnTjW|x5soD3RX9ICjy z(QiZw-FGK}w;=>lR`Y}DB>_2Hc)bU7Jlp2^uY5kK89c%Rtd}U5I&jpbAFW#~!g){{ z-$(1TU9Cn!>3d)epK_-#J$WOcToz6lF=!Q3ygTktbxMA1Y~UrZ>l&0QX&~4`fkR{< zq!S1kSSC_Ffbjh2EvK{7FtS6}0Lh#W1u7I)d*BQKn`q=qts`-y6IG+w`yI^f%|!j?q_#s8LR(C zvg|cMQOvF%(3?eahSoIlFLRQ9G2{>2DFrv(VaPz91B+GLEZ1~)ygRo+L#G)LYUZf* z%=ShYtt`p|A?OiW**dC_9HX?A?sN@XTI&Unr5sKVzGPyO-^nAK1xK?`u4!>o8?3A?d1yRDK~WRaTxz_D54hTw(5a;Nje!Mg3w{{ z+OdiKQ>*Ti4jX()@O7qeYe4|+~G1_YZ7~5s6Ihmu~WZ<(fQk>#sqmf1|iE(sVi+< z>?b{z7BHq}pP!usGUG66awS35>#S)ELX9*mrI*O%WUw6!n5B&pUDBlUS(nn7x26L8 zzHw0~81DENjCO6aB5=GOjtod{FS4pcxK6%<5zQ;t*oV>|4xi5`1vN2iP-3u)<(v&( zgdwZY^=ZpG=C3e|{GhJc3anv^2q?;sCWR1a@ag2+n&4e1X!}07ICel2(9#3gIuZ@? zg+=k)uyb5@K7G4U}rnT|+1cCTFGy+q_ojp5E>_xwWN=HkoR@VJR-A>7O zQzkAwND*Yz-Lkg=Q*d}Nx4U5*MXiIP<`WD5X!p4f#Xr7muFKKUfA{wN)F^PY0&-XxnxG@ym%40U!lOMU(Kv@K-lg6w8ApxYhFaG*f{DDslzYjm!wxsHK;f@ztYP#A%eAYz3;9#7uV5Sj?WzXU z$j{MpYzD0ghZ!&#?@w7%;`KU7ZXekx{Ki9O-j?E|gH_C+7w9lGgEE#ejCaEXuY7LX z>o%!;q4J0W6VwL%F0W~gOZtv7NMww-^gssnk^5)?yv?$~8vxp9guJ^u>UgU1OC+w7 zGJ%Y~M;+X%{q~Bs1idMtNwAue(5FhZkf9=<27dipW^Ub*f#j4|)9uhPG|cBC^bnxT zD$DH;Kik9tfDc5Rt*&QokPob1E_Ry_$M?e6^+cUuJpP~79E;044=V63A)89I_@6 zTJ29yzUXk@JjglGb%(hHtj4X7jtriMlu^*kfan`ZD*I?tPxi8L*gxwf>*EH*(iWPSG`hrbc(^KbVC+c%s;k9#;``?bB z0dnJ%iZ0!7%4I<=gES$T4GrakxaX;S26NWRs|tWrK#aIVJ9c8QpsqKkJ`oS&(E{e@ zY;$MbKr3_zCiemqGRw2Q%)=_3rcJQ@n;KM=8cZ@TSQGjWp6GpImudHWS>WRNjzKxJ z^MJ9MttcL4; z(Arxs4yTZ0EJdUyGzMW>{9vA~blA(b`JSguKCj(x%Uv%unwm;%`{5}ozq3V&e2V)% zfevk5rC1u*_mtkQ{(}QBW>geDq>lGYS-RH9T&L}Kj#b8Y%LDsuimG}LLNsyIY%aTE zG;%>82_4T!ABl>RFr710O$)^qJXXph1B{Pp$d3_}RnNE|utgb+0jx=`gZHjM#L6$Xs;8L=*Yz21o zLGB}}Gt8tb`A8tX6l8d;zP|I@zCHO-Ntc{s50tDKpnzl2+qgK`ob?O|3XRMeKx1qW zlXZcXvB9r4GYbbGi1`am%-Wi@SJiQY%szY?S^~3!>~0=|BC--aebbV&@W$R92icJv z8(HySJ7_$iiTZ+9r1bI#+$8??C9&g34NtsB)k}J2AY9(BzeX?+|5Xh?xU;e+)`BT* zzCKOo#qKK$ zmYm0nITjlrrfdV)`EBTB8aqdu{${{o^D&2Ez&g35{YU)eK~8LnS?CN%AbiIe0tdgH zriLi350z_IGLEvIrV<(gne(iLPNSbkv`WO-Q~SdOkJ#s()|F;G3m~3v(?s@9sAO)a zQPc?e;Ety7X;ALqV(Fk*I>A9@syVMP@k*o@1Uc373xbP3r!IJt(F z>Y>D`-*Lt@Az0fjCWkWq3CT}V0g2arx*DGXBy_axu6%g%c~ICnJjUuFcu|v8O}NE0 zE~5+4`Wehp$b9w_E9+P&v*{0t8u5sjYqBc7^0~T)LTl<|^%lNW!GId$A*3xRF;Xg@cLc}gAaW2hC4X%Jij_wQ( zdmXJ=$C&al-6Baw%+$rWyBg^9bmSUh;Q~5$a%VH)i2Y&tD41|N9}pMqQwoNThh12J9C;0_iH^BuKpTL%yWj(JWY2y5fCe#kRUDYxBKX;?y1;*@JGuYC)ySX z&k>`_-D-0}@Ma4lXsyH~l3~Uv`z`%q%JQ^X5?{iry*FGS zUm`%Bt2$E@*9||@lVz_M5JMvtgi7QeME6_)J!Hdbf&Eg#m@@A(2j|}9EOq)?VzN*U z-T*5>*Y6ULmxY8eXH>emD-#P@nc%Q4aJwHgE6f2MoutH2{d?dQ%dU*b*UK1NA}K}YBc-(snLw|ixuwi z%C&Z{I4`jTkqa=zNI!jjNO8|KK)Ic_reiHfY8NFBbe2{cI46DOXvNQa=?5p>0i#6#}hYv>^ zLS{K|&O-N(vK_9kDd(bJ=Y`gJM*gdUmc(|<3ice6@ zg0t>9anIJ6_G>?nBKmwKjs3)vMYDNw(KgW$%L<)|PpDtC$6sk!R>(;)83Yo-$`Imn zXaJDEQqU*+W^3gGOy~0R5~F+;&JK*pf4mi@5DkVLx%tMmVz?^`KVS}!_RAY8Xt?+%7Y?wN`@^TvYEeCh(cD z^K|FQz?3xJmFh2d+~2~ojOv;OSk8MIY<#P?;n1>m{T3E@0S9(wmPTD=u`PK)O)WPk z2)UJ^k=dz*22FvT(Y*uVH+JdW9bZpHIzTTL#>i<#L)WjRK(~DkZamvWbu|^3k4)^y zJwF%})1hx-9Br<~2)y%~fL&PCbgce2N<8%pg>M~Nu6)xdj#uwTiFUSnra;i%HQ>p| z8FBWy;82#p8^lep=kfHkAvq)nF<(UtT2ZfdfR>mKwm?+p`3^szAdKsLf65*ypsZ$; zE_X~vS@gw|qf9@RJL6tePG3YzY0HQvr;D1BCI2N3nkEHPG!R?~#_6Mpor|-%XiUys zoB(r7&BARGv(wYcBlTx1-g~$=xYa*8vT(f-Y8>ZE609<3 zum+>X#c(}STzwPJ`SOdHlhDk;uVBM?@-lbZjYfU`4{I&HhmlFFG&Qwmu6CRI{8-|` z!*}`xz;0sr;31d%FBZTz^Tax|>am(c#Z4w`v>cumoO25osSg+Emo+CN4mT5>!9~>R zI96X?d9xdu^6U{jI_R^KFg?$~p^b8HUQ}9Qe|cIvt?(0tAvQYx#R0m1q*JbDZl1(~ z6m`4TGxMLbe5f#r8U@MCTkk-x%yXYfxhRjo$RVM? z?&S6+FIEmO(rk&*>zqs??qDok@fHC!55hddHM3XmS9(LDW^~Y^xqMkZ^ zOAV<;Yn;&A&?`meo8XZK*4h}$?G{xj^0<}PGk)vZRm#dhE(yiRQWfbGu1uS66+-gc zv%GqQEHCXsojV)pWtz($O?uUg_KGBR=-fHzl{(354ot%@c%8x`k8-I}7=0p%FnVY{ zbxI=!tQa7%2JY-`2#+~P+9v1A@|?L|k|I`p9tM}$i@?rwYqeeFeFs3+aP$s1WyCw? z(Wy!^KF8eFR5xb4|5^OhZ)8-n^aES~Od{U_pFg(pS`Rn_4TUZ~byGtShWbPOOQhZe$ zmJ9ja9CXpb!*oYzim%QhW_=}Y+dPi@jY_5mW$*Z)O%x2`e`;0kJ0{K6K$+IfFCTQ< z13XY3pYlB#`XI*aBk{SF>u$4OubhYg}rQO_agL+-O6A~wPRNgt3n=}9Aw}C9L4sE_? z;Z7N|*A$>-tf;=9t9NhJP|`UkyRX4Dv=`HnQe)kc9o6=q-PGI1&K{OS8+A%`#@vbbli(09J9hM{^=n2|4B_QUS2 z3B9*I9@Ei%5cjIQEk&Q*n*~UWIt>$0`O{6Nzd6Y+_b3-QjG0_BYUePhE^}TODw!kb zBf$`O&1Q8Faxf{+#A7;C3zK5I_Z^r^`=&HKAUfacb#K_wnYj(ry)+>NOxT=>gJHzvkXLo%U&iCt<^q3&V@E zBK%Mfdc?`aDpAF^4neznaJIUlDU67Yv*cx;2BtLLr52E@E8UmuMIw=42BEGs$R-gq z65nbD?}n#yIGPd%fc|D0ZR^k|sh;;15~C^~Eve+_Z4jfR0D8pAU#X*vhNhXb8~6bl ztmN+=S2fww%8XAj!gLREJYk(yaDzA)+bLTPqNK9|U!ZDKkue_P zMHSfVeq2_@lFY`(%PWIA3-0USjcpT_RL z2(x;P5B_8{g1*P2b+(DmnXW3a=S*Y=kXyO+^z`beAvAnCA=9=SwXkH^EPwp-nxZB< zdBt}(K!I-V*n=sia=#o~g@;RUqCVig8?L+>>->f)hYx z=>?6sYs9}DdUIkvUmA8_HR_CRTEdfkfxZw>7Hw!}mjd{mo_`msG%`JufJf^I^M)q@ zi9)vOkZB;TDb4tTxcmCma;IZ6A?>cBx*m-S5__KNLID-DneKfgt!ZV;671tETuS8H zZ&`OAe()h841D7Jz`%@2S>~GCq!QxxZZ0C*!P+LzW6NC+_!{pd%HF+NZqBABPi|b! znMnNLP>SvJUp>`E^|M)8os|Q-1d9+(}4V2IYgM zh>rTcZNQsFrO4$@^^-ZbWa|Fiq)RbXfzKGtkX+OE-k^u9mzx&9X4rHoJs35bw>v_R zUkWtB9m71X1Q;Md4Lw1{XgDT^;l6zqtCnuLb|8P#HDA8qdYX^p3YY%*(G+BdvJ)R( zkKtm=voyZLfJyEwlS>mLUP-XBsRG+bH^)A5X_ea)hIMjcFy81Fh)~`HD#ayv?EWCl zQTsIMNT-+?RSQAFL3C6>>zZQCZMy=3#Cmqk!&+lLpg0%zT?(k98`lau7*M7%h6@Lv zHpBvnA)8ygOI_*=d{k7TE5k5&=2$@x{589(_A4hM93h-bEyQI%mA)B}`QI>ytky;f@m{abNr5lZtiRe|}@t&^Thn$g!PuvN2)!mc|J?1-l4^ zHxRF2OBYE|$ovr;G*J#n0>^N46rvRn2QYoUHHAGe`gv~Qj%>GK?g+3O`{MEpHeCZY z3V5Cc^xCk^Pra5qyu~bY_XZ<22!u<@I9be<+?T?$q#BpvwtFahu4k9 zh5QQt2mu_~v?!5s@0U0k5DFg664DxhaUp%N6-*Dgt*{VFP%p%-U6Nv>ecA|X(^rc4 zItFfjKh*7&kG^@&Qy-g#ed1AIv9rB}k{9PSsT*p0k=CYTZM9*0 zbDqOCQ7V>VV75XPv%ZX9*0-}LSnzwV3LSf4;_Md0M+q94XXn90$7kLSBiSkO4qEZA zLOJ?42aE~OdYHR4dwu%~om-^w?oyY&j=PLqja+``PqZnpNQ++ccvk~+v#P0%>3cf}qo?D2C+j5` zuC$k&rjDPzm?!ra;h+_ucFG<78pe!s33l>~O+M#S&x%Y(9aoMRS6u_n^rl0rE9k-y zXL6kL@Z2y!{YnAfSdUqi{~OUxh|0z$X&v)ih$1J|B{Ai7p5e^e-|s@ z1k;eje{x{{g))JOgcvo$6Y-4uRv4{*A!N(ZYR^|g`Y%fL?6A59VbasO z0{Ss67tLE3JSCnUGpZ`XEoS^JXGbQy1oe~ zQv67`S1mwNzoadV<2A&7O1RLHFp_AaZmQFSH3?**BrK?c4fu%S3f{dfn@%EfIdfQ^ z>^T0qJu5@4Rspk-mr?WTpvNXAbC@<#=h}Wds6PgvE#os7EtMc56KmARPR{sSNt&r@ zSkIpK-#6#Mt~9uaFGqO(-nM5{0uAXqpc22GrD_mM4EY!AP6nKHYPzn*)xX<>Vo`K^}p^L8fgi52%&&0P+iN#wgg zqY)+c2aXt{^yadJqSl41-u(XT9!ndU(P{=0;shr=4#nN~SCA_epXn(uzegHgp_DS@rX1~n$HBMT5LJ`xU-`|S^_1Bq_1?rY1Sq+Y@ zZd*#XZO*f64Ts!&qu$+olE8sCCzYf7S z);Qe_)sI%nQdLg*t0wf(eVVU*RU)N`de%vn+$$Q&fiP=8?$_$J*({U;5^Yw$ftNCn z@4jwl$E9;6!gw{A7;Z8_gBLb>%23YtAJ?6bF1l~RipwV0Xsf8}48I}0!x@-;IR0m& zGF9U-Y5NT)$ZIC3?|%wOL3H{rk#bm)QhM|CU2X&zxXJ;Jf(Iz57iDj zQm%O&=sf_MPSwpY2{rRnUNir4R2=wu${K95TmCt@G_;O7U7w$?tJMj;mK&QL;9t5E zG7Doo4AIL}}_6#tG?_oSg1oXbU zK9dJsS&uN8{I^L-iI4DR87Lp%;oP7EHIVESS9peBoDWBkQS7K7_{9@Y+pmlPkU?i|PGlfpVPNGOF)!C~|81%ri%sYeJ{k%0KxycR94!MvNIkeB~V z%Ov3(fPH#AJluNaw)^;I*~>j=@1OrU%EJW_YK`+Vm_%EzoT_I!oKAOYIdLGZDfmE~hdGdffo;51%smdT9TIOt8!e(-V|uC}ln~(`{g#=U@)obSc%I0d2y)j?I?&u=Q}? zL$(iWhbeekqWyQNP_oeX8HOy^1uo$fGHX{u+HNVX6{Tt#V#7xGnNuUyC78cznc}i+ zs+Iv~myJsIm)!_oLFjBV2=y{)bXaiOU{$Zmw|$Ypz~SXDUS=QWV-|csj_xH*r$-H` z^C#Hpx7^AGB-HHw>RU6j>sCTxdW`&?8r-+%aAX@B?0F-*@dA?#k|x@402mZrI(a8Q zAg#JBGOgI0o0rywWJ4wE%lIps=Z6p2uoXE~A25@xU>yGi3r!xMjA@n}C=0W+=oelYb zFeeRoo749dhwjqukxK67z)7VTbCrC29p=rUNr?IYu+r;DROAmNx?p1Mt(heqFB&eO z;v*WX{edZu=)?8i??d7|ojOn0QImAd~T-Lx-V2D-?04#K`*IHoQN=^S)D z%F*Y2r{B52xZafh==mGEG;xR~9}#Y`C>sKELBqwPE8|YN=e&MJZJLRY9T2WTQC>Qe z769d*uw%E4ixjac4d1-Q^G~qbo~Ge{y*dz&kA|=lPY>$;T!D_iG~^}Su`XiG@iDo$ zKm+%g1DHUjAijK^Tf1P#ge?CVgjFWd^88vC;3enQ-2l-)y7EjgkS-759D>GwBF-ge z9AJ8_&ps&7kUYiS9k*qT3yJJG*<`d=NwRn%fYrFF&U4CgtK1`9TFRc@g~I< zcj9&A*q^Q_Fz?S3Q-G7|2?O7Zp?PCu#E~2J4<9r%JULzgYW_jMG)!TSVZ*|sPbm`& zGY))${PyfuT+#s_sTe;wUg>rp;U0xB3WS}s4)aOhGNW0;H0@(0SEEk9ddvXt~D#62U%br`(Zy;#2Y z5Hk?Nq*6b{mhzjOTxp;gN?L5v&eJ{Vq!X;et`Hz2BQt_n9q0&0BplOe<|+XfRehwx zE(w4ksaYW4y3{MpL(pz%$7iq=%#t#)Q2;DCf+;}Jv2$WQ`V~&|qE(p>nxMfefsnnA z`HbtbAsh95mmO;1o%MmCH6LkfDrFx26OBk1fiC)P!P2vbp|-xU>p0;Tx$&SwdLZzi`V_Xcln$J9 zPjN017+G&!p3hvAH*UElGiakHqv9Z+dV}&BOp+~-sdB4#iei3T=hz&yAIlO8;AueT zQ~(n~#Q(ub--6z*c>-z*`GH4>@3`3(%yUmpwp{H7tFK?~$VnBC`#KC~q?jQRUo;%u zk+6Op>kcr>W74M52}*EemLLH3RlD5GgHrp1us5cs#{tpm*NM^tI1hV;5Xd2xU%}6l zZwUg3d9c4O1;}og?gH-V5)6N@+}MVHY~wcBdIYC&{U`r;ILn#y;Ks%6l>%=arfC+j z`)ZX>??;<-jYnksNkOxC0XH$zs#P~6fZv8JrxzcQf!1alzX~pW|98Z-q2nee=lcw5 zAnpi92x!%T;#0qJ6`{&lrp09?`*QOFkW$;=?_*UyV3qjG9elLW7S?Ixc*y`?&pSVY z5>ya71Jo)IpD+sG_U}pHMk0%NR`?OZ4unY5r-?Aj%vH!A=%oHabj51EAVY_|nwwdi z2VwyG0@R~OsZN{Q~a%9EY$Lw~No+Y%w$1t!Z2$8r2V z_(H0^3lM5DZCLWfYZKFZmD?N66L@Qi`l9oB^lW#*2-_vPK<*)sjzn{xx_$G&pK6KQ2uDRkCa(Y$nN|m1;mkToe^e`_ z;lUcy+E2I-%lG^m=74YLR0X<@O2HUVD0QQGcP0SmJ{nHvzQ)t3_9fxRmpD@9;Ew}K zb$Rbw;OTyzOFP+Vmy3F2TZ@9%M4gtjZJ)=UWIK+rl`0(&s4)j+G}aqPNr!ul52A6almHJvw@j{}D+{CTNn*uh86RTB)=fDR;$BHb1$Ut3ytEi3`@ zv6vPFp^gG%=T+h<{ZJ%pfPs$-bZCp!8~Rix{!5|5kj9J}tLuxQ6`N+e+$BOkar|`c zqAiU~BT@%lIE}DtluBI2V^$A8&eq5pgq!M>#pSH)ATELjY3ba`^n3aH!qu2D;wKm0 zq6!P=x8E%69kAq)zIJtFN_{?4Zf^E^@lI+2LlrR3Q2TP^PVju4sQ|kZ)@{uJITl9? z>8xdRvene7jmpH!RXqt2*E&l6DOl4VwMOsVsUokO)D~ z5g%)$APvw$?7#E;HWt2PP-)sHdKo!wbTbv`bK$%fPexeMGJw>n`XK=j*bzJNuF51dHnSK@#z^#ZJpCU(QLn7fXDS_)rm2!fI4^wmKkalO0bD4 z;3s;5P@&qEQMg%0<}0*(gJ9ig2dIf>NEak}j#up>9`l2$8nisW{E+c3eE#DoslKZY z&|@lu9~2;mAVL?sXUs!ed8CfaOZV6`5=EBsmc^3!0ahHd7-!T!yOC{$RYA zIf_16&s>%VU%2ws3aH(I!uSwn%>>6Z&J)xw#95}Q*2UweeJn3fC-EWE-+dIar@n2x zt7A|9mni*dTh|c@A7(9@A?4q`lqyJJ`!}r0gqoM`2f)?xAK3Aw-Yhe>t{=`IuPI(X z<4V2PMYYoPvt6xLE>KjI?q(H*6j0@7dD)DJO+@#K4G4&DIi#&{ja9>`6pu<-z!jt* zMqsPkdQ>+~_p0_4!!yxP&0!@TK*Qjp4}vK)_LZlKw5WQJU@U_8WUWEV3LDINi>jM^ zML0ocojE4AvrjB`RC_2>&H`?k9i%i6rM~3*7Jir1nQxk1n0IKJUx=#nWLNfjvMfn! z(5H$M2_-&gb?MwFf6OIhE<$yruy!1HK(pe434;~R&cu**5FFl1=&etYy=rU-c07SG z9287ksW5FZD&aix@z2lw_e|_kl*aKXV64>C7q``YPElmDNwXk5!!qJBmpu3ud`<=B zq=TY4XQEDWQ2ix{T5*R`>cnl={cUzve3r)xWA;R@nHP9(zt{qbs#3`Vo7f0Y3AF+V zw}7(j6ywa+eddU5h_>$shQzP~H^Dx3>j&a;1r&W5fE$tb|AvJ4I?imiGO5DQh-iP+Xo{paS$dUfmFFOT$(P+4c?tMfb&YTTs*AQz9e9vc2)GO59U{x&! z-d9KTbp9Us7Yk^Kv4z1iUgv5AVpJxP{7+QVHNd=#OmcM!oZu!cgB_*PI}fS@kE_)^ zkntWVHp`g{4Bo`GaX|Mx@hiTa=9k@R+qBaLjKDRj?g)02tZHh#m9L)M$4!kmRU?ii5;A%z#yoNs{8?>sUK; zFkMrQ`gFH8OgY=l)2Ny=QzhJ%3wdHp6vXy%VkjZ5b+eSQHV!OoxQWSgzvUCswlo)} zmOxoLMfxWfE}S;X&GZXxBX=?2+iLq4@*{y>^h)JA|D!JEZg*uJrOkQf? z;FRZB<~QVOOyKsCRY0l|!Bb<%LlGp}WVV@A1>Q-lcon&KF-8}EIGE{wgSNsr7+I`) zeRr_5E6rID!J8eRf4;h3j-K1w8`zedgf5t|E3>N$A6o(*i#f>S<9KxTmBC5FaID8p zYzBxt5=Xu5=;o8WMr;#A^!MxKS0|O22$9X#(=>Ovu8H6OajSb8rp`|WAyM!$@vQ|_ zy8QDq-`jnVuub5I*&$hPG^W+{bBqz^+l@bM6GpK?*IWl!4K$qXEmlCFajp-kip8yg zeeqTCAopx{R#f8P78K1$+)>U~4j;5$$(M=VNMH>Pu6+hRzKu~fjC%*{t*9MHY8{u7 zz0{yokj!r`CSj$I?DHXdTe@7iZ+1DB zTHjW@pkXz$G*S=lR=uAm1`Pc|8vdGZ?gw5F`)(=l zf}Iiw(0lepM$^wU~NP-5wX3$!JPM z8TVz*{}wVBwy}H6!Vq5n7(|2MAS9l zsUig_=yG&*SE0&!vISYG7h8F*)j-~MD52S*tXJE!i6f4a@JjA{wGvmI%_nD&ZrqFX z?opEuB|!I6Z3NWJ?-)U#3)0HZ+I^Y_-z31Qk)(8R&yu?hs&U1Ecy~zm36(L5xZBS2 zE&sz3xC)*sSp>qUJ@pQ;9*(3D>lGv9vOq}}6wsZUm~TPCEkP4frP#TFceef=OCrsE z1fck29RKx{qi7RX-mkxTx!?wj5Ww0tBDD7!;OHm&reNPaKXv!6`nkUMMwerR0*Ydv zy^^CLEhCqbB`g(3$@shnP#M-ZbP;l+My>~o6nEm%JGM=TtsdkKa)~sq;b~X&%dh;pO?qm z(yYSlcotimL3kEf_3_~KxE+WWwGYYqwFW=yyrN-he~BuQ-g^&z`%CLSmmPt+56k(q zT9T#Y>A^f&vDfHco>&cS8b-#O{p8 zxSPfj36qXRqVS%jDPS)3Ytx5+6c#>ugXB4WVCOuXWV7n*-UvaU0+jbN_v)WN3w~o^^WyI~PMLb=*bm2MIW2@j+90^PK_pD-~uw^{a{=6c>_`ldK zosM)z);!$mmDLZDAm~)7vJTG9M_YR#+>O>y)t_eQh494*(C*E|`n~~L5!8&D1BNp> zx#(h0I8|kQDCWK;f6*Re4s;SKv7ar?=Cw#Lt1XBC&qER=qoGU4j9#k(=yDhh_~~pADCSB){Lv4`K0~ZM<^9TkV5O@Y2h*~>xPx5j@)eMaPED2q^nPalgFF6ID|WkQ2pi%+p$PC zI3T~t8h0bBz)0eWHOmd}LNc5U-!UCfI2_tbTZQXsD(pwf41rp4Gc7wM9Y!t1;o>Rn zTi{T7=>`$V$xN|uF!MmLIsC~dZgYh^cjCqIfA%9)1#RbpYKj>LnKX{Bq#OSBnAiSb7eI0DJ{;(97!6#DTF9t!V8sXeX7}LxjWD0I_h# zucnPHA+SXr67Fbb>I=(&&jry#)O5kNAF2 zm-7KB;=K3RendKkN5>)AoB&n5cgW6wTki6WNM57`*)SFYC99AI%fVyJ76>gRmjs7J zA_V~|ZV!U5Ex24U{Obj$0tIySyc|F?GYMMh{*8!wHKZ_IE=J0r*Bsl!O( zDZ~iBk6#5%PlDW}+;KmcCL}&+kU4QH+{jqQh;?7@v<6i$$oCDpOWP5nXD-v+u$=VN zf@Mi9Fj<2+$zNEz!9cKo(gUuI@<(&l+kJ-z5o6LdgwD!%W1R}F-Aa(5_6t4m20<6! zwE!@J*lL@=41pf=Z5Hbt@^TA*BC2TwxH67_l9dBTK-8fFJQhzK>}jY!Wi>u|{N2fB zFj;;y6EFgI-W;?SYl%uB)7)A)fJ?;~rdGnxfiD$Jy}SoWS%M%OIodBI1=rz#0y|s* zMQ+y`Z%O)nQ{;L;Dmq3$GA8O<@BIE>X*T}-%_ljJh15Tn(~{N>xkdE=xd^)5+o|g> zitU2YhYi$e?^rC~+Eh2wZEBi&11tBNozk9}FI*9O@pG=&t`ck2L_y0i8Ud2vWw6N9 z*AUR(+RRYv09S0c5EaMp#S&DmHUfmAWzlr`Sa6q}8bnhBJ>RV9vlIpCZ%cD?mmT_o z$s5Fegn_b1#xrQBW)SsI7SGsbpO{DQuOlf5kkMzV;q-|FeK8E$w*HdJTbr#UDg6|X zKO^sY;;$3C0ddoBiGjUd0yusvL+l0Oqq~o#?T&oY-@6;bPWPw&P-%O!H;~zT`+`cT ztr$NLCL(oSoU?w>y--_fE2_&Nw>2^~5MtJCgf=kSHenpjhR=vw4x&jWL$R?Ad$#)J zd!KW+(|v&3e-F_h0}FW&e4Bqh_%!GRxx?kK87>WJr5nQUvPT9j5jhjJ=$Ftyw! z1xhnaAVNyKLJ9(g0NRlJe4sE;R`hl4%l4wWYgX?hx5S=32T+_*^jHbSEa2BQG&!Sy z_qWTFd)j7iiQ3cHB{IMJfR^&w78;?>vwyUKcz&RAj0;U=&cxF`_`rvm{<}MR#5V;( z!sVcKz&3e&RT(=G5 z1B5@D)%vc@^=POfiK!e~0#^@HXcX#p{G+{3w?ig23KbP8%rz_=kp`3H*m=MgpaiYf z+n#n(X3h5mf5=8OWX40Y3OX_{ZwMd`MV}41=gCwz3zxnsPyyfptRM2P)Nw$PypysYEcn+^4*BPh^ zq6Hn`Ybi`rc$Hu-qm)p7$qoPN;IqfDKdKNymCnMcl;;PKXJ>oqo7b47=S++QwbHQP zTYF`F(PGS#1xs@A23TGz>+5dA2(_+fe?C4s-d{w6MFU*&Lu#d@UC|GbVnvBsg9Ogp(VFzyrS<0zjwe4B=EMAu zvlh1abU=1?*z%!#C0PagtNHKwxF0dLlD~fs2Ll4DH<;QAxg>B(dH*scbf!OnuCW<8 z9l9k#Pl>WE?1S1g2~jqi!30XrFd{8Kl2uCbV!wpf!cf||)T8$Bwwnv_XPNg?zS1>) zc)^K9`6gQf)ik`sg;Tm^vtEANZ{+7oOYjiuOOAg}ZAqZgPZ=6ocdUFOd@W~$c6A7ly=56*o? zIgL}Mdwa$QQhnO-k1xajNN*i+xp?WnKMn>vHGUUL57fr=9(`wD`%}Cqt-c82Z7fFX`|6%r|>~ z9Th@cxcwCIWrvIDqKj$m!M?HJ$5ra-H=|11&s7i3i$;~U_!*xppPKi|dc39CeBq{n z_*?IUVTm7sadw&oZ;mRb9ozfq!x^R0`3d5B=?@7UO7l_nP7nDcMo0X7O6TkB*9ud* zt^ChUHjQ5va4_ZfTdzx;`;I?2W%LYrF37`tCoL!fA?{Aa(9Jx)(|r>LcAq_=E}XPm z0DQ`5HvN%XQU)azNCZmZ)V-_(&@Ru%P6aQVg_FU|dUQI>MRJhCG{!5;b8k;y3qf1I zCB*t}EoHIJ5oBqi+pf+qVN%+X99OX0Lp#vN+#q~*-t?F#5b(7bISht3D;yF zu*RA@pRQ^>@JQ6SB+5DnG8se*%(XSQMt8U8=PoKIn=ZC_H(D6KE$1b9zER#ClOXLp zSqv-j<6gY^CuZ<4RnDSrZ@bt;rAt6__0j$(dBzB{`7xXAldc6j_^(D=Ge;!lw{lHGlL z$q!P>+b8S%8**;{{5}zy@1z2s9`aA=Q4l+A0Paf;Ktl5bL-7Lz^pFJum! zgDV?v?y|8@Q@$dE5mIojL4C-y5!-DBPk^nAN@Uc*4WIc1ZFWg} zCw6mk`YQhoOXVnudQkL>%p2&poGy02Hq7d7oS(v&I(i3Jwu&mo>2?Ih>DD%El$)#C zT3Va*4_x+mYp&wpOBPhmAeytRY_IT7HB_bw+NPL|K{rO&m=}sbx#t zq$b}j^it=O0knr#aYMqnXzTez=h~0GYPAJ*J6*lq*URcmzf)A8r}*rRY`;8NtS&Z? zr!9HNytvrKXwv3o*%=4(?KWSNr6BEUV`Xcvc3JCzY$FxVwTaoN)5G#UZ)R?s>yZ3R zr*z(z6ycQ8kSJP6Yn^0sNHlwqxbmqaDjTfxg-)l6!xobMNa5GpUKP1D6ZZ*srA6D{ z`CR*=J-)~GUfFS}kF?_GaIJx?H^SG5M_F#nNh0byx1`(qhfSv*D%-Z^IuDAo`rq?l zPO%_~iuWdzOO4j))%`sr-?)p-eLNUj7F8M$Y3F=dwe}lwsLu~f-^#@V(GYyr1Ptna zJSnW}Fq9k@@$yf)`Efk!i%OxGeDe5UU*&L>Q&8Df8jq6@RXRB^R4*qmE1dYGQ3o4f zTHb5Rs8{BjKU9_0$Q`jhT_c!3kQy%f=CkU7t5EV zey{T`rBut7*eYK-Rw1o#>g-RnHefDP3cU;-p^hQB2!0DL;PYEKkU?nGP|*%Yz|PDFE^`Rao$8U_+ALx)QUv6!en705OFDp`b}uqFAPBCccrks%E6#j2 zyA~k4-is{-j$lDmtf4B=E9N;j{c12(+L5$AKOeM9N?}<-NV1rnWFRo3$;dFaF(OE9 z9~rSt?^Y3SOX^ZQRimm^kBs28O)jPjd`ydviwTd!O-Fo6fiVY|Q4o7_dR6wog3wH6U=V z#>_=0oP>-V~lW_$~-c7}WXU$k!6TXMvi*;6dWAUWoTECFpHLIJFJb@NV&2wW8 z#=U)Lqti~%BVY}U5AwYpn*jc$d!`h5`!&ma?nx}PB_5VLmLuC$eZ=wD^|^3WQd)eb zAwI?D0argu$zOh!YqMGd1y=23I>+==LHm*iPn#Q5z=L}DLlH5K8L>croO$}^F?VOF}S!qmoYyUXc ziP<*G16x1I|FrgcHhGbm{5)yc{>9AWqIDilt`EaAKX%qP<8g+)Ie48S+uRb4m)x)d1G{Tp3(__AZ2W(& z$!F4OiwiJwe^lFjy9Y>#@u(zPn$s3^?(;Af$*vQzzm*rem02@e1NfOIxFbzf*eBzK z9#la@N$e=6K}0*EMsIuj=Bisur#x#CA)XcNYthAU{(p|1hoqfy5GQ?!ruUTX_JpA1 zBw_nlB>AaI&cr@?>CHfhNra$^dotn|128-BR^pz4;NgrrMilk7%W_@EkmFQ?a)Bkl ztG_o7?9LHD5*Nedi$6Ab00aGH%o=vi&d+Xj#go*=p5JiioYv<|8owm#)1zk>mv=0` z9Xn7zHqm)mA75J`VWVLj(3l+Lke77d&f28S*ZNSR@Pj@^&P^Yg4yV9g6+8UMc?{`F zqL62pxO2(H%k_>DMB`J*?7X}atseq${YDK7!fT_f`UC~P#j*l^g-Xp2MQPl;HNpX8A;f-S#Ssgs79fUn#_{Ny8gOxJ@n2YmYh zKhP=S8cX!(+KRvhyf-S}?p8dZFsrNrd%aEViS)agj4dmY0;ukEL1E}ef}YdMUSPY(Dz zlCm~{iSak4PhIf-PQSj|{|p`5zT4ifRzBraUAb0YN0%iLfUfG*n>}mbTo#(ty+r9Z zzWz}JYAU?_hLPqR#Yesda6#Lv@cB})9Vz~T>xaxCqrM1Xol4-MKP7Zst9b?Yc-Kls4{DKT>hECVBDd#JzHuZ z{8!3@DQfK}R0D6y9r0FJhQ-kzH{|w_(z&L^!HgV|6u?}%zJTFnj|oJ zjL?@^eXj493sN8t`?m>Hr)_9CRU4o8-Ilp**mbN|w4@`QeqMYVgP)t8Y}Cy+@+>)c zNT}5Q(2z}5skm06GJAv+(LJ_>FcB;6)K#D9CZ1y5P`sg4=-V;qSG6+Yh3B+?+1u=h ztHT|u{W8%qJMpz4s@ObAawKQIaN#kUnC_9ujn{74D5XY`xH67Q7QU149DTi@I~z{S zFm)R>)_L4G?YCx$k}9r$a9eIFV5vzb&!k`nm0G!dzDaUKrPq_%zAc$_2egKJJvYc| zdCBX3B=7cZLt8n|Ut0V1mG{@mr+YeOIHg^eVc4{8$B2 z%PU7+>-Y7NYCuI+@gJqO@5w=h(t15@5xQY&Vj%RBqoQN_uxR6_}Fv0_`s*Y zCtQmG(SPHK29c>e*V5F=%uVZf1XJi1GQkVKtkx)0j;p=Kh2gtJ?% zzebFP1Nxjj!$F8uWqIGEU5vmB)>u;x2<{6rvnjFG2UIlmg34|ZKq&<{8t@*>%TEc* z7~rvU|BcKIk<85(4~|k82XlZ|Tl9ySDfdEi6}y)_NxikNBmBo`6D6j)3vH=|xPLK$ z6VO7i1_}X>}zYyySe?k(MlbyNa&iuxxVXBS~M}&5#U_$$K z!j0;&x8X*EK*}0ML8KL&+W4j~fTpqt0!WDrY+K66?sD-BC-`h~FntI4V%v zJR&x0a=ke#%t>O?#Vc+`8k(a; zImfED|IxZX^YIcm8l=TdEno*cv+K-TFOv5;W!d2kY6I3w&kw5{mp>-Y)BEhk&&@cK zpm3+KCNCR&7v`<6ztR9g;+v0bqJ~;EWn*JIp)6>SYnV6~{xhqRSiPt}Ji@e*+M82V zV!%JEsD@9^P9D`qwmu)`3{sHw0eh3~ zXe#&0oQV<+il?Ztiz>JdJud%X&7J-*D9>?8ydQ>P;}-za2>ykj&6NmY~&U8aBEA-{Tyw}ahSqyH|ELwPh3jj_lLgVEuFio zYwkA5U+5G^d!%K#ROTXCSSqCO_ zHV<4<0OX}d*#zitkt_#GZ3hZI?`ExVeyajW0t1l^$T?A;RX^rQ+n44y#TE%sH#=yV# z1<%~f6iy;s&N66srQ)(~rL=rmcg^KTavf{6+S>-9 zTjDoMIxdxDT~N2AQmNdbr2XOsFQ**p{d{LMUMvEYjaILE1!AIkqj1pxkNSsdPm$y8 zt`o)E_ZAe?VRr7niY;5}4}3nPt0kYVo1P6EBC~*$Es%N!lBl!n5*K(vpUqz0ew<7{!XNJHk-zSZAKOPL=o53-5{l zgfqz5Si==P*;3u&DnOAZZYzYCM>*MFD!qQ?Vww2D1%ivZ ze07H3aTZcfuIKHCHyg^af=d$uSbv{(Rxa*s?{)cD9sM$H>(XW@-ZY0fk_aKztS_U+4W@K2C7o4H}im zH?K~2%S3K=Mvr+=7rDkn_}O^(qZR`lLtI=BO4K1ZjX9t**3+6k6x5n7$)v-pwjAJeF~ya?gPtT-X6x#BM~NM=pO` zp2E+Q2L0EQI%r50V}!Ta^cDSoTMLD8AI02zN`Fz)Oc`(t#`Ol}wO1^tzO>%$drpa28GaUVIQq@LLrCbo`pvP**a*jhVXq@B)fRf~ z(=iGLQ-&>XUHxgQ9lu&qp5_Y^`3KXO_~|F_ zF6ae^=ETcqvNQKpd}gh25cbsHcqkU(d0y~G$PGJ2!?Tn!A7lD({SMvAIAAk%(9%8u zZL|rW;j7f>zkdTW>N?W<`(WA|uL>@=LJ{?dA+nnXw-~j^&Q_&9$Vgrfm)NZsoOi!F z5|!TUQBO&gC|6f;+CfD(n)BKqQW)Q77hCRR^T zhBQg}Vm40>1sdExuobvFZqNm<%!!6V>_>AE;=vOv9eQ{U>s{)JU z!TsZ^D&d}ySdxZmPIX7%_bdJv4^wnseNgQ&<8*wO9N)I<0yX`v2E)0e?V)~;Zk0v- zlGxF;cC|I`!s%mSapTtpz2eq7?rKYlE$e}0Zg|1u6WPq( zxL?5*$kDh>+5Z^)$c3)g$n-yq!4^=j_$|bq=9FChK%RS5qIwyu!~9( z-=jpXd^WdYe#XzqWlF8kcf%+b-+|3LN{H5yn|kwWJW1Pa%Fc7Kjoi>}81#Smddq+) zx9@EjMn*~y6+{FC^(Y_$Dy59TaFmc#xcMSD{KVVt)5Qh%O_vQY<(S z3QrwT75HZ&c`l`ij)fTp0|kAh*2jLw!ftoewqkkn`-BEdroozWL3_?b)Mmq0n(KXC zmwfa>mDRIg8`>SvE|70JQl zL8S6PNk&!hh&@^49BT7JPRo?v$ce823n*vvNn*&QLf3=+&OFn>TWC;DXFvVWJ5o3H znNhb{1&Q%Szt)0WF@S6-@LB~GQ7`6XL(>b!LsYFpINycelWd~xwCXK+1`!&Ah|GHO zSnm6UNFhu9<(jL*TNE@dphwUGE&LP?kllUEVYQdY8uPhdkYbf$lr2N>`F}bcvS!j^ zv05s$@h`>l1~|X3iizZ%wci@e@}6snzm!Yox?LVHujI&xLuHUNdoQF`NC^Ar(M=xKIJR@j=N?NC+FZg?s!|S zW8q+}fHCf7ItAQcjz4{_#3`DDJ2ThV!leMQj6&?jeHBg9Rv)}N3}6z zj4uH0*yw$eA6Km4Btkhq7b z;8>2k(gyB)&!iZ{_?#8T%zDeTk1YzIL8l0mynEHZ^RYf?tiDC*_3PKA({Ueix4k(* z%_;xx>bo4?&!DmDI6b>5|e#c_4=DOBw&lq7#7eXJx!W%WEC<$n`D`R~R>j-ODu_{ui`x`IB6@ zMQ;?}n=)~tde$EeVJ;cA{SbJ42m+9Q5Ayxu-VC5S3pLy%gSmPd(J}8D!uhMo zYxd@MDAwC8y)jF)UW79n#Z{d?EXT0`Kx&pQBo~#Ku;<^F#C-+fwlh(IY~_`cI(_Of~Z<9MD8oKxum$9>(dQAfOmtIvB+_?(v;RIG$8D$pAIw zws-o}4C5w3r_YjWW2H&F-XzE>XG5p>oQafwq7tv}bS*}RG%uL0A%nkj_d|k#q74X( zlB{famS9e*IsyhjgS|5e`Z2=17LjV4|4i7w!Jvh;w;9^J$a3z3uErON!Gq^ez(OLnZ~Xm1*6s9?sptjRP zJ1^wY(QCNW+~x-B){S&ry8Ey;t5*En+2=$x+oJDEluSxfb{ojwtZQq3X@4_}NuN7+ zsc<1DFI4E?*Klp0dk5eBzUoKEH*9uiO7b;DP;u8@7q@RpD>C-yyf=0KT?xN-^NUmb z|MUxEOX7r34I?fu=t$Zj5E+hb?p_m5vXUSFF^jj|*Z|}eI*nme{YJnTXF_3MZ7i0k zg3t~fXwCyEJZ;0y%Kf`y7%^W^I~!u?zX&X`4oEX|!DSY};ZgN9Kjg=o_6AP>LN`kimYZ^sxegY<9K$Q z6l)+Xn{Vtu-avcj2;QZwbjphL>*SvxTOxG>Nz;Rl1QafG^FW@3!&W$kAIV3Jf{+j3VT+7BY#CXj4xY+Hu zVKvC~aSbh(&vbpi zmM0$=Hn23)0+}`Lf9Szf({j9V< zgf4L-GC$1~brsTePi+-q=KI?t8cF??sSeV2f*CLZI}5ZCf^$su$kprArbegxc^Fqe zF166in7L>m3P-AJK#(ukeKfO|`A&ds_g!GOA9LUufCltBf=Ya&(w%t(1OxGPow*F^ z$bB)hr43NrpMwUPcZn7tG5#$@Sb?L;+zK7D1vL?Iz^!%@#*4ii0lYyEfXN6p%i8wU z^N4##>Q3JhXTby&K1mqYEIb#c%`rhfaIx+NL6hLi83H<1Sx$~rcqlk76TvM4*eQ4V z0+PCoQqo|@+^_3>-kmH7`EiCwyBcX-f3d@`7ZgY2^mlnX*u0$4ASW+fSjU%`Q_>*!vRR)Y za$x9Hz;O4PJz!DoHH!`_CTg7OYXF55;uqcnsClNL{UJ5)?t{XK2qE(dlCHIKYF31;P^|NM-@{?nzCwmqyEiyPALV?6`5_Rz%kAcIUW$I3H}^^3hMl@_pK;Li z@O9oudB8j?0Jt66`@1l_+-k$`ELgma&0`v94iacpT?aoJJFI%Jy>V#*)r6ea)~K8M zXiqxHjr+MrD(o&8Q6Fs5+KdDQZ9dCe<<{f=PnF#$|LG45Vau}T%B>!|5$i7E`JovN zt~$Q;e(v$roz$tUuShHP++N+i`SZN#Y;AV{JX=J?#aUAgDLUPWaC7OqYI*A)+6aZY zziepO-~DEv%wie0BhM>cMT{pfls4tzrhN=yLX9WzgG+YT_4b`CxV`i1@z^u84Kp+M zL6gdOh2Do=(PKDhMi;4XHTmH>bGTt8iLGMfr9JV9z;cF##vD+B zwV8Cg{*hLE{<_mgEee()%r}r5vA)TCZ0jv}R*p3s=66SwnE& z+l^YxM>j5vzO!VZ5Q*Six*fW_i)LNi9a>B_o^RKk3$pi{>n)+w(YR`?SDj;IB&JjH zV;XGo6@)$IPiXbJ%hZSOt@p7kNeuBCbex*$b6g4NWf5oQ3m(cv@2}Qm+zipTD=RT6 zQuUWadIKc z`oDgnV@^b4-afq+Av zcbcy-4(b$C9w}hTrH1W>c?8ggFgZFb+yPmzGFpsnX7okQ+i*={i{{mqB+OpeyV+JT z);uV!CCttL?JV4C#5>lRnx?r~LbyLw%(k8UA}V~+4uXo;k69XUoYUeoob{ccd;WGkAfVCu#}WfZuzz2dC-2nft3GGvgq5xn zHY;G)XXe?*IGHWwYqRcIy`ivTBCi|W$`>bOG*=QTNG(tktnrr?V3AAQ#)csGDJyK; z{cNQ{bR_$cHJHwbr`&zFdt*UulesbGX_2u+ZR+#V-7h++`Y{$ZomBdd4&yyIC~H`u z&12*$Xk^F)=o^J+a*O72L#w=>sVN}V<#uimBr}D8G6Q2CuexW30rMfS3dm~@eFg#z zQn?}Nzwt<59)y0r^=*Jad@u;#v&6|QwYgUteYbt-364zD zpb181k2YrSFiDRsN;~WY11%^bNP!`juKuT@9xR`dPkxv4&vH(2(1tC4d$|cZUVG1(xX%K#VT%z#!3eCjF|5Bdk;-IC(Kz1~C zF?ZTtH0I#ciBqk^?2m~K9u1LU^D+c66|PxRC%P^xsOH!+qNQ$Wz256gi2%uI)+VtkqQ${I>x2Gk+}Bo{ zr(|bcCGH|%iEPaYPp-DLx3xs*73xW__XCL8HrYW?RjFo`1x3Y7IBc*S2R^r9_V5?% zC*8dMtdj*3Rt}@;S?jk=H91XM$}_u@z);=WLd%wWwKu|;auq$G9iE}XJv-Oq( zF+Y`wW3&~3p@A~a?fJ%gaF>rUOaar#f8YeVP|VarnIQEi1L}`!YEiBhbMi0_`AZ(b z*PL{?Ckzmyy%B}*Y={91s$y;xgzzDo&nQTP~7w zC;$z&OIIGh0za=O3wrRYl@EG^;F&1azeNj*xRLf7K5l0A?=1NaWr)2G_RsfQKP%IZ zzKl`@wNF9Bmg)?j{+K81Kes~92G995ZVCnvu=+83&oYj%S>x}!lZm+EI$)Cphu45v z1+m^t?ib@=h8+l+0h7RAkN@L>7=)|8+S14@54v#!;B6~?SEZj z_4N(=aV!8Jfl}7AUphg9JP|hAaTUTRa%Zr0fbH%pXxo**%pK-o1 za4^#Yupxep#8(!iN_P&kki*~r zOnKZusC_eIHhH0s$|g;%gN4}csU;E7=0;~}7gIMp1Y4-`OMS4MqDQYO$_Vu6h1={g z?abKavU|s`^K&GJ?FHbuNF^W+R$@7?!~SFJVsXM<|Jmzzd?lFwsMpw36<95vA?J?z zlCcVmEXJ8R9>PzJhSqP!GcX>76n9fc6^} z(0-FRcE;%v>015EH-_^$U@Lfx7LIQ>bN7>fEEl6{&@m|^iNB1Ro z_qm^gI$k$egG3LudI(tmrxd{_&;r`@+iV`rE6|_i*~_@Y_w~E6KYknmbE!AjDCp^FWn45p;pTJSi&qoe z8qE$gyfL;isxu})qQkqXe5#nicXp6Xd>7cUG&co5`P|f+hp23BHej>fJ$8 zXG8u>&12k%YoYe0#i#do62G!bxm^M}@QR>W;`c>@6|0CVDrNylHOBRw9zB>3pv^8X z7RyuD#SR)@jx)GP8xTy;JC;SaK4YXFmod(UYNWL zdQY~vP;elC6tW7DJQC6WZd>#(pSd)9;?&`* zrW7PUZ4)R`X#7o8e)oIoXiUF@(jQkcI0i)EvQ8)4KUjIW?p=Tdd7ICGRb9`TcUSs2kApz0~m>Bga1S9xDJXU;L$H%e7*?X8z6;(N3Y&&8y0~cU9w3> z1RjmG6o7N!s4E})zlVQ7Lb3HKeVE4S9;n8N-bWTjbaE$(F51IyIyJHR+e2Z(8FuMU zp2MR@BljtWWuL+>j-P*`YQVd{6aPkf=-bg-!^tOC$~Eb5#QO)DmjU!L!SFd&y?N5a zrZ;@dCNF;(c+`7}sFB}i^f&(x*+XE~&T;m!n-q%A`cb*25Wbi@ImP40ijgD%Q(2#z z-Y*|#bPml$dE{^7-GjTYP_sJKbdKwPlxxx~QQL9Z#g4&%$D_MK$^R@@a`~f1k>Vk0}NZ zNs6|-aW|!K3wWcKhZmp+NR~0~`{dO;U zA0^o8`J(~fkpoH`SF*B74ZaYek3t5+bb4cOLSXuJeyt+(4~jlRgPJbk8>uhZmQ?!l zMqrFnz)e3?xHrH|dTIJ#V@GO8)Ez2DvpAd(uohbdk&*h&xgC*|!X+lbWaRQ1M;-XT z3D{=8%fq#u4*YeIoWVAqhq?oo zt{ia6zgvwCLWE^C#RuhV0LWR;(!by=xwecjH2$A?BG}Y$I|D8Cx1fUI?vu#-BTxm+ zzj*)Z;=d;M6D$jYg#epeZqNVXafJUZ*eM97?w7!!PrGbo1mM&Ixt|0l0WLohI7`J* z7qUFgt)26+8_@|g`@w4|6qW#c4~g=BuWf^(dx2yV(9Rf1d<)S%ar)!1AbIntr`N() zUC2J&$DZ5iz2K8afUUo&%tP`;Ipp0R1Wedn`fiLH?6{9mEn7Gv45K``|2-;r!oSE z_b3d99R=zt*uR}#xT%7JPtWBt-b_)=ne92H4vx7iWR$Rhn@>xK&6n~g|M{ulZVT`W z^gsU(DGzPlL~^~*i~o377D_=SQ!iNkmbQQOH4giWy(Jo|Ul3+MgDOAas6m1O^M^7z z2j1Mcy$@<`f5U=nTA;^9e_jP0&HeTY8S%(!$%%o}|2+F7wTkrs53f0#cz(iL=dpJP zgDgqbejnsA)|jKR-i_8T@ipV(SxA?ua5YBBh;PpJv8?a4fV zP1Rcb)O-!xjvj$mJQT!@xPzFl<;BYPte~6uk=q3+|KYW62k;9|i=nj`#30BIgpIlh z30^RRgPI#QV2czJVy=>?o?-+SkTJtn0kGs>y7Ek!UIzB{Ht)YY5E(eVnNL{|U8(`q1#=e)^0$wAlZN$ft>&w8^L(em!mA~ZzDY*zID{RN+trei4bnoP~8G= zpgGR+P7Hb1oS)?V{T#OqwZ#(Z#3qa5z2bO^kxoR-hKJMk4-%f+BjjCl4q5mo`9}RP*8th_K*23^}q1s7=a6 zmw$%$^sej+R}x^a-TkLb@h>$XyQ>N&<~4KBUYEJ>-#S9J2o6X;J$CGshZ~7S>jlXD zhT1~GdS!VWRTDfPsM2L>>&SIHd*J1sqj7A1Gf?z1;9RVWzK#8kl*Ok(7p)mYxm!1m zu|)j+b?t$sQ`+BH=1yUa5GooAn>jnRMQTjk|4ykT!i#k4`4>90=JML}& z^>T+R&kgw-`qY`SyRe4c@(>!I`Scr zJkb1|`_JIlz`rmeq2SWbDaL*(JAl0hr!_BNdKN!SnqyV!_)VTi;@JMaDIH!3jL27U zXm^{6;rPpfo5jFX|92?{UnQ#tDE(BIQ~#0yP~Mxw&D?*84cKkyyEL^_)M&T=@e0_@mt^E37d}$GQ5q*5Tm(W+LCH0a2bkZGn75xTP3^q?)ST3AAe*Netz!*+46I1we0hi;toZ+tQHZM9tXvz|Yr*rV0B>K2>0tSrMED#2s? zKNk;p)-IdRxvT%shn<`5`z<_&wHzPd7Z88jou2E!U}6#~Oe=5y{ZBt#)w>-IyTK;1&zX*!@h8?(GG$2`4=tfPrMemU3NTY+M2u6b3w(zxSi`Ha+c6& zQwP2Celjb0wIPl~-^K#7Zkz}Ja_5sd(%%LUfeu=0XF6_k@f54KE?DD2a}!DUw*Uzl zeB5w{UpRg{1-64soaU=Urs-!#s)`_*Q5*DqDQsP4K{_;V?~!3t4@ z8#>Y7-hcNmY6{*+glwxXUpY0E*v*xJ85lLsy?#4+D>ZTE4g`ME*sNalqQZRVg$Ne<%Sp?o7(yKMJFuEg;O=^hG7 zL=pGoaUSJJ#|}f}TMBL;F8c_=)GoP}=`@5-DYH4YxXzY)sikzCL(lCyUdm=RXtx>b zwQ`xo4c(ezsQYFdveI+Yup_O2*rj@oe$q~y;C(1ZCuro1e6X(VBpv=he(2ZH1PAs3 z4|Kf$(!}3f!XFa!Mcc{RPva#cf0%T|b?|Zx&(+#AsnMoB8qw+e(y+(nG&Hk59pxYF z(;w+n*|CO+GZ-`A8ri$YI(F}#_u#8)yG$f9Ym$<6>yAPFOlLZ0Yy!oz-G>+iB7fn* zn<{phWe=XfFtnT1#Z2%M`0mBAvYeUHz5P(* zf#uXWOdgv-xE_Pe+<-O&;~LZEUlm;TmLX!)A>~?!+V!vF75a4f(&=f4yOlZ%1L)kn z*9&t^{0H|Rrq;xhhe;adT5JXsHqAe93OZn0I4D?nfXZqlEnSTo89dnJeK1(?etj*9 zTKcDH$7*F|JkGHv22PxJZ=CCmB7}UHPk3C$0~csa(^L!Gw-&#Xkc29}B^E1O1qI=+ zB6FK4opc&h292&UpU;sFQq>z{V>aI4?HfRQZ${OZP;0RnSVGQ3Ys#BS1Bls39;Xlk|NFCi+)f75PcuB%U1EOPBX&U&RUL@)a`CVKd!dH@!ckMunz z?j;YxdCT5ZUCN#LorRPMOYa_S>l+2zFYC#z#6Fqsu7}2iFuATT3@-3lZacB5=hj>= z=5Oq1a~5TAzGRK&%NpjFx3g@YnO9efoTM?DU4gIk>8cp(_id|BJIekj73{N>9DJ)+ z|2%m=>gitphLCfIbBF65qjvkp4>k(b7~|FM1NedF6bt`n?1Z=WG?=O^l z@4El{{AkJ07vdZmk4#Zu|K)32K^eiOe3Zy1Vt1_>_91(KxLL!l!Io+j?0k1$D~O2l z#@S+_;C&AbE7VoA#wIA!m;0dq?MMDwt=U(Yi*bmW6<}U%8a%Cy7Z*{v4s$oUyts&_ z*XIZ8$y4_9g{L*Mb(p!0?a^zro9@P#5{V8Epn3E;?zQiNShGR7ej!%}Te|!F7ptnX zw)rCyv~k;!&bJv7P5wiDYs+k4S+`n<$bC9;QlSeo*{hQZP;lmp@644-5w$1IosO5X zDQANh6qh8TrT9a&C6u{xb2QSQSWD9owWELB=rZJOf)kgTZ8bM27%JfNvstsIQ#;)F zs1UV2TusNpQgLa&r*~;ZYJGVT*G6kaDA%&9afnl;1T)JQPt>X2l~O|DsFeV$h0NkE zLsp#1nuDBbxaL!7p~!pAC3Lekk=C<)jk0Ws-Fq!-QtJ+V^G1VrIuIYcr}8t8V*%XP zo$0I_zE&~SKU)~cs(1F5P1^<faV{?t>v+~ zT87B%V0PVJfB>mSq?(+zy#vtn68^|E=v)A2f?Oh+fK=NN9k55aoyH@dTzhp}Q;(ln zCN@T2Xefqhp@8bmK!Khk9HlXN5QcD83Yg~F>i0HkiDx!iee*?r{qsS-MT3tghhJy- z{fw6HK3=DDh)XQjf~zC*w%E@X*?zQf9(tl6hUzaulq=OVg!Y@zNql^o zeBNnpzOc0I&&{ zwa}4HqZuvh!}(L=&U6$wUH8tymO#=QgkeWu4%+TIL(_GDWFo}9Ae7rQH*df}OpwcL z2$|Ov2b!+d0f}UHfP%U{!e;hX!@69QJnHFOyhLc6!8!n5>ILdC3u4AOfUBZ`yc<-( z<*7NZb{AJ znB7_>H`|~f)T6Wo;3b8 z0d<;oOt_)LUc>t0UVloNk}l?UH4PZIf1Uz9dJ5)})ST5d(o5@4z9=1)qW6KgU$L-n zkn;kgMy|z_z#7vVI+RcshfO#ww|>f0(GV%A(Km6s>M>acGJ<@kO`WRgu{05WRl5|i zrkI6>sX&B+3A4*nLdVI0*Ain%WX9L+!NIvODBX6fV_nsoG6gtt@}Cu%X1d2+W_sqRY`vfZE153LirWt_*QEcV z5fi|cEO*M%X-ENtgeFw_d;F9CQ7{_;lF9jE_bPxX!ik=LnDr)yJX;b_jZ~9obj&`Z zJ$>nZx8&VnJnep?A0Ms?7Z$^+XS&jD?M;Dh(t=Ns0GX$jL(Cq4Qk%$UG;YlIV<7q$ z?bPSBzTN|wbwB{nF%I9KSFUh;}zXDT72pc6I(ggE}ry8_XMp_x?H+xXfMW$m`-RvpwhD$VPO@CMFvoY z5vlulf&R%x;?Bb8t$tAA)w0Q&ZXSzhH)?X;kq!*8dHE<5p^`1x8@Im_8Kapgn(G|t z@YXQk!w=!8`2dB2#%W>l$Ofrk{St=;QA(eVT8EtUPS$5h>N##XEQQch=836qvKc0@BhfJp-8Jxa5NQs%>-iM(S3b z54M6L)%a2y(8h=Y92-4!Yiu3fY1=tT^=TffM{|uEygvpuE~NPT7bKdqQ=XElTgD!! z>2cuzgz!FMw9bI31r}a;!Pp7G) zl?82p52Fm|Z`1}bVSt;1H7Z$)g+CP?WP)CkXPa3U3%qH*b4RJW!4V+Hdz%@K+2GG=uf#4*yKrOCGy6twMc#RPIJ5CRU1Bs<+2s!OCr*tOZKC#3H z%u>4tS@ZPz(MZcy*3D|-3p4!{%Aa{S0Cf6YMJZ>}OE0uJvhqQTZ=gKH^4=XlGoFCM z{dLUnN(yVyDA-zJj16yqtXFr(}lN@L%=LT))-$Qef={sVW&e6!|Ar*l!ak8}A zUd>WUOXG6g-Fj_le6h;Hvsm$_js$$QIJTfFA{Mx$YyR~Vs!PCu$Q4imq zWnE0}K@$K$ z?DrCS6+ccCRY3naj+Uj*-*3!X*OYvCj)}NPfj?!7&u1 z!kkPX1P%)k%?j?BRFmj>wGi5~`6LTo?joNSsMIr^z9fIPT`LrC6%s2qxIX_$df(~8 z!4H83 z*tz*xO%Dwk9lH0yIy2`@i5mI5to8;7>irzoimyekJs?c~j+v>ZROhoQHEc>7dRm^< zL^ysrfDjM%nuqqj?ebd&_)5#20dK_T@OW%BG{}HKelg@{1Be^#s&|xmT*kfKpzK^6 zSB-@vH7ZGmkdh^&xVL_^)^83pRZGG@2j_2pY6S$Q`oNX4ncxFV%^uTxixsEG8|YbO z6MT{>jiax{Tblq!+oplDD@N48bZL34UQK1-z&pvrPC8POcTE<-=?Pd2GZw|}VG}Sl zPPod)QByj?MeYSYhmWT~-A<-D{b2Bx(ORz@t3-H2@pt3wB7-Td2GMr=2KRP#)U&w& z@>3l}4iz$~(+Y~fKT3VL98!}e&3=qpzU;cBVvphc{8 zT7oWcp>to)J9m>m?3_>)({R~q=$dzm@pP|2*v{Rb^e+iDB;6Gen0uk1n8m71xY2A$ z%^iF5z$Jld=~Gt>x9j}9iGn0*E|UxqT>ZU|T2)D7X{6MUy+>7^d+d`7x?1954!rDP zL~#aGdbEbQCIHZ37PPf=esW$Es5{7;A3$Ru68ON-G%!C*iN3H};7-VKeH^eGAqnbQ zZXalENu&QNB%nc&u2$4}o=tN9c8pg5KtXezXbexTNJx~96_t+@59Vl_iqA?CmwhOS z4cO3|DZ*5-LDC^x;H0{^etmx$RDj4K*$LJnR5+71B5u^gIK{-cCBag7CeYE@BA-TM z_2r`1=*CJ8B^UHEeD>xRB z@^FIVN!)^uq->&HqD^A!cPaiaBK#&7*1wS{q%Us0WU-wey>?Gc;JVSjgPgnN?H;AV zrrwW8-|K!&mF6zT2K14t1OPXqgX5fHc?W&5p4G;I65FoI7rXX#d8hGQd(tjJ#)`1te&4oXHxcB>)ks_T;GxnxNPFH80?& zOjE^G3%XY+ggeq0jwrfFL<$&j`f~sw^a*SOcLA&gm_&9!hR}AlLq8TYYh4y4CjXU~ ziD5#5Dti&A#*lEUn+kNE(7Z+N6d?-hDNdCv_l9t}4pXjg4DP4~bA{9nQLOQOY3jWcv~+O!BhLM$5#mQisTaCEkzqkzwxxSAD1JKV*%>f5;K9u9`O;5 zOZu2BUE4)PF_pm$Ge_GLdYcA=prT#id=s-KBQz()azQjiAfrc z!0G{E5>iLO%81U-AO!{hpd8cG0o8^gz#ldOow2|q^#to846UivOgPg^+F3W73OdJ25E2uzQ$3g1 zx?M$sWIAJk+v~d;WW`Y6lx)*5_ut8mRQs9GxgQq~zUXe>pQ>Y)&#zSOb1JGA#*l+B z@_Z?Sedjk2LBd=MQpkwQ8`LBT?Z^vROAdi471}Jms{mk*UJ9KcDZMti?O)GK))n=L zw@Y_Tt!wH9OiRkfRY)nQE+}zmy|*1bPXy&ew69*@tJ2il=^C&KP;-7@Tr}1gItv9* z!_7^LX425xJjpaqx#AGD-!@=djo(c}F3*$5@?Rkc=UoVRJ-_BMJ#+f|75Q7aiZB12 zUrB2UaB=$7WI4Rz7j%-i$1kTuto+`H-vSSa<|8Qi(LvR9Q~JBrXZiUnRDwk z`F6xKwlGWNHIAGUV^j|sL>jmn5@-Rg2h`6ASf569x&oOMSUcWevh_#gixdIMTym)~ zhKripB#eUbF}>mf=wrOoaB85yGG2dtX>)1B7?2r3q-^m-CuiKL*mXX-B*esqThoMC zOf(t;c6-Y%h`f|MU%pg6Me!+!z7nO1{*^?dw}g}ST*MuIuxtiZg- z?rJYHpb^*e3T!e2>QQc8h8_diab1HnH)X~_3@KZQ?t6}Mho7!8qgk@HKE+3ApZJ** z-o4Zh1|@UCEa=IaW5Hld@;10=F@2_c5!92g??g1t>s2&u;u_&yrz*g?|7k~(Y}ZqO zlPEL57r}wJd*X?+{GglwYO*EWGiRlVCFVg8N3zm_kv0A!>NR$K-R*Y|<^o`-(S0V@ zT36>b&)^b(XoCnql6p&jW{*gKdA(1Y)M(Xy7M$oe)LPEAY!6KNmsIRUy7nZ=r^Qux_?CDNAiURf-u#CHNy3`Gc@W76{eL%rW(ZQmUo01&K?^>5cJz#I@TE`Tx z2=?_90Iw@wY-cXx)`bZAfDTMflTQuNFVI_KCKK5*RTb*}^jEJOsDxkSo(&$kfJkjV z2P)dmqf`qldaOy(@|xmUGEP^!8a>!S8}uVKGA0~~HPcUTMK%O)zhu%Ifjd_qVxuzL zs|sB<%ev;aV#-=)JcN6pkf9n222Xd@q03s&Inr3Updn5wY>WcFK{BJEORUS51u_Jh zZ1>kblh{4Ykf7nMibHd^v8KCdXQ=CqyMGl_Q(4iy$Rk zzT|w*FwxKwghEw=VRF-czInyjh!5EX3D5OIm&$2uPp=7=Tf*O#D(9DHSDMh1i6jLq z$74La3zj^c4WEfV6-l#Bwwd4kEEV+H-`CR`m2A*u+awWrhVAjp+E(0*DQQHT?pNln zegFIMcuiA|ad)mcH>yt^ghP~!xnqv@~vk%;!{5qLHPS+GvUn0qvbeZfOY?WyOPCnE!`>-Jj4MM5n0%;fJ z3`2A};^J*}DH$hqa15xXF9vnofq!kaRI{UHAxzayG}Y^_OiQ#)4M0!wpC^bREqtXB zt;N!xymO;Wc5&8HmYkF6jq@G*un1W{U=WzO9UT?nUOBCsz3qS1M;-NpGB6`~ zMpbKjHo|6FKasUQd`C~lN3OhGmVuOJ(o!i-R>{yxLaWUPv)Y)^A^yy{iSxldWemQF zd1aC3pvy>LaS1ppwxvAZ!x6-_UQ_cl?JaKMqEYmWQf&Egh?aYp-`!Mo8~&|K(d-{k z*Wmro+YlViQM2cUBth8(J#72atH5G;huj63^_g@>_p1j`3QTZjRC_X~(kb>po-_gr zhji$#g83@}co#?MV>e_RM73fieev+rF(d-d=lcNX@Y|0l;^A?J(kv8)0eRo@I5I>Z z?bHP+m}PlToO02vyxWGjtS0z-Z5(uab4Fy)VaY|!CE#53jC@x+&O_njc@fd{98BZE z^x4oZl@)cy0Vf4=c7 zwz&*Rj}P~nHGO26G13R&L}JULM8u+i`seD8aqU=5Pw2~$M4ZNh&0kcDx7Ea#daiYy zjG#LlfUNIQy)zoew=@RHhV_;gRFL)sbvgQEeL?iyI0x4wI=2&dIKv_IBLh|xL;AJ1LDdm0z!i7Dy`3c z$HO^FWq)BNqvlmXJLEtd=K}y)v3v3{Y!zgY(4DbjloNa=effA7Za?__o+vwL9Vkh8 z+8oXC&jfwVbrjeg6@gQ2T<6bJjxg!YD0cw-3x3xnhyp* z1C$yh_r#7%>kn`Dh6Eb!63wJw7-6&8uR(xM^bGJoRyBhYCr@PnavZ!Ob3jd~2nZWe zK>Vis&K)J@ThA)r43Xp-^*jSP0OCu2ORsUFe@-SDvg|Za}$wdycH2?}V z6SxO;_9qnru$2seS6W%Jx2^&atU*yNdBB|HIQykqJWIe9WL{76uKLI&JT3<@Z5`-n z!YtJx(ppZb;q(*&iU*7@J^kq*jk`XboE`%E?@_#mYw=DZ9b56DdqHuu zv)KVq=;T3};`!18mz||*y1B&o2n!pKeI}9L0TYcSId@J5hvZsQ;8K-?FbP1qF>jLd z+P-PGW+mmh1{mD30NrI5vsdB9bRR(BGubkcYu^clsJXS-{j*nBn?F6612_V;&DOG5 z0fCC#w8Qcd`Y%wmTIY&R_L2S%5oTcB^~HcPfWkEgdjn`f6T{8FQRUh$s8jR16hmx` z-#n=)X=VTmy^ey0b54#irW11cA+lNtkZLNln)(6D4dpT>>Xh@DhccKT8?OACly(-x zW^TjPDEd-m;=PFZ05i@?u3pO(C^t$%$JYnw{I#}l@m@w` z5^@o6p@?^d0W@kLERSAUGLA&$N`9~uvj7rRHy{=7=LG5fJMia`_TyB#6c@z) zvRXtoQo(nsSTq29x)nu1d$jOr=-``W3x7o2A)^F5B0n$R13O$7c=1>ZfYpW)YWC%w z^ZiAkI%79*ih$poXSJTy#5d!<^1;2iHubvc+U)bVYk6xGZlls!18B#hFE=*RnmiRQ z8K>i9T zP`Z}q=AJ@CX5bG4w`^OqFK2h zTpav&a{8qS`5W0X$t-U4Q06q~KUxOazaHSP53@dT>#R>k3h>QAyfa-4Yla}X9XIr8 z+69y)@r2)CQOqbKFOw^iD<7jaEp7o$wW>A%Qqlrd1#+F_n*F7&rD|3!g7bHsAU0y| zb6a3VS&g(`(76szw051Nup%w}hHwD@vT9`V8$nC0v0@ThXaF6lrnw8|%~B4c#^kP0 z#wUsctVwMp2m6kcRtmwClWN6wUwHR7M{Zb@oAe|P;L|w`)j`(Oa{Rlwy=in=W|)S< z)HO=GuA7EyJ0L}F^{S5f0xJXkO|#MCSU^sy+brbTy6&w7byW&D!fQCi6d5?g6eB%4 zk`;>R;0d!JQ>LE!as#z(Zz;c3=h{Le+J7D#m(pkQtmsIviXFACp_8*7`lw<~So2s{o%hKv` zrMdgpIX<$c=;mE(m+2Q*YuN0#*YHDbOFuq*JWva`_$7dEU`~AF=9AAa^v6?lJ`{e9 zX|SIN*98bMl6AqvVNm2>K%GU+3DA@G0CQrh?xW29;XzVtu$-oHR+QY6a&u3104o#M zldk-q(%3MrVu1altki(6yIy?TdfF0N&P!F44a8;1kF#QO6heuC1Oc{L3)6tvh1+GPZ2)AikipnJw_L~0k%UsI<8IwgN#J#+3=AL1C@RV|# z%Abv9&x3JDbRj;+lNkwrl`xWt!D^kKxOIfKfa)GOnJBZbF9_p;lavh~Q`9ArsnZ-X5IA!q;LieTRtoyKe@ZzR&Z#=Q+Q~)4#sR9CgeT(HS310I;&0G_e}!7JI`V?l&f7c~*Q?YPx6{`w zZfq3ltIGR^zaz*e0BxP#lFQx?xbO>^WDq`eo0^Q4;HkKiF9L-u66OY+~TB zgJ`iGI&w0O?oY#w-cMZ+-=SMUMfwyUv=y+4IN56KM%78QyeEG*e7BmUC9FVcL&wxp&fM|=K<3;*V^~#Mn*keb~{W`aJJT-J!##P?|I)bVkv4DI}I&u zN8<0QVQL(73@+N%J-G@cq|QR;eSn)Ps69gDFZpcWIHj zwG8^6eE%M^ryAS7sxY69SlP0tb7<||Lzt3XU)%V`c8~rP7$OIDD%c^sf3r;V=3=gGr!tw6o4xRB4aRY@;0Vng1-n6jjRrmUhpYXq4l))Ye6f_be`)m+Ocs;-O z3|6jEgkSgyXnmb@9u9!SND^TtBi#1AmvR2;JiN^(2K1A<4lAR=cUMczU<54N`u zWbY-GJ6L;KmpOhcOT_kOzuDT~F_P->(>6SRJSFL%0425jX>e)6!!W)2=KPX^!MNBQ zJx9oLf%6JcY=b2I?6VGh=i>}MnhtB{dcKT#JQ-(2f}2^ZlAMKP+My-57GHm3^5^hI z-Og#ypB~+D=SN?nO05jL^Edpsf6!u|Sg(s-q6+t;0!YUD@O8&|=#=?2oI}rt|F^Z= z*r>&FUaw?eMcTV-8$=*p(@NhE`N1yEfv?|z@5hCx-?B|UULmGw(W1PrL$;$N_G9$t=d6YaKNay-0u zdZ7*DOfoxjxumJ9%`&6$-^Y9EUZUkoJthd<$0jh=vcR>R*hP}Bu7!><9zFT(S!d)u z(mdAm|1Ls;!U@@h_AP(;kEW#Z=ia@cN^GPMj!yrGTb0sh3~3{IQs?S#8S7}w9E&L& zq~_UZO&p=zX-?q~S_3&EqpKSakj1thJbNWI#k>%Iq4+ZEmY~!B0f0#4Kxf8hifgq{ zAxS=;yY(m?Oi;SWJX>%E4h)!~-B%8OTA<;i_p9bjl!!Nan(n4fu?;lPLD$3-o zFzCyi`}8S!t4EPj`9SIDo!%Ir$7=>3<@~Z0YsJw1V}rV3{Y82H*Ha>*wMz+ZdaA@X z&~%e5Ca9;3?l&nMJYKH=!RZnw%|r6OC7_Y*Az|wMv5)Ef;;yYWNd{nvwLiuS0L^s= z((+DPOjK76&`i6ck=uvJ4-R|$hoGK;Umt={aDlyB;`(A$N1sVq)b;cW)^9DyIl#vl z1+Jq3RYh4@5V3!>m~?BC!B`#tHB$QlNc$`amoQ&U3B3urg$^b- z8Jrx0Tj6AJm2)8fLbPehaTUAwX)A-}VpgC@;v9u1Zf?w&Rz2MQck6`}XSR5zR_30T zl?LA2O3vQg!w_VNu$pbubPOYGjR+a>K2n+>8sZ;3@4ZiRm>&m|ALq_$y)i5Nn~sJv zc%}|Ec(f;U8?wc$R|EF9yppWRCw|%CpLNWgdnk|Hp-`FBnH{_W0zVxCYE)H08_&Ne zl3)t(61p%>wr?#t%b@A_c=M3QFgGi!JD`sJcw{Ie40$|PCj_ejDwKommQ1*<{uN=Wql?| zd>i*jd_`yL)G8a^Fswe+-~1pU&HG}#ifhp6E<-iLsk}QA?@D|O$BxWZaIn6LV)_lW zbj=%KwLjDbbTA-A><3Vz97G;Y4Pj?+!4tV74e#j7nW6bOFA9M%mQrR@kQN@P%kI)f zx^M_Onl@znS3c%+GgY46Th3)DOBl7*dWOn*+=U5GF_zQMG$uBr8x=;OA~50LaWrYG zSGjPLBZD~f-5clULo+Cw5Hpy00EzK;QYTQtB_RGdH{HwjgDN}X=meg;W;GU@{ zi}jm+ud_cJWJJ`-REsagpJL+{d9?wnQ*M$Wiht*ndz-Uo?HW_tjRj2w(lAOJjHVsl z)%ruu!=t`s@cf#_F9R*Psuq+1iv!k~lNfEgeWxVXswbQZbFS#hESszvO#|Iw;qe?Q z>mG!!V9Vqqq)jKAm~gPhvqX!>5x@znF|7DRvAY+MouMTO5k`ReJZnWXrEc%n?9~6- zw_^3}8Z8=U2u*|f;a0Dtgh>F(!V|z2w0|Lfh)DGjLG}k8O?N1m)rSEj*f6St)t4hH zmCC@OqLM2iuB9vL>Bf_6ioYi?jC8k|8uFd7!?+U8r#uHlAYa<^`^6L79fJC4ZMt&Qs&Hp{=d zVY4BHSLji?ReDPqWG)ak>p9IsVRSr9h4_+^OG?9_N{s`H9e8e470523$(+F$bEBJm3#DF&MqmMr@DR%ubq0ZQ zZ=?4tWmjV?4P#e22hh{?U!&Z#>MPvYmBNN|XV*N&wNN{SRRK$B6YD(Vkslw+CIFU} zOkl25trr={R{lPQKeHF3Mwe98!DDEcpM*V(BtZ4e)kU|%xvz41?nFeIM1W(CbSC|j zB%y%CqX8n~ns`RFIxLN(>>q-@D<2^F_1$<(FvHgL!|AR%=P<=`MYQQIqfvvrv7FPL zL5DlC;5>)QhUxo39^_v}CO~XDQHP}&H{g5!hy#(6;kA*@@sloch2HR=CW1~D*QfGUEoDU9>CpXT)CK z2eZH}su3>)xW}$O{`wlwGhb?BhWzbL+}Mzfpa-Q9)H{&0;+bOtKDj%BUjo?mm8xf^ zx>xn5s5J%K^aZFcReny6^&6FW|5TY$QkI;7(Bt@DHxC%XxlFSRrw|-XH`DY{y|tzT zIAa-(F9X;PcX9sE0z9T5U(eK&Klxe<;FUEqH$Ti_0VaFfHv&Aj_d5iQAQhs? z9dd+BVtjvmTJgyJWUi9SGmj+QasXX4%s%^{G&qIe*;WVJ~i_71XPO{U0%MX?YHGPc*rfFtF@>%-LpJL@OBM}L3U=cfLi4% zZuNZC*gb4FI%u4qNyvEyJ$hBDZ33DaM74dj6;F<7Z!{c&1gAqX0g!0V zbS>m(>wksR@H}XILLE~z{odfhrW<&tw;?ISOU>|$k*ukByOsqsjr}kHR?*lEQD`ai z<8%7OZ+{II!KasBTR_E>U?`4rTN&F8<&NFIL}%GHFL9ZB&k9MXB?|gS2&47Ehp_Sp zfwgRr8Y;1fI^zA7KZ4{p2!dnmq&8%!}yNaVPua@7RLw z9OF3`FOslThCu2pnT)gGr#85JZF`ox)?^aQbk$lpxpBb^(hHE}FVSSc*?Mb`L>ZZ4 z$oQ`weOBk(j<7!ig1zl5d#j17Ig(&K@i6aQp?}wk8|m;>hcv=q)L4I*m20Nelj$Bw zbY(uBC1@eOfmJ|?R(mc#Hky5T>@g@><1QR*=?yB{*bzY2#mE}x+eq2{_fc0cod}$_ zpOnlUE%`Vyxiw%H+MIK^VYMn+f%8@4PcW)U<~iS^TBOdmiU|Vx0N2$aC?CduZ&u1k zlt3S#J8AKL))oF}lTZTqb%RkrMcsE#p!u2a%%$R`X4f!=up>`XpCke(*ML4FE^qYPu*fy}t^80WHLVL)@|{U)cf7$H zNey8)I2Oi#Pkb!K|epl=9%SS=!WK#;7j`yr>k*o*TV+oAR0r-e=AJUIJBcWxoG>S-8Rf(j{kbbqyNZ2&=BlwssZUop?(xqaIJjFYDTw2TjYf*w8ycQuE-2#coj5c2 z%Qf_d=EisG$1OgwN8{R1meyPa6UHdn-(pz@B6# z+j@b*UwNoP!%6)&nB&nN9iCN&0Gq1js&kHNJ6(Xr+ZocXaa~vP?ekI3i8$=2ws7XS z^1VH0qQp}zgGxEz#dPWlHwsRSZ#DxlZ#x5q@&M$JyZ(f(F)R}u1BTpP-GC4GT<+z9OIFt=)p{x__H zSl%sYVrhJN)`Y#Q4dg|)-)U!L=5to@+p>dw0)k$jr`L%v%_%_Sw5%jB53)O=Ff1|P zOjJ1730U!3?;3)rPez(D2)BzDdAnO=Xb{)0u^WIE+Wb7rn`!pE1AUA$zVQNhx{$=5 zr;-auufErTWHyYF*PFU=aFB$Kq#Gb*uK5DEBLFILy#g=!cwV)!`Qg#OuX368tQ9xX z=gvH8STE_lF*RK0{rwG_sO#%fhWLd(3?x7{>vF4d0ui5S+EWI>r9lm5C-S?mP0gcsBI5*(O$`C|8rx1YGn0(jvO0MYr{&) zC%uTaXyej@o?cWU`FjrJKf{$wugC6P)&2Q#rxZ)nC0O( zRIS!mEDBzf(qD;T_ANMxYmTW6JI!cMF`-rp#TryRW+LLg?`xxAFZBG>{<&-g9Q8*+ zm0L`lD$s-GP&!#))37T-kDangqS$}gmLb9ccCXmxs&FAYBF@>jB*)rI=(ll^tBs&( z3CRR-$M;~ldHw8)h|}><#@e}`w?>oo*UEGN5+KzmLV?+xZojK0`8N2-mrYuf4^jzU zg1D_wCD}uXBSuPJJ^EdbN-;8o zQDL(5L~uhc1TCt`%3v`SNDY!+Zur3m6;;K?as+gCJ2Nf6X5J#}6b22TC>J-+bV3iv zVlSb^yhfC~GMUa@+!B?XB7#PR$c*b-euaEGS2M`nmt18X%ou>Ht^lk!RlU(icGc4j7w0eFfd8l z0FZ5`o<*J4B|bvWwh1*0^j!pC+`a-OQ1MM39U;H09il@TBguC87#Yd&=)G{tFNu2Cg}PxRiqRBJVn++&Fid0=vB+Tl>3cnGd`K(W~up%MTHrXSV8U z{DAl6A*z@!mLGn4+@H*CydMv13cI0{&Gg}Dy7 z)Es#;c2dqVGukRu(sUAxOyh!C=m z5^133FrKMrB&xB3ZR^0=u`)w69_o|-4jzj(i#U>1_q`IcwogM&;cLU)4WpxdHoLOE zBNo4VMZ5=D4cY=+d{}qOzseM+o$FrOFD|90yj8F~`J0WWJ^9M}pJ1Tba;ac;6@pn` z`f>c8mfFhj0IQBmQ|FPWwaQTQ8kugP?5|^S5Dg#9>k$9dWaj&<1i|`By9?lJgX__}w1#D+4kh0d8oV6Zug3@B*9rc3cu#eL z51j*93B7%G;}^iGq-8`Wq;sx*e;;g>Ui@^~XuWcVDH7QpEFLN#E?W_WssJ3uqYG?) z$#b1~P*9iAf%J^Q^CCdu&!=l14f_{Pba-XD)a&mr9uR5R_raE$5}Br>uB>eL5m3U3 z=yPaeyT+$yAPu4f2?6Q?`q?m21P>B&O|~@Q5a`_;76P@#Vl%S!uC> z+x7&g3zk^%=-8#n8qOZYr>>A@m|Vl8L{W{DwaF7S3C5W&CxE@aikr(oML-16!0gu zl!Kp|rxuA%QiGh;Ajer$@_t4`n!d?yHob#Y3UYr#X@50ZvDjnCA!X?29;XgCH#`zr zjYv+9X@!bXx}sropkWi6jx;Rt`MM`35)2ZYF8;N$Nj>QF)=y1WwhEf3eTEY`l56z+g&0{MV{@Yl8}xmhjRIF? zS5eofZU*C(B&O>a?jG+x%h!Qjhu$QLh%@dr*y&bnx90LN;8NkXeVnXI#VaA@|x@o!UTII!~}4~F5PNc!)}1v7F_tOpk+P|4eD2= zhTO;;BoLy<PJ%F}m3dE-1zJQe>gdaS!)k{rY#KJ4Sq)-c8q=y zCJkj{T3Mqw&ccR$XM@z;C6ChJ%fr=8IyZ9a?3=d9Un8{?!=W2(liUqiP$VybX5P)4 zsH-hA`HJ3Dg$aUf7RAfkS`wZUy$Duxi1P9N>-z5Hse7NMUl2sEk{6j&+0!`*kU*q= z2cPe+?BW=_XHx$0+{q+&H&txt_giD0^`ev`=m2?#h`mTIRZ(qR-__kh?dk5~H>F&q zlQ(zL4vxjaYODV1}~@6ftR17`F-PHza>A$`~z zYxXD^L*7wCeI*jn%0u0#+g$bFaOSGYog5qbS5-yg*GIKUSHnceIr;k z++im#>H>BL-xwiC9V#y_>x)LX@#H&S;egKV1>)9}a-md{IE6J*jis(?6B?m2NMBP* zlmT#zs1VQOC-WzEZOlHq`KqmAwVPm1y1}!5f*5lY{B(0+D?91-)gvS<45%S)68&^; zcQ5=QazDEZ^CuO)Z4BjRvsdBXt)y&YG>(xZM+B~uscGZSVMh4k!0`k@CIf&egJWeXJ`?Pw9&`E6UQ$9P|94jh`^-mdpe5m53V zKW>(02f6yJD$FTOX5Azb+V~;ocaU*rG*FbzpGP0lD})7^bWz2X&hSWV=8UykG+N|} zc?6aHIpPUSwA8uGO%_{>CM}|nqdkodS^Cw2-8MBq6k+UOA)@G~yU46Tj&g*_On4o9 zd-n@1{H;aLFMrG;u@D-Zdr4)Stjn+XNF7_wfO*sAhUkR(4n4EKxy}#K*zD-S!-n)i z3dZ}-Pi^kbtecq6$g;5hF!f_zoVyEGF)kc3&)e{p6x|;q#Ib?u%!I|q1o8z&5;NR# zn4cBX%@q3MU)^EyS&TX&tFiz+2W!JAa~tDKJJFGegpQ%w{@^{GXS&>nNE?5e7(>!W z`6rCil4cKZA3DpJ54^|R+9(=d@4|8b`LM>T)KSMx0UZ<6k9}T zRIUWvxh1ux{U2X4Le7o|DgD1dZusuOkv%X9vjs0S0X`^^+n6%gx0+ z`R5K@wA?&kM+d(QP@t#v&Yc(wlZ8(V@ADF@-$2Cfw-U3%!wRxkFX9BF{eF(c%nafU z<71yKofdA_%N6@4ojiT9FT%Jvh9X7JGR_@`HJW30WV(!le^}YoIbCLJ+vW%t;eo_~ z^_{Y6K(K0IzK}&lTb@om=GRwe#d~fHxb3TUp2A7ojyY(tIHr-KV?HzeTj2#ZKz5n; zxJd6*MEXp9C&Fd12rBPiNkf716brk1OX#x&QsIAA z8Fb+Qu0EjlKNUU2Fv-wB)Gh8gnVgqSZJ8_z839;shhRYUWMD&{wF9M@5kGlHJvh9$^HP45? zaK)Tt(nahqQy6#K(PPVzp)H|)ogEd!f)6Kw@8Bz|r$Cpe|DiXK+wBZRDDw!-tLOVb zDG8O&yBqT&Mc=%*C$Ll0M%9@l|Rt$8*kJ;7xiT54nDG>G`mDDQN2yXa?)?ZEB#$6QYwx z|KZV#h>y#yUGWsMhK0QYG=)%D zJJrK2K{p7m0|xW&6Trd|?euiH=fa3*ScTUw{51QCzL$w&pahdn9!HvF%`1jLH|EJd zjT_`;20#YckKs1bl8O$j6$?plv9XHma2!@`*$eJX+jRaIELIKOv&6bBzm04KO}UI( zKyc>-Xh8sHMQL8dLiv%S;YyeSkX|~WN&jp4kcrI(Ze4aG^CUK+co=1ic2map^LG{~ z6P`;|Usf!qH{v#D64%N8$ZGl9% zAS21J`jV$0$S@fCE1Z|4xfjoR?lK6VJ?_g!R-RLSF8}WWoEoC&1w02~A^x{+K&Bih z0NUgrWFM?XcC4Q-%cehgTN#LVfglEidxpCX`j63;?cbFH+zs~-F>f1IC^Gns&i`(^ zT>|rAASvnXBFcHJDB5~aPd?gne;w$Yg7qH%y#w#JWIb$FY0Nb*P^)nzGchfjK6zYD zdtRaW!kE_jWY7tC=6?&*StNzD$tfZ9uPaBhxNU8jgBid2r__QPIgW6C_rx&04#Aye z6+Sh)KnudP*jx%kEJ76K1a0)+_TfJMu{9XSQ;!fGmufc7+N8v0j#$Md^JcIRoQ}g= z3JDBhIM;IiNkh!;(sN}XUhfVkAYEhTcY%ZmbH-9prfrND_VAh>s#4nKHy!;V>>Vb{ zKZX<IK2^HIg14yEtodUx7`;yVDCZ04(5OqC=Ei?K zdhs@5e~Ae0k53eFm?XB0rDsWY7L13%lf#w3778xht>8-^NFbVda(*|?E86)(s0{3g zftznCv2*K3Oyh{PWL!}CaE1_W??DA)2F!;sHu`%N_ z`if^I(Z`tKUi_Tqqw@9B9g3uuj&N%}n)8Q|&#>sm64|@62m4?ka>kMDiQedfo^3E*4)n@y$Y2j4nfsLzGY z?WYA#5#O_g^wZpn%7f1$-PsnF$H=S6W6X8;p-=DU%_q}2-EKC+d-bc&v(7EwhR?H4 z%9Hqq$?Nb%%pQ2vr}W3Scb#WE1)o^2m^ZYC?rWV3pKk9vuj%*fx2ea=Yn`3$N$+J3 zrst{it;5fe&+yOc52`)18@@fCO}-|duur`Y=*Q*_zPGItzICpL`|Nw4i_gJVpjW^< zn>(HD&(Y7#Ppr%COP@==As>$iygQpqyo>JEkNeNySHKUo_iyhuk2afASA3tJFYkpP z?H}+@*;}8YHbbAapSd44H;-rV&zFzYuR8mm+`K8>>7Sh+9`7<|mrZojzk0L#$@8)H z(0@ktJp4fS{JGOT=e^?d`T6;n^7;9`^$`=d)!O~}dHhE8vHq*I@bgUthP<09&Rd1> ztxEV=GvcNdZQq`5Y)>a?zh;y?W{NHOw zEKpUvgsR}>CQ28G(c2<`D4)xP3rrH9qY7O-Bxk$D5bCaiA{o{p-~EG5GTH(6>E%lD zzBsm>>BTgKGe9f}ryjYn8G6m)BV%cVIlN66#_e#$>{UCnUwX{Q{n;cJPAPzFKfI=VtUD0~K)!dIaDZr6goeOj zfErd)_}1iV$j-p7oA73_?2DI;&D|)V9K-#wD20az;8*pPwnVZ4iva~Ez$R9yUo$@M z4(}#Bpsjh2F`jmD@^{oy}Hk6#SGo4X24>ufcJ^Gn-N+<>zoq2vf@J|KIk zKHv*)8c6K+l#~Z?SjCQYeH8Sw)%}L)GoXJ)vziymmJ?B&Ns+!l|B7hJwGSbd=h6>7 zmMzJ9#AE{%d6K}%?-d*fx)xPYPCi5b9IT+Wl5^hs@u|PUXIt6;cChwNkk$vNtlNHw z8DnOox&^)IL01^%amNKA#!J)uQmmZzgk`W<9JABv6MyKVdjqrw_k>jvtg9E$MR z*l~brohlb(MID2~9)(ct#0FP|&H z)1Hwe#djEWP>k`XEKUo=D2d2(Az217qg| zgGaI`|6u-y^^YH7>1{LPSqrM*gR2d*f#-furfWetk0DHNbuoGR>ETBi;ucxZ)ZRDE z8!I+yUqmkv#{&lZ=&FE$7S76aQ3GQ3vNe*-I6uyrB*dx0}Sk(qXuq(lv#bmzU)&?uwQ9rr*8YGe@7=#wRw|I|M8I1uJVXP&0k|811S#&EU2#bpsJA5@ZFh z!ab}964+C=yD$YNauW(3Y{LuyixFI# z4?i(7*mB0OlMAsou`l*4dRvND)4_yFb9o`0vBT$U68R1zsN>itXx665KZ26MJ|5>k zuKSPJ?{UTkq1k08kU;UD`t|8`R5au}KsG$ocBd>8vV^KfN`~`nVRchuxq&GDOG?Lr z7#S zlO$Fp9Bf<>Q-_ecL3n~_?@TEYUt?rD^N0=@>e)E)^=4tiEY=rs+RzXIs8Ex{4nX+F z&BqHN=IJoS3|#*}?z;_FD=~7gB=$sxF(mr%}(mIfte}<`ItDGENVd~EeKtuUyp7mu^EuUp*s}8U# zI|u2!`Towq!iQnvA!^GT1$lEyy`M-3^4^zk90e@nHnbLtq(jFi%c|EaC2Vy2PI=Pga^q8(J?iI&2;42d|B;^_ z8lDsczwi9YO^p&DPD%$bW>vME%2UpXW&LI9s{;Za z+WNE|$5T)-(R6vWpy$~)$$YRtz8^+8iqes-uzh4DFZdeChL`7uatb24g#5VL_u+If zxNy3;n!6ma56yL0baV7G!*qBWkP_v9`0w1YwmpJg{}Y(5FYLs z^;<3E)5ze0>*dbOXKy)nV8fc!c5}o>$Q(Kmlx(jrJYN)0=S|qv2BkonE1^6esgH<| z<@1Jz_TA`>yKrb9wNQwZgjdn!{&|7y5zx+n8EAOZBm|%KQBHpG35_k5`f?Q^>tb*| z>C$GGdzZyClYZsR*PiOl-FLJgF%t3}Ej%rlXxoQpHE8&o@!9hAuu`fLuC*zs|9)q0 zf#z-Px$llK6mY==))YxJHMmTZNcv)wOS&={sBYsLeG6!qC9bRMb~#h-ljioAmmt~9 zaPN24} z66X#I?Lq5pybvU%{{?9YD4ANjY55^mJZ2PSC$)*IwC@scY(^z%wS|rZvByn-dIx2G#eMG`)FX%1p50n9k3=>5DZ<=I>9^%DAwA$IiKxvnW{&y7VocwcxJ~! z7{uo-N9OXRv+AaJ)}BUBIN~GmOM1HJkCM0-W7#ETi~{?!Jr@+&AmW<4!L6p1YU1#eEiJ}ML$2mw$lu{3P!UPnzgvgeK;8zOhG7&38BZ9CrCsv65+zJcGwl`w%6j-S_s*4pvk7dtb zmJ$0gri#aUU-D%)oQ4)*X-mV7`h8x+Ei%R9W?&8{hjT_|L+@aGx&Ttr)!h`_to*Es z0Z$dVAwGw!Z{WvJ=F6C+nj~Gu{^d>D&58IcQ#=p)+V_7G4LV8PW1yt+K2bdhqn5k>A-I; zJMjgx)+QQ`J7Wd``m2-a2BC(}9CH8}XN(#WVHz=&V$eLx0vzAonC~-on1;(=#1mUc z`;>5wg8fx(I1zuV0BsuD*@%QIl4MUjkay@kft>nH+P6OO&@8+C?vH<_kAD?hL~NzA z+mkIs!p_AH`1RqS#COr8itf0Rd$M&=(9TyRMT28hh=`MhUSJJ9h%|FXfkGU=6`L-g zqNt3=)qCMKea^vKR44GZxj>Npq~=M|Rq3=r!$?m`#%D}D(zX>Jmb3YcHIa@g%H6Nb z|1VJXH*z$pc3ThJP@G@yglL>_n6g9zm-+TT!CMksrKCjC{Kb|bklWIhJfE23M*ANr zhGv24t`Bw4KjxV>xaroC+C>u>DQGw`w(~t_t zuG7tN>5q~;??k5^LAQ9&`?t#UpuRusHCaOUmo{9T+Y`uwg`z96VAT@W_!_%AQ7$7E zhNN``8&8hab31|2tWM@tVgsltZn*WQ)~w|HiiM4Xm&}%V?!tYX#t&0Pu1wTE&wd8hySWGwbnvjQB1Ojf@KY^mCO#L+#?oA+Ha*U zOyqeQ#^?88#dqq$5&wzewno3DSFf#dz~M)q5qF)VpI&SRrjc}NAiV-O2T?Sxd%4A_ zjY?WxdG@uOM3^p?Q#CQfAyKfKNnwtjM^ILjW`5_1ujRpfNP!aajmc6~O4g8FJHlB-nXeb$>WoB&&wB8S(G2*03ny z$f9(7elnI-QBy-u@+@P3t*xYt%bMf*ZCg|mFt0CfMq^j&jby+&%~VxCiJ)R~t0TMY zuYrpSrIosJM;xsXgop2DpiU(1(jcl*@Up+#VkgT`-q6VMekvl5Y-l`i+dyVWvcrDP z!DJjzETz4YwhW0mk^gUE9f4gmxn|#G)X99VG8-HEfa? zOVN|5_#Eds_0X1pkLbjgC0-DuH!>R&_Nr3A;JxN?IKUh5v}DHE1$hSjeau<*^@}Es z_eGR{+px*8?xEBm0`+wCH5x39GpsI|*ro~w%QL6c{~d?5eRPe*or)eo&EE=-4Tv@; zja%g+iWry%3wLKHg(4S)^OsLIT5b4H6w3c6cxywH>P@ki7lf%Wa2g#%a!?RZd)B$i zT^kLU;cdY~8uER9%&9PoaG>-hseqn4QJBM}xy#R|t#g*OshaJ&ua-tnW%D_BGP7i% z=va7ptNtF|YcR=sf}UG{>nS<+w*I8?sXqwdFFl~X4l5C%GrW?OZR&Xt1u?h%AQsb( z2An1&YprcWt~yhtruRFds|31)3q@tQ*)!U~;LMbE6dj#UFZCAdlEqH3DlVJ^q<$$> zUJtzJU`as%+?h?=rWHpFvJ_NEcre=~5Ln1FG*l$@#6$8)=-j7(UV9^0fyXYAy?mNb zpksa_cEi@WHPX7h@KN{QzLUsk#UF@2f7!=$WIq*a{GjYCuv^kr<=>LZ)MO=PMaEeQ zocHh()N;8aGxdEd!tJ;e+cSUVP^_dSLH-G!;Rt(OF7P_gbZ)0a54QZTCYE3HD#?wQ zVg#79F3G$7YVx6O!fOdx|BzmgUz918^{d1m)QO7I?uPVCTL{xFN<`fMm%-G+TK#A8 zQZ^YjUasX-b_EV2VEvZruU3G0U_4lhJ+S=)^7=LwK&kg;3WvVX(H9Jo zAj6jq;|5s|7hp;8bnh<~+Y76dq0`$i#l=^`lG{H?x^I>2{V+YX6HplMFDoN_z(@Z4 zFS_BE^~L#iOUR9Wy!if$&f~b;(E+NH7X4w7{gJjXl93qQdX}^>Pd=mm%dtr7zDisp z50+nx?4MNcf3|G?hV-`BtnBhM#ui-s!JiuaSH&O$+yCBf`TIrkPYm=s3{g9Ettb9l zGB_@r3Go%WZ@Cr4K_Y$L|IKcE4prTb^qzeDd@;mY=}5xq$wVdCLz}j#sXLNY`o#Qy zc$mL8HGxa;r&IX#zwsn>D~cCczV=qNvHa3M|L<4nvfUw!|6~IlrR|h*iWTh(3sDUN zI)$sI1^K_4sgx7;oXS?7vY~Y~h%Diroc**8Z4_F}HaAG8DL|%^m%o&hmdzqQ(#4CP*bdLKkBI3XIQw6_A3OmwwHi&2pswWOh$HNg;wS9Lsg(B&YdtKsSS!yli z&ouRad3F_`K?zpJ!zB-|0Kwd#Q-(AuP$@)9T!eA!M|fqV)z3p}i|F0oY2goL{{Ol_ zPI?&ZT-?6<{2#*ie@0me%($L6Vd0Pa&39pFij0>2)sY`65okm3*SCqG`9+au&iC?5 z{&r{>q7!1lU+ouzC2WEH<-T$)9VHx&{PmB+;FoTwP6WS^vxN5JZ4mY}!PtW;&I^mQ z_D^TPw;o)!4Q7h0&4v(1f=C&P1!r5401u+u57Ts7MQ_>adJ3GNDgW8qHiuGuEwlwW zQFiJ;&5GA%FL`a)V(qM)>32Tm%9t9&uFKBM+9T$SN%uSi z>?{EEy;SvQADaq>%FLykF1=3@CNyYFp+j#OKU!hR*C)09iiNzN-d>RgY(UI@XAQ*p zP|v>hR#IaeK(M7~;cVg!R$yQpRF0qiNC3?mykwI` zR-vDtqwsj0HKRp;s7Z5|&G{sX1vMF+s5n~7TAACdD78BaqQXec@pSv~cQ`KjwI|J; zrezNYVY}%;SZTVY!4@^P?)fLLY{RAH=#36yW2*S?9$~ za8#ip&)R8S_{3I6P%c4%_G!i&Q$?mg#|)-Nz;|x_#4Gl+I^SiZdbmB#`lG`yygDGK zN&0FgAaMUglSA#bM-L}aL3SRiw}b5J84 z<1|uxLW^gSh@(8Sa^HPjbCbgEVmk@XP`*SO1I9Kt8%`?xeDF%p(dTl$ic77E?X1j> zxnP(L^a8l1yuF<=(*0^zl)InXT6ikYrV*KE@Q1>F6Nuq&q>II=^OE=wdRI@THg&{A z(sz0$vbh9J&JilmfBb-dMeNtGvwXCXeE>A$1@Ggt;Gi5{NNPuIHQSKCrTDXU@VC;F zeAbp7nr^KSj}r^>)79rjRQ`(fIUs&r|utvLvLwempTScB0QlJ&!}JeWYp zCV1r0wZE@yRq~?mYhsjbP|HqfNeT0E^L@hMZ?^K=b%HZrUag$i>%6RIX7OI zDR{cxOA^YZMl(gx)=51veQl<~`Zl(wSN)gT*U<{gFD9NXo2Ayqom%m>+y37|3xqOaYgtlbV;-OLnQG`Z8{8c&pMK3i~pR z-u*4|fnVKd55u;#vO@0r2!JF^*}&PH1rrs)KVa$KBm)~v@H#`gh8~Mknt=I&c!M{8 zjm-)!9b_n(m|ZFO52TtIWW(rsiW9Z|iNv#MeJZx!#!n-{E_ydAhJ6FoEo(qqi1y=? zIKZ+x7WWUQ@rG_Htf8uVcUlP)^ggMH2f-G^82PZ^yzHT*am?cksU;S4F-7Nce)T&| z>_m3X6$fS;ll&iCJebRiR%WyI;NRhD7s1WO|H5`q{riFE%)9MJ|3bg$U)L>UH2_Hi)H2qC;IvWh_I82G1|fFGH5;pH&^hq|(So|OGk zp?|XfkpOZ2Ch4&3VpG%$xG*==htV@ACvT=B1P3HduuxKybXQzw`>R7CLnDl9tQwu4 zcamce`Gq^S3Gd@1^uH^fI7#gEd{mXyk<6m@9_c!sSHUx3WZIvu>m+{H}>5IFWzkU`#kyCTFm|JY* zZIFrtInu0=YuOH3f}F`+)2z@R!6!FeWd!y(;Q*w^L3Ew^E7yISPJBSi+DAXT|fS= zQG;Z2BkvO6)mHHSQQ(fuzWHx-jz)cI!R$hqG5nghy?eV}dO!(ch&T*6|Kk@X{j%J= zubkEY^emta{s^%Kkd!g?|3VZ5k(k5B-qPB+z*`IYu4m-7o=BeE%{IQYviu>sXIof# zk^f*p_(pOiqe&dQ$G0IZ$k%(UJTYjK=mm$kQs9)p$h5k))(2uFwx12gEqY))ul&+Uqs z|ApYlKodbfduYkO7YJ(V|5hu~a3D3WX0DLAhXRL=IaG5nn!4QNuroj?X{~TGBaQl%KU?cEn4dXvd)z?+Ll~KH?SKQBeZgMm)s$Q2DfmmD+FN6t(Z9 zyp_IbG)Dnkj-BwU1w$UgAcm)U}&>Rw#Ey2BOA6*%bPDmrzB#+?xBDY$GBqxtm(=pCb(;n%K_)-Wm zNij?VGn{-;JuMZcET50(KQ%>Z(Y-Qt&y9=IGzy!!#0S*9>G@uUP`sEfx9@Bh?lMVJ zKD#AMDda@$dk*MKpouPDCQHLDeBrv%-yBU4Ae(=b8f0U-5gIcQU||N?NZgmfJX^r2 zB^Iz3j&3&Ub!9NJKUuC(B@=r)5wK2&!BuC+*^k8Uj z5%B0JRYn<_s!8RvDT~VfUH%i*X{&i{Jl0yhnu0>JymdQ!DWl1CaHw=23E^3dkWDIm}$U?n@wS+H;eW4T#>J=l#2JuK+x>&q^PkVNNV7Is~ zlb1&o>bpgJWiC0<5m)=T>{v8kYn;qd1^jNuv~q>z!8;{jiTtN}O_)@=9oxQl%?V(9 zw#To5ck*@SnO!&mtxhwzZW*m}-GSTrnW*I$Kv*XK%yP6JZ#jNbbOG~He3BbBy0S_F zGE04PpSa-t5>ask$`4PHv~9B=vUr(hOHD5h*03oDM49|TY0~GiM-lxArYf;8cOH;* z>m#b1nB~-B@93Lo2ipwGbeQFg7{5ewUEiMmWhPJ-j&Cbm5N7q^oBwJ8a(h_q9}Hr7QF0YC6` zT~}K%6iDkp6nnrZG~;oA$7-)Ql`WB&DEowI=%U$_pLfdKP_!buo<0T6`Pr9~`Qc%B zKR?2x3*#S`=i(*X>K$cF)X)AWzRi}>yMwOu0^ZqQ5#na%r!&5zo&aql%?tXpm@YCr z``g7{=4e(q+*0H-$kyJoDyG(3hbFQk+DpkBkCt%Khi!?8x}>V3qS(8R_v)aMjm_%A z!|s%~slH>FEvD1s1CXi;r9!&>m-Nf;3uWGw$ns^cA zUb1R?fl`;;`4J@~U7H1Q9GK!I^Wa^IUC&a>*%Qeis)o+zc={%6(uSvOA6YeRS|-PR zIH8RD+@0mRjke#Vc}zXqu_6jO{FsGSBJ^e95nLS6G=JyQ)q4dG_u()?vU2;ay$W>* zzkc#wLFrTfX(=4}fLxynMkG!3NI3_N%~4hfx+s8FW!89EB3fPSEeS1o--b9fME*nh7ghg#fyG`wLEOjcBxV%trSUt7sHoCeB1gO%7%-N{1X6xr z;dkILJ!$38y;HTAcFWs3$HU&d1`D-qWwab6V`~F(cp(v!8aX95fr;L{X{}no?}#1v zrCxC|{az??+hV5qXC;HEh!CyxMp^-GJZy;eLoaWQO(aW&t}>V**1q81SoKUhMUPHp zrkqP)G!1gdLEpc^6(SM<_aCp$F#in9cW5;?%|m})C@wl$27s|N6g`SMu5?n^A3F_G z=bQCX@+L)CbNSNR93vGp0S_=SM}YwC^$K>rN0K_u{pJna9Nhp$Gg-W9&;2g+)8Tkq zz3Cp^_Ztrt5ADjjTy zs}7~7RNfIhAA6(?WtT-R&&A-AZN=m?8%Nwjfi1%!^XO8zqU=O|d`~7QaV^Xs`2a|| zg2tal1zwve_Q@XoTby>N3rC0FH&lfg`vu;0?pJ5kqN=w>1r^3QKO6V^7G2Q%v|^sf zHlaDWg!mmx>h%cX*79;*_!lqnm;{t@um#joZMY@R1EU8AoU!L0`xsp7*p_Dx5o z-`~$fB{C||c;;TLx=NzOr3y2AKVy8bExJGy)`Jrd!xh3u+zb z2x}G1SG&Iup^&4;-w-aS%b#-$uN;-8o@B zm3|q+Jgo+F^Z_}}UOU;Z5~#+|OJt-NdA`l>3qHPd>tV^Rb5nMX-6OP9$G$@~0=F0O zqG#h(6RvvO^wAf0<(XO8`30VK)jyFgSx*K0XrX9if%XFCji01;P@U-0`@0W{AW(+i zaHtI>N_99=ZLiCK(G{+vUR2&1Mf2^fM&hV~Gatka3XFQhkNbl7kjFxLvej&pWk~%;SRW*X0Li$Z+MPBX-O=;sti#ciZJO+{GmN9x3@;nGRQb%iNi+O-y$*#D4lc z`)7@7!+j-`E~Y+jzv0|RDOOm+Xs5awl(Q<>i1>m%AA2Og$5?^~Dh(x1IE=I@fr~Pt z+DIkzGk^s|)>trcZ1hg$W8AyM$*lUp`$EUZR zLwsz)9S@>_qUd{2v@hBB$_`P&uZ1+k_HXY8wX-9$XISXY*Ro6Is8{0F3RINs997<5 zgQzsg)mKy(E?nC@*z(ve;$+)m7~xR;g^s{waQk46G`VN3i(}vzN=uB)xiLJWWsQ%O zG~!}bwKT+d%dnKDWb2XUSXvet8rjgQFCTct~sr_;6;w8611Yk@Lw zxkM&x>1BFkMg%a5+{{Le1E!DDQeO#)?A3|A6>SqS=9Rs7ED$Dz(W6L!ZKVkHgsI0> z=ADdsPFxkV*B|UszI!GF9b0YY9N^(QXn@o%k|9ZSep=?0lxTY?` zn|HNfGXd&qtCLM&bG)9xjXeP+?X2A3sUUmq=LlME3#WX-$ITb7>E1JgXNY^0+l&y5 zOE(Qe#>$z-_K4tE03$8-N2Q_LApwb}>B}WDDI}Ytl*J|}#WF%p+VSZ%tju@Q z^QM)rCj(7!4Tn_ZP?_k8PXP z2ore|0UzKHOBwriJ{5{QsT6uf>iId69G5}7!cTPIk1d;wWW=wb007|mj$=cSl1YQn zPr!$=)jKOMP@#^qyVg7<0Z<`CMeN4>om+VO0KVR|E3e#vU!fNi zbm;i#V&F;0+W`T_Cz;6g7m&(^ohZzw=f4kVvAf`gDPQ33*aZxzB6m)Bcbfo$h$81Q4f zlu<>T2H7~n6p*T1^8D2%FE9xJOX=%{?AWxv37%E}ZWro(`aE*eHBaI?28K3kHO!mK+7DdS*xj;oCT1@5%rV^Z0))Tr+lQpdn@gmNv-T%X_>)| zx|M*z9nj0;8Xg_q!ZyG%J@1%5#@WTHyS`vuUG{;2e9Gi!szLCpWg~QsBU+%o(HE+b1{L;9%zmlhThQ&aWQn4Y~O=BI02?dUd_*}W)K zm%SyI)ayc za?ncOzOA2$55XOdX~f?Fngn!!Rf`v+gNpi9nmI zyKzh9N96w6tba=_KrUEr1fQmq7E8zPj$Wbdd25+6%Y5f;80OH66@50;Wo`_1Q}YvS|xFV>v&Ry#ZSE$@}?4 z@yyo)^(s|L-1uoH?gOP z2f#h5sdf<<%XLe+XftvTv_zmM&n)9E33oSc*k@z=G5p$@A;)Go^k#VmG3t+$GwP?0 zI3dV;-Sf7-r07aibzg8M#h3&VH}r3jNNsYR^><^6J9K3jo^9lr)w&SssXVpWA1Kt&t*Y=~ z%a)h%gUjyH0=L`M>(5`wQuP-oU>X;TUDUO>#yPM|8(pvcxK|Dh4*bnQ5CS8y!wCcE zn*eGpD1cwqGEo8J`L_Cki?2UV?6L4vekyf`Adu=GCA=GoQ}IA{Xc`Vg)^cc2`bmY- z+%MYP$EzW~vWcX24=WRVeWzxc{PH#=`+H<2`V19_951-``O=6)maEVBXWz}ZE&@50_!DJm;`?8rXrvAGqy8_!&c09NT$i0;f zQRw6lJ!JJ6Zs<-JysGFAkBdk&9mDp)@aorxh@Yuq?dHJhM*2A{=ibN*UlUD+lN7Cs zNA!%7rg(T3r`V|pozK1Ryu*MU8D7=H;m~2KqAf1{$x1?3f5sqx(NLldKdx5;qwprN z3_}GK2Qy(z?=clae+%K@l`I$qUM}k+R5Q@usI6Tw*`J(lfpQkGg9hlfXF$Ao;4qIV z6Z#?}nSv2(WChD^;$rZ2bjq;W^5S;~AMi2m@)6M(?$)+uP)GR6LJ~mwm_3NOAo(50 z7y&3Md@N~o`WhKO{fz$EsXa2@b;X?Aqy+D zV=v^fvKGwNh7t~dle1uw{W2(bzaeV&L|bLD02MJWnsJ3B6oCt=ypRj0=ZywAzw!Wn zzJhQunfnR$YA4KoA^3vW$3}vA&W6q_n0VFT4uv3aI`^^0{_~O$1wol#f=*V4!eo21 z^I3wlft7{01I@5WfI$*I41B@-MlY(br=H=N50YY!OAl$bjH50y3j#q4(2>j+9uc43 z{z)sRygDe5HEa10W}(feCZb~g{)-=wu=fJ^v9a`&gv(wp9pc+T=dx4{l+&Y0%3&0X zUHCnC4e1e`v{snQT~B3u3uTCx70HuFiC8uefuw_OqLNu6n*e_>=~||v=-7P z9~Bya(Oa53`InYzlDC61V3Qm{q^G?tdsB&Ca|w`1I#Q(jSEcdftsy|}ZdX#sF^|QJ zIm$cHX+Ccv1q-(PEKK4mO2;)wQw-oL50BrTyVLYwAv*WJZN+xDg&R9-hjG>F&lxN- zF;aqpG)U6mCCb$ZG1>ZSu#RxN&0PDRp^}_SmvV@nA@1K{B%Kginp!ulDd1E>ITu(Z zhc!x(=r)zZ(^KkpgE2!1$vRzj#)@XCR&UzSaHoS_GY4JGae7|5&bsKxafy##8<`)B z{d@&~pJ5DFxhp_nSSY{^dD+>^YXEsdK;OE(;H&XtEv)!f>;oCW0!oAxu!T9pTV)62 z6O>a5zi3%NR&{!`YS{p)yat&aP*u*hJKAbB^3m_(bDo21I_1xczXC$1%H~7 zqb`6ISjxmSo$>L4wNJ#-E#4%?{m50Ceqt%)fwAP9kN&vm{ieAjp-bXMcX=6($RY4I z>%{46{j%K4Er=o$Pg4XmY3%;$Q>ZY=LP5wV&_}6J2a?XBHT$L6_%;bYmVVqlV<9TZ zZw#h$TcU9_KY#j{Qlib}!KPjN0L>}DyfLNU0na9lqTD_+dP^EU`jsg8wC`UnxOSg` zt#Kim*u-%q79uWoZVer9g}m0)nmBN*XXXCgN zD3W)^kOvcsEmDxu?)bfgmA$L3^utKL!y&%l(0p@qvfBDtj-Q0~`A#U|1WU4unng|# z;VOe(*EM}NlSaHkGJca|b5jF;(8ziWZ+MfHVk7X4xR#?hEfDMtVO+M1D(T*i(@LY0 z2Bm=4oYy}5?pxouc4RlI zvke@g$_^j5o`;1(KnH?889NR!a;RfV*%}mnVo3H{UJ&RdJ8+Jepjw{Xsy{Kf^tWi{ z#LUjXLUMscz?2125GNB$Hr1J&fOaV#;rs*fR3L#%85f@HO)EfN*6J{Cz@s}JXwar$ z+UO`^Emr9(en`Pa6JN1DO;V0N0bVDVxMn_l$Ke?1)Janpsg1;oz>fF~+lW}$X3T_z z5MXBHP6TdI%XyZNMNsyxs=fW_w{5`&hF8bN@4w#md|pH|bi>;V#tf?1p?|M0U6{w; z^33kh1kIMUEE$86>`_jiCPzsAFy)!coixV=qt`6KxEr2&*Rwi&r-r~}U>0BEoWu^? z1m5z0C+S#NcWUmpyl4ffT>c7Ez_2e~Q z;C0Z-WI0dd&g#7A*ecZ1h7($Hv+VJKsrzZ6k9pQ~8=bTZ7+SHqr)>mqz1p$h6)mkQ zOWySYE?M-DX#fKROf$tP`2{$9ul!TyMjFP?ayrgsXviz?=akdr8&zxPN)HA-)s_Qw zvz)9z<3yH6jlt;}7Uw|fH#hri*1cbE#gUX-x3+#ImE9k8J|3fBG&ZZ=IxGg`!nP&z z1Tkb|!6Xz~bOitg`rMEm0+J%Ve$TBF2_jDJ%~ynEx$M{4B$vb4WTbAdw{kltJ_Eb{ zxTA9B@xD-+%lD{Dq293W;|02OV9|!x}wKS~b;j zF@||fs8XanR~ZALON;j-WyOuHL9*iW<~P!%N>`}9FF@EpsZm3qY#5qy{7WXHpl5sj zGnSw_`8ZW8cDATj@e-SyW4`z?V^EnBjg&Q|GN;qDCGc}~tm^axu;wH(;A--wHW$sS z1Bl;u$?WJcDc$o^!X~X6K{m@lCV{t*;guq`*f!(g<=;W(E#IlT0;5~90QZSm*7Tq1 zk;I?HqUt24#{t97IIbmQsRM5MREoKvy9s8VKB*(YTRXi=XheJ0@V<*NJNY@+bMi0X zBcVa>b;8jb+KtBu0@EufCb1K>Nv5h?R#GLMcQyA@;0_*oZlnqBnErlRA<5gY|)>$Sv_c z`?!N@Vq}9P+8jCrMHz+yLsV*|?yScLfmp@T`hA zoWXr4KyF{3Nj01L-rULCI8yiBmO}CBejIjHg7zBCYe%J+c4b*b((6fQ-NRjbt+lFD z&rPrPP|a*X-y2;XOrYo_avUBpKa)~#y?nqI2W98b7!jB51$tlP1cX!htkUg+(vTOW z{AgDK^;Vt!8V!rR{_d8GY#EB&)mbo@{pQ}OdPZ35Qc=tX<0rOlm5m#}!Rju<}L=T5=pv%Ppl&RxLS$IB@2Q%t4 za3|?U-}iTI-216(Nc*`E>8_(zQGE(LPN#OD4we+orX~6IrtmDVQ{$kW*K{Mu4nXwP zxqMm{!Y?_xFI6XQ$jae^;{u_$t@4z~q}Hs#?oa$B4i?N+!S`ZjE0yu$DDSTGOm!3M z7R{;%SZ=;ea5tZ$55RRy7X|(L>6(5vrelPLM+~s4;#^7*fNiINg$Z3)=p;k%sT&Q=wOk1I-y0tZO>? z$t)1)%29i>cDr1*)1s1G8`&t@-Tvbt=x+PP5Wk_B1fh@w6D*CdNV8$5qMqE^UAqC_ zmf6Q4AUXs$0YD8jrv#gBdWRBZ;Z`jwQlo^Mk1lgXOp=4XUb$!h>14XXBI#pe2RGUK zM`-7RniK3AWZpm~>HhYku@WGxf)Zw!;XaaWR=dgKSI5KmtVC(z;A4P~_wa(FV|yB- z@pS{3c2}Oyu1Z2QaNbD%O$S!1`-j%OB14ul%)#AjD3sws9fs^Mz1Hm|Fwd+pnlJp0 z8g`q`-)fSzNey4-JwU$X0z0@(1f2swIXIeX`+P>;KH}bwx(|>h`jsH9Piz)b(R}y% zHl(Yc<<_CW(X)q_Lh@D0vp|qi&faFguR2-tYh#Q%zVJSnA}Y%AO)xdDg^fDf7s7IQ zr6Y~C2mN^Fe`-(gjufd_o5ZKvcYl6pkp`)hAEm~3!KUMZAv_)JC!_p*boRS zOguXy<+35OmYwi0c7HItzXIUc%OCg5T@t{q0f`19u*ZaFPVs>UfOf1pg;khS2ZBRw zPcB;|w)J+{5?;2HRTt1UXCIth?e?~>N~(PhmoNB3DwIdT1izg7ZB1xvcJCe*hws%M zj6h````GbhdJ$0kjAWGz-FzIdm~?6W$=A<~l!RmWo$^YFSB*g7qQa`AOh^h1z%~&4 z+l~KfE!Gb!-?QnoK(qLF09PHA>X56}UmO0@v&gY$wwV2%i(TMtA4eq_@G;*4;X2tK z4&RZj5poCJZrPd)3sE6z%)pK|Jwh9RP$&}sJOJCqwZjgg2XeZodE6{RwhGW*^0{Qw zvAC`4>K%E~GnlPYut?&@9(Q!!q*tGDe`YoEPb767W#eUSlUT}~mnoi2C7nah zg~ghpFuYYLh$qEk-L52E0$O(I%N^0j_M#Hb_FY*UUA?CuCrY%e&hM_ z-bB`-$d62lwg7XEq6X+&M-@_hA1)m3A{ z7foYcAe->9GLG7oRBsO?UeP!71j0@24W{_hSHZv-7CtFpIGw5}{q3k4{Vjj@O(33= z<3*9wv`(5aD6fOoV5mm{ALkQ?uh^Z1GWw1-DJDsk!yMP7?c|R_T6-&qd2)c`RxGG9( z>#?}JR`g3!twh)ukm2G<+uX3};as@{1*1++ocHOMas>4dR1LALST|xJuGv+8avtYx zLTVL$Q6={AHVQg^w-&w8MwUY_=G0KeIhC>IZ)?rC1+#h~hg~D+cv~v{OnLnONIS<~ zVU%D?Z`-zQ+qP}n*1K)nwr$(CZQHo#PUa6x=6j`6sZOe^I#1T3e=4XZNd0#c8WWU! z)L2GSyS_C-2eao(@lxzR^!1zEIowb-BSUEf0O+t32+Nzw(*Hviw)&23%>(8wH~dNS+<2c*+2*HEOzB*I>I%t5=G{4Q@M|!1T*25&ITxBc0Yy(4fAh z$|{u0htRFYK=XX?w2biFxspjj2VMZP`@-Tcg>{|gO4l_N7){FHami9f)wWB$ii~=N zY5sxlp&^ZL_nyH>Shbc_I=-t!ZpH>^XbTNpIWoARp%C*_%Te&U0{7_gSyPRg$}vtx z%%mLb*{+-XzHSav&D|KWKmTJGT%Byf+`hMm`iPH1h4C)7_)6=lvbrP0)k{U;z$#4KIeK&$DQ_ar_Nfg=0%4sUF;a}VuQYtVlF zk*6K}*MurU+qGtkq(YcX!Ht*I#9uPYiLyhFvGpiU(B*)g<-q8?6W2mw5)I&W2Y9M& zWZGb=*Bg1GfF;E%tQ2HTDDa{75pUbm1scs1GJ|w2s%E;oZt_`?T7K1%c#e|_4pI>b&GVi*c(JWc`9r@A^806o(Cu2j0!fuW%rF@R&)p-QhpVp&j6;Y z%Y&`2q9YzWs5hULHF*ZK>yHgiaYPJR>92eL@}$JUJO3g6{zM>2=UjS7LiWTz?XJg0OH0lh|3@53PJqrMF1BwW zCT>yu-IDU`0Dg=?j-J{}_Z^yI5?$Ita$XhBzy)l%<(@ydMZo(Nq^!igl|#ztJ5NpZ z*x5*9{H-HqQ58Y{H^qEJ+j>kn<4^N&lCf>OB_}ilE0F^u3LX$0u)AGcIS=#o9U3hNStPHFX)KDz;) zoSy|7-V+BH&99n7_3|DxRcQ5Y@^bzaxXVG*J}~sef23=wOxNIA@L_z8S&6nHV z76$#eZ>(O?!D}*@i3I@tj-KjxLbRBeMU}-AxyaHvLZ+nPvI}QJGs{pO1j4Pu2{w4l~v5F1oKsBDdW!Yk_}B+Lx7gn z%og>i==1H8=Wrp!X+!LGu8i#qbs(CLVRr9XJ2kKmfMW`V+qbj(cEmOedy+?dfq*C{ zf_v2>1g?JY{C}e!w9axNMO9-KagiJp&ia>OP3oEsQW2#iXI-)0UU{Yc%n2@5@j3L- z7fR_4DTToIxzn<`lar+S%Gi6N{k#iJ;)K<<9nVb{!e+V+0g{Lny&IBLqpH;;xT5hh z7#h~Dn=8h0+Z?mUuI&@=&p?{A9vx0V>DBj#QZ&9iRQy80W$)}EQZ-${YIWh5h#}Ee z8NSN_0JuYAS`rDm#?(0Cw8-i94hyd4J4P`uG3+ac>upAzeNJ$6K^V85GD7AB})(LnxG}?JX4-VLUyT7n~ zaq}a5AJNJo}`irSE zRdSy~A|bKa|Fq;wuS7NL|Cg`jKiUgHE*Y>cxHX88v-F1;(TCUGJ7`n$G4NOBtOpQj zs0+%>3C~n)4i!uT=Z*O{kj8uZLS)`2L{Q8O#=+gHTGEDOs?X}p$3Wecz8zLX1*jUj z)S2I)czPb+h>t;albtVi+J{+{-OT{KBM~}Vbi}rm5dbdnZfw(E&IM_o&x{}h~gR@v-Keuv2N>bL-;tuSHbz1@b!3`E?jF5NW`@%&y|Ez zdh;5R`Wepi#)r*0|NGbCKZdUp5oUn*Jhcl8q5>>Jv4`n#kU4DG8KI-R;2a!L9;I(i z3||6ZOK;HXms_l^ucx=INK!af6AM%8W=5=LvXJ7dgdjiK$#XV~*FP-(Ild!7JB!8- zFX5J?Zf2GhlaGa^B`AFF|0|>Y$i`1(lU|I*f7YGI%xud4fFf9+stl7a1UzYc9ol|p zlI<&g0*a?fw_X3+O*bVRKsP4rv|R)k8(mV(5~mk6Go^_T7^zJbo3nz&ps#dy@B`=P zEMWf~49tMY@@Yf6QSsu%8T}W9b-O+KYQZvg=T0N{YT1z+W3jSL&_iJ^thbwX?bVh| z(!}!LffIBdh^c07+b^x?4vw};4wRzAiRXnpRh!Tm?Pv{?h8VgpnQf9*#_|#GNHVdB z%#e?O4gf7xZ@0Y$kMx`pr9{M%CTt@)2@#0yKP-Ly1!$T#IW6PEDybzzWS|;n zfz<_}F$WN*Wa|!mIhk_Y-!pbHIr#=Tn^A$(0+E?Vz6+?KCa*Wr@H*L|Hz(@k7SEiv z%bFeL7&}0jv@_3Twav#t&9A135wJY2kifp}>$h+|#kMFU-v>m)E$j|ReHVoL(%{h; zm4)}@JBP!nbjL(1V(~Z@sY6h;BBJS-e`}@oK-GE`Qd)9FWgsIXW0?fMjc+haCI`Ai4Fd>irg<@ z9E)~W*NlN=>&%SX@ucg`sZn_K@vf@}_W?s=jq=rN;G=ojgI51fwo^QNctROa6DhYvAQ+2j1v1djuq6IK-O-XNx@@CQfFG?p=& z-m)BkSw2SMd*CfS(*Yk7GU|J?2b^T_9E?VRReUu)emcK;AMh6V zMG4M>2o}h|46d#UoD?ppsp~E0vYdV}benfl9*;5=?|Goil(&p209-*`o`BkEAb*+a z1c^_ls5$T*-gj11;L96AYQ!Dn7zLdcF;kt?lSTg-(My`l;Em#2*PjMgl|z+jUqnU0 zh@yMjKxf%CJR|dMcz(Fqt!GKV?xm6P@Do00%VvC;4%p{Wa3@t zt(a+vT%$j8fVjBe1tRGh*^cX~&uP$$Yfrkup$>L#%Hlv#O<*{9??0oSqG0n-u(L zg%b&_3u!Eq{4ZQd)6S5Is&*|oWY98IiZDcCZ2E&F|7Yf(ylb2hR?O%>kC8(^F~1Ox z@>11vn?$Sj=;(De#HW_QAcFQ@!p`hGw%XbG4qqUNPE9Y>0EO*JNpwre}&liU2gk9T?o=81CCf?o}c zUfQm+?<_HMvDH*|?RNuloMcbdw2CMy4X;@wd@M1s)EMrhf(7|t03$x6QCb2iZG#(? zowYD#S}=%yB1;)kkIXFb#IG^sj%i%$GdtXn& z)cw=r!4vyopJ|KRG$xRdt6e$uC;+Kos%zq4yW;dpkMgg^OTO|-r$4Z;ve)3gyw0*J z9tX4&LOM_26;0DvQ3H~Ai6VlJ;vv(XCu^4$1R!7o!##KZZJ^YlP1XY0@%L~=j| zYiNs7HjRz5&nUMeG9If=HF`Z zQ$J9XuuZZ$>-lkt?VIB?zWw;b>OsHQ_lw2u{>p$Ef5zfIV|XP?)SVP*&1xcGz5Z->`}x)EQIXhxucW-acmZTKPcJQZc|9FiXA>@T z;)NDDxoFKa3jDPlIHv1MVx4KQ(SdiMMD0T*V%nxn`Vc5-WCJbu>M(4&$9R1*mu6ZZ$IaH z*or`@P46sXp=`8FM0@DFybc^7knDyk(+y>-%;9L-mL>?_Yw^tPpNwoVk?iCM6#}v1 z2&WQeZ2m526qbM0i0c%el%~X2SSyrwnS5Ko-f@ItCmy7MuNuH;=NDQB!wnamu3P}G zK+z9dK!^t4Ll)e5B7^H%(k5-Q4(II()Ue7|D5C45P{^k0{3Ky2uq{rfwsmbO0A1c0 zVcZuQZqZ}Lvo-jpQT)(QWvb5O;>`w69P-%87DEyo5z4_@R4-KoLQpPU{Iaj@np}tr zPl1(54@0t({U~}PPyFa^uvfQ-n*t8qr#rNfGVm2I0fUmP?IZ*Bv}~V;Iqnk|KHRE! zau*GiwSi$g!bFn696nzH?|dToFwYu07XM<)VkoIL`vG3YLT4#18%D;qet8_{h+ z)07@mEj!9fVzFK?7Iq7Lw;1&mvq%K-M>s1o&y zd+0Wq4MG5>DnR)Oie$YRrP({m1*aY`CPMW~RBst63XsF0;?W#YsF!r0n5a@>U8p6n zcya32t{TG(j6#(cbgG%b)@fGaNJZx_Dv>(R#+(lGuSg_v{gmE)3hQ#omF<{ z9zLYW&j)5~#r^}1RPR=_a0EA5&?}L80Nz>a46*Jag(X8n$w2Nk;iNs=rf(?aUtsUL%rtG5n3nwf^A~6GTBO z-jbfc706mZvQgy|I9N`IwxY==G?XL((AV|QJl4LGkSV67yP z=Hd;#|3t$8SOs)DH3ayBSX7@~S`cT%ND@tfbTf6ffxnGahsRBh&6lwj`ArILwc(-k zV9&K%@(mzt_eMGlgn|*A%(mk15KMyP{vq#vqa_Q>U{-Dtt%SPtbx9nToWPFUHj4_#l@Cu zqyy)asC>8o9nHI z?Z=#7yM6KHtIz+Wp;;;qr6dt%(H0Ab+*&M?PY;s+YbdRQ+_1OamKf+0pxezjoNG`ey^M`HcAkM-`uB}Z!oLeVRyfAe*yKY5M!+Q@cGc1u&@hUCEp`E208 z^D2D|9@VZvJt>QEPe8S*9I(rw9TJ}f(Uy&Rzf=SNNbiy5ha_tCbDwKJ)0=gOr*nC{ z`D1L8vZt!h6}kODmkSJ(jPaC@Zh-h#qUmN)xKwEz*cTKwC`$hic2zDt*UyX%=1o3h zPG%icfUP>}2x5;xHP9>r%SkHknb!t;(u_P?dGA;1GY3-h_Mi6b?U5P;Je zx24aYg*QYL9C@9wb+_7lC1gKWMhQy!W8ug!0YV8z+#aG{4%5z(DWZlVG zuGW&mHpEAkO6gF{ad?sa4h1=8KV$f_ z2xHEbW^9K-??jhX8#OSGF^chcQA3+&qbOvekUe*Cj;6*|N1M+fL zab+MAJ51IV#|D7)jqNB#G$C!lXU-t{piW^jz>`fgjH?0|lR+9mOSLHDF+fn_H)7}p zmn^Y8nzx`FVrf`OMM)086)rTLgH>t9W<=@|V`>>m+j9|4>TTYO*Eg9~R@fkxL9RE# z38~V?g4ns;fK~ryyj}4TID->~M z=&{ols;K*oll!w}uwW8f8JbEpsYD`+KR!t}1g4huColH}Bz4D;IQ&jUHvug$SMh>n z=%;|?C83v+w5_2 zfB8?UJt8bCpSNz;7er7DjJp+E39b!rQ39%Upr|8nC^0)m2@Iz_YW%#wule*mLN4BKBWWEQxS1^tAK`oL z(-`A`&{!#dW!i`lZ)c-*=*><+jEAjs1D6M|D#|hMQ-kn;OmYxJ~YV!hLlK0q^TjVgUIFA`WqTT~L~^M{k&*d4r=yeYgzCbUE%S6-?g!%xYZ9 zjHP-?Q&h+6vB-|ql}y|%wK3NEVH(A{VTW*;x|DhnF6GC*{>d@ZJ?hNo8^`8kv<>9D zxU2U@Ii3!(Ks z6YHJr28?QJRD5Y41P-&_JS^V#SNC=O449Btn+0v-K%s2ydY;dJ7&*kUYQ0i0 zq1OcNcmBIN;!V3=h_xp0yK2&O#ZN{(f5gD{PJKY|e9`7X=a!>+LAfQ<+)%^zO?Mhfe!OI1YXi*ZB$I`Vbmu| zoO?1%(AZ|bef`;1V`4z&wJ9VbY%F;NvWoD{e}Wpe6=iv9X4(foe=#SY(BO zA7e7m?|wfiAu# zi~085sF#R!y(4Tck}E_=RTZ7o-B~AD@V5i zlF!4t9IeHS#4v-!Otz*~lb*Cd&cX0uD?HY+ecd^<;- z9v_s{m`rr)-cG?wtq80bX21}j3l;!nR_^Z*Hd#v|f2oMX(_>-&EXT$w#GV(*vZb|% z-Woc1e@M`2;m~Y}pp?+^#cn#S)XCh?qCCNz*h8{s3(9#VOEr#}L+NS+P_J>N!yBiP z+|wA^Sg<`e^*W$cA`PnMMctR+haAlAr@2I3M)^+u3yA55JvG+|?1~@-mz}HlPxR&5 z=-?ydY|mJVPF=MEP%+~uo^v^A7%~!Q{ki_SjjIgawL7}14$6a2PQfwp?D9wS#Z)CS zq@`alu<5)c zC;m`Kp)7?<;GKSJI{D7_;h%paLB=j>iGeM*0M>1pg5W5#Qj8QJbS}1BkAPKog2OnXVvTr+9dgTtgkg1dhZX>nYa&jO;}s*9I0Dg6%X0y+#`GOWmK^INc@7eSsg8T%MbCJZ<& zW2Znhg(KK;tMpK*R_+>kO_bqsyD)yaT?5FcF?@hIAj=1(wf!%>;wqfU94FFYfoXJW zyHvNK>aWn5Cz*+%f0=sa%d>Y0$(u{euB8{NL(MyWjIP37j7l$t&78r8^ z(p)%(2TPr-X#7 zxVqa^1uh-8C&nXVZ2UHMse!L}$;8-k|D;guqs?N$fp_O?uq@i~I5v&&WNerf`>K#b z8q-y23Fj)2zufvG91f_Hx1n)*=nX+qO~&u_gKf^D^e~=ce&!&GG*Y3RsJcW1OFiI3 zwh<{f%59PZ=p}oI+c-}bsXCtJ1xGJFEGun8wERju;*D)9C2s_KPc5+zQk8f z#rs%6&cfVh9qjf_5?u;kQFL>HP+ZIj9K+gG=MV~S_hwO*#NOq3n-mplv2 zJ%1ObgkX!22g~ClxwiSj_>;@Bs}6Ch+7bUz6w27;$UG4!9EbmghY>tqW28=W$040O zYJ+|tiKR~TH*=-{_dn{3QOAa8Z7)8Pwn@Qe(xZ71uVA>?LR2`Lz323Ud>O4@p~5WO z>1Im0_nBr^fflSkhIE87-bl|A{q&od8rc@p(6+Hi>u~Gqv%ph6)=o#>ufFzU>vdTl z!D>3|IqS3ydPG?JSJ!n~zl1XoFe++HV$Y2-S9E7`-^|9gg<<6kTOya^Q!lk7ZZMn{ zd%yLDk>c=PH3^qo=OW2)BbP6@U7TaJuBbxxVYjgEZVM4?U;taM*_wL9IeX&pDLQ<- z(Rv7g8n=e+iMLu+dBFWhPWrn%cBwq)4cTc2f8-rC81piR;&f*XXB}$q2kp#R)`g7+ zqRAK=bab%iE=#B5h`wb9RoD8|amhy3x|VT`?4QytR7zjCyp+x9p&NK#?DSI9+lbka z`Bo6TId59;Xalk5ma}&ziht~ve-ZSX^Id4ydPF;VLZ{Z4$YKj zGH@j5Sm$oKLA~v%j>rNd>DAu0!Ju=nrN21egc39!?rES@w_?yg@hP>2ntHdPP8UuEn;=TWDh9% z&5D$WS*cf4Ch766va&XplT9@^(7NeQQYwVe^raqKcY{ABMmN9b`QJeB8u+;3M==5M zSj8aESmT|I@tcFtg@_&gho|_B?0$Y)96P84^tRj*?4qZK&6W&QLxOP|Ovc~VE_e$P zn$ygLo${VfS?&)=-F4ZP%(_Dpw4@DFRf&ifAVkHy&nJyzyT2kK_!I+BX=kwdv+Dnm zIs~0u0^@;)^_-nIjxlGkbh}tZrNs;=1Oj@rJfmoRA7}d{$PPQKUPGC20nsJ+?xe|c zbq3H{6_5K~$!Kt86Ys4hkMZ@^B^sh{sKev(gNB-4(3t0Pl6R<(`Y? z^jD+0K(ir9^z|=4$z4*}(2$tDG2T-2Paqya(F5n6rJR#@ z_sJs@!LJx#9?PUV-2+l-%c30{Vn?_W*HR$pu}1>u2Axb*`hS zp(TJGBEm(^eqbeJZIeNW9Zjq5>jTzzx^Ol1El^HlV6uM+HJU$L6J@OxklXQyHIgl( zU&KkQV?6k~r-$>C5C47E6eivBvQf^bibX#0CGEvL?6J>>wHBUju%wLxL9Yk~q@g`? zc5-AN$filHUF2KF=XZfef8WJdxYJ!X_9~&O6;#%b4YcY_-*7ONzVf^>5de$(b6yOD zsZO5vnj5+ByhC<~|Fkyxa2mWww^#M?n)lKPYWPsX6PY**PRT2=UZe`d!5{#=q??1L z%Rfd-ypHWwKHj%Z@MTgCntVaFw@)Zb0(4Em+Sda8skn>YRZ4Z-T11Yb$;Ip1 z;5{+ozy&g`<(YelnfyT#?nfRX!vdYsl?CbttT!t*^V>$%Hh(Rp|Tk?U7GE+R*5k2Sh0@iLfl)Qj%Nls1iNOF4w-MMP{R=? zM#re_i@r}#{k6N9mN~KxnYw&YoDBE%v0=p`5xe~&6%V~$*WQl zoJkR`Ot@FEDvq4GOo(bMV2~}0%7Pv@-qMr>%MZdy>N|90ev@rR!3}J%s(PMj1>ubZ z4y0H&hAc<N{t$9FvT(BRT3WMp_uGRgt-t-1@mcb^AY*yU>D4=KmRve^Q}` zQcaT_%hF$}YmN&dg;*`yKnX55Wq>>e$e%I`*(ElW?hX&bCm!uSv-tLXH=o%VgcqEL z{Zzm*XMYNmqx#{;`p|7_k4HhSyo>h}O7FI|w}(mSd^5s{P>!;3PU+;9UB~a7W#`S4XpXT~bDBJu_NEU@JKgr{yS6X~Dvhf`G|D+0nx@z}{v!`vWm{>O7YHf9Pqf zp8Ws-5`3i83gvV9Egaer8%m`dH#sy4A_jM&@>;F+TLat|I4~LI2o%AyiePo`WXTdg)Jqvp!jI-#4e!w4Q}VWDF3B z#n}bKjtAToyqw7**kdv^b8_uTj&HSnr>lIv(3P0~05MwGqYa!7z#H;hz$ji$Z5x+; z&}Ay{BNhyYfPUNXZqB(Q@ZM+5OKglj34#s^Zxl)!3;|->FKrs!&%83Tsw*P(vCgzQ(52 z)T#oaA(2-d{ehTV8LlEc)uUyc5)*UU954tQ*vuoXTCq-?GB@xzC$x}B8D|?c2Jq|8 z!)KCy>PL}qH25T6E8g~2IO&L-itpoLT7>iDc$^#NV{~t4cjC(G#R);&>_4AoH*?TJ zgPMKmV}b14L64)7n1R|YzeuFQr`i;2oruVIW7KBBSKyM z#+(|=0S{7rNZ6)55EQY= zcWJUug8g?`MO%bp^ida72jz9+q$0~m;N}+|@C-bU!!3&S^FisIU!$tv(qqimWZ5ZM z@a{c$;~u-tM2)3VE<-%RkNh#N845EoFMyfFvAP{AYs515k(fXzciAWV!8pdr^sv#t z3SH`S4`#G|dtPWqgJyQk2X~Nb^b*R%5Rf6D4)vh{PNl1k8YMZYh)h-KyN1^I2NGaL z^xOeq522rOYLof0SVRpcpZf~It`nGtt52K)K)a(PfTITE)|yZ-)fiX2m-GzyhUy`L zaRfuW5{l+TtR741gu|qr###7668~8#ZQiSmw+x~~Q0{R%#~Xo1pf&gLaWS&1+9LL+ zt+FI5_+HSJaRg-5ZDFOuT4GqBMiO%WzZR%0yZYv*EnYIPWs4x?UOsP)=yi%$e3+)U zLL`9UD)t#3wlhYedaB@^KY-9Zp07%2VAyr(e#5~S1P%R_TJk{{3h9Ej}dN@kSz z$4D)S7MwqV!Sa+W#fQvjn(%12aX29Txcp8N(mMy1b^vd$<3}gqvkjWFv_rmsil%U< zpCD5zDeZ;S2pJ0)gImw69vobQ?Sd#Zd*$NpR|N2Rtx%rr@7hc_17d$Hgc8`#|hyACbRq zGH7^c?8?Hu;VG5EM*=oSwqxT&C3D z2V>VLqUa1vrhmP(bntfDQ55C!wQOSJ%h@hbI$@>smS{N_p}xH|%FNKK{N+HQaNVvR z^IYZSX#~~P@2ipbyIZx^cXZt~{L%2kwZ!2Cw#?-U@E3d&h!0juz2XHRDTb(!q zUOusw>d1JHV0j4?8jf?Mq&{nqY^4#SGx9JSm(n6_Zrre#(li`+qUkK4*a%Aq`>RA% zdUDlZ_-fwJCz~I#@6?l7V#s`gQuF)bp$RzVMYWJ1xhrT!Wkb2Q5FE}YDZvRVG!~Qg zf=K1gfAb7LY`i9bWtMIq931534}MVdBA?_^>5Jr>LzhXv5W57%%ex9i^LTT$pDy5J z=p`Xu?9J8{alYoxl}mG{z6q5?{%Uo-R!a*Nu5EWlZLLB18w+B`*sT$0Rk-?T?QO?4wCl6_`>bR%f=f9` zy5~$bQE1E;DaC#em>Ub+thPy^>o5&Kl1f-S4vdr3Y2mwDTrD>^ibRu+jr=36Iio0N z$T&ZzXQS%WLcc27)SNVKL{;3K%;|l-Ezl1_>!_C@`lNEsIeS9HP<0OlgPfd!;8v_? zdb+2gcD(mH;S8h#}#1>MjaOj|Glh z{nU_~kX@9kDCZz@W^QG71|H3>TSP7$(CI#uovekEhExJ9y|QS*2i)PhpQgUU%4csE zQ{(Ko|KLRi=Y6&ES6HlHGt*B3;Q5NA;$l{YJZMC>UevjG2a%q{6m z*bU6Yre^$ba8ue&aG`p9T%^KMswf zx7*>@KeNJjtEo3NC&3YVKGNLQ@hiX`mp&}mpPxuYM8WkyL9>ZVU3^9Opc2Ho9*D7w z_vz>820u-4Zutw>p3*LkHa4jygx7|eqeC!Y>IK!Da&8Bx+NEx!$3AFlDZ(b`}` zES2ou+Fc>dv|kFC?SU$E8qBZt=<1%WvPq{E2Yx}|fP|aBo(p85)Xi6764Xf{L$Ur) zNO+rzevtsyi~NTf&ZCNKEqWu!{k;%2G3QkLL}**^Z6xy9Q38#G4r!L{jul7zj=6E;>QnOz!%;4GP2n2S*?PJQdTher5@7 zpl|G@S!f1Be6};VP~S!FL-#HjI%x%9Pr3x|IdaXtQQiijk+Gz$@*rHyStwm;4jZDPd=^oF8@3PL|nr zeRZ7FwhFIYPZDdkoP97YYF&$-4RQ>C9*)YMQTpTu222#sd-@J!Mg6QR@?_A_ASFS_ zXfjl_I1Axfyb*;6o2|WMV_Ic$XUwmly=13FEILnSwtl~BsG)l7eIRn3)&*>3mblgv z(azFmFqXYrc)P&zV;n5*e3Go0h<|~9>3HRkRF8mFv7Kg6lv(NWT^E?@U2 z9WueoU|`3do*Y-X#q)zq^F51Sb;XYS<_X>8s)vLLZ{(3FypM6ywXR&Kcn#g*3!A=n-c70rK%i zmR7mwx|76)WRos2={k62o1Pstn}d#h_dNVMGE%H_wqCJmHUYSCi_+7{wsorqHPkPs z5UX*$R-*~!WdFKf1m5;oEHqhTKB=dUZ9*kSc7#rU0OOO9>sLMx#sJdmD|UBU66|~f z&GZSggZTY4eogZ-lSd>4g03BHxFTlt0U)$^SrY}sC`@}aLg12)R26E}LEbBqa|XBy zLHrU`Rh9eP7L>0?xwOLfk<&wsQMM-5xZ0yP?Hufs+ihry~S z1ZmXzcC~Q_u1i&aWSo+7k`NYT^ExfG2RQYhKQR=9K%2SAh8%A5Lb{SEAV-(NjsiS` za?~o7*NO1jQP=XpSx&M%MXmFMj&Vri*Uq>{I?f<^lfyOMKh`lD)a~12#!bgNS>j-~ zZvOyG^5t&0Pcfk7@Jd@+7o(mTl8H?S=n?;@B4SP|oLyC%otFaU`&*_l*`%Oy8Phgc zz#c&@pKN&gbJcZ>W*c7bx^wtmiy+|)<`e=LT^+_y2$9LX5{dD>Nk*~;H{LGi*ZJMr zY9GXAih0Y>smp?9T+T+<2pXa^J_OlgPyh0XEc7s%3Ra(E0&&V=MB<1SQl}M}yNUg= zlWXB2LxrjGY0!jRJ&VJZ{{hp88H$=t=0nlpgAu9_0*^M6zbpuQyXom+h!6(P+-K!4 zu;y?mX;zw~DHYt!C&>bp5Bykci*@r z3J)dQwr$(CPTRI^+qP}nwr$(CyHA_Aq6P8t$pi%|*# z=Y3{8);S63hE*)92e6$oalyd^y?03HJ*;3K5aMLp4YT~rGRdE@L>l9eq2a;EZ0L85 zsk;NH+M$F+}Qe8Iw_=e~W^XwQJNF=Q6)WT4x^(z=l>! ziFY`JjATOwrzVZ@T8{WiPH19lz%%G%Nr+kTCeTHDT)no6!( ziOlk~zCFCQqY>i*Ogg$`#);!GiKpq&N|}7mTb<}2)J{5{8$*GSbQf+XZd5 z5^+QpVNgzz{(`w=Kc0~!9BWs0d(Hm2KFWF>{*ItFOt1P z6F>oKPr&OU@1kZ>@S0*?yFMp}SM8ns=&WO|j9W$1RtI;%&5$6`k_>N2`$J|E_kUEF^f;P5p(mHh#tSLUA4ZCyOcQqdw=m z3SI^F5UKl}vtE@;&K{d|Fai}%mNAFf?SBy;h4>OqE1847D78;i+($gsZJ-n$EDu(u zivkq*OCQHxP(-5imJzVjgXWP6ekTTfQv<9{<3is9-o zRXAB^fF=%L2ll(?PEZ!cTi0P$b@Rf6$~>uLGky(W0WPtTvv!;mS|W2YN}ht*=3+mz zv=iG>kI5A=#i?zjCH8I<{N91gzK`l_-mM$ktJ|s+NrNmC2vNXX?%B)hnem}PSx!zD z6w)+_CcHyCBf*YV0#{)7gUw|+6teKOwWFKZmR+@xuE}ID4i2d|l7$-qM{mpLWso>` zrMqvOpPId1>j^=25qt(|!wLsEanNQ9do8IFwob{@2^d2}1C4AT(4yqcOGC;blC5)BWuujf8e`<3D?cqK$QkPv5`{c>D zCoq~gMEJV!R& z2siLs0cjPK#J=&Wy@%vyCa&7ua0Pwk2(rIQ*1kf-@{a8J+c-LnRnTM_+0K&m>uZ(1 zlFsxuubT}SZVY>kQe+QsdtkE?lh4af(+yDyNR(vO zPsFvWwx4nIX~u5-9B~l|#St{TA_(Y1SCp})OCJ!nwsX>T!yBKu#PC0idAaZRS|e5c zsafB9rGBAns3da%W&$9|bO{;SHLHlkg2X#XILh+gIjdV^NH;}tFD^{dazy=MURLd! zHo$9i0GY;*_u^Uske+Bq-bYo z0PdB9ZT#}-0ovt*58i82ObHgt!*X*&4E}zpumKnM>(Mw9EzfY3wAhbMby$T9(?MZ4 zI063Vt-aveDbwjE@eX$dXis+8`n;VsnF-^^(3(zwSbfD~g^3kQ?p|qn->MWQA%vveY!ZWPq&8<`b+NVo&vpO<@jRh3|~P>9DKwByabzPTWf9$ z3T1w0i0OcyEw1$~6WiF>KQD|tfXq_bw|y=?1POs2K=17+F2Rp<4CDWt&DuDiDI2X^jymbP)MMr9@zr_z-H$W(RfuwbpZ*Z1*GF)QetaKU8|w~tV|jH`%GW* z5KV$Jaevxvor0j*^59O)^=1AuM^+<5@MLu%P5 znE5uK$l8&QL=X>1GBcRW$zswj?&P7Y&vN;mzy!`I*WZAKOg%&o+gf`(2`%h|Z z&FVMta=bL!3Gjtw{UAIdhl3A zwhA$%%T=XrZu*;FA7Y!%#J?@rC9hjBGRrsLFvZ`-0>zqj>rLNnl!zsHdz)5D^y-gI z;=h$B+-5&}F2jjOzmcHk3nuuBuq%*ym@wn^RMwB&*&`w_x^f|t-$3d z)h-1xM=Uq0?Jh?wrZ?M@15FgvrR~?W1!t3@%}@%2*Ac(saCd3kyT`%!0RAiD`W2IV z*8%Idx#obnk_zg}Ut_MI;FO<+=vt44b5R__1!|S%I1i&q{}PWE7i0mbDaRFBV;Bb# z-@NKkZb)4ul9dnpQ62-UXb20+0-zExwegw~4U{En=)r=;Jmth*4Yy}Rg!pup$B{HQ zIzU4xZIb`Sd+6$txrf4yd!daX=5KX5#!w$x&(wSSvf`EwkJ-+mHDsegz45~}gDl4& zadJTeW26?1#VS@~9I5vy0@1t^BjWn-Rk2OS_PlCib*Gf&pC8a|34@5f+pg)Fng3?w zoH$Rfz6Ie02L0^BhNa4yH(NmvaW+TU<)>#e0E~KF%K(-y!J_GXG?iU+1A%l0i_z8B z53sh7#dj&OF=+M$IOPpm)c25mrMyU0y!T@T^`6ZpQw}BlaIWCL;S(KKhPd`Qw|fK|Z*a7; z1|JtefhzIf1etiK5~FS9&S)J+UTk^5w`eRaMx$xI14Np8L7YAem(VM)Q33u-(Ov2z z2wz{%JIf@)1$dGX#bbKO4&EoT2(SLpK(4OVH~JXE_pM|sBj4?TO={u!`22o(%Jpu= zu`wDx=Bwjtrv%IwVv?*ZK?WjiKNP91CarKp%MOdiQ=VQ5Ltp}}r!^cy4IuFFyr>cO zIAVIUb?1Pbd`M>0gwI3}wbW{@m10VcYgIv^)1M`1;kxyhHN}~N?Aki;6N=N^QIJaW zMll35sxh92wALRlq>uip+V z5nZF>H?Pwb_Xk(J$XHP&aCmMGvvFote?n8Nk#O=>|D3PHDpc$-dr5xBAF1FyhY9?y zzx=Zcs$amLO!G;O#g!EF!QiU*J!aS@;x7*$BX9ST2b`qLwLk+m)E{Aw`{TdZ~tK7n^!S zml44578#{~gmO8~2jfUPm@Q(`EpKQFYNdyM0j zOKgD8Z@DZ{akV9%&csi$_M8aO^JU$$s+0gIF86g%QBMh+Oty-p2BjWyWw*hP^n70` zQ885B{Of9n84VY5fBSTn!jJ-IiXTwLoKvzD!fqM2zI09$Mhe~ldOAWJ-ST(>XLBFm zgC@T4lhO59p#b&kPK9Fa%bm}r{m+i&ilg4c$m?CTk%>dx!_3P~i5F6Pt+`{zJPFI`8qBD!cGD`n7XPF)^a0&i#o2(sHTOF3x1u+X!&n(DPhc~ zJVB;YKyh9Zb|sAq_5t+8+m|OI1r(bT)te8S|1_M@e-vV40X~!|q)_9%3J{w9n9~ZY zldZmvdX*3w_ez4(kZ;Py6KYPMQBZS#GA{9t`MiTFL*!U|7r=8B?mEOFCqmN{Br5gh z4l{6a5GnXt1Mdg*M`G)UV*foUCP=H2at<|`TgBpTyB`zc3rb2X6YGR#!fEBwZHq`k z%_HsF}$?7iFt z=Zv;L=u{SDZrhY+fwY~}(ledft%1)vg%}BREDkKLvjKj(RA^Gw@c1ipbB3(`rbo*U zoLa{|17GebdciIstwXv_l2EPrLT!xON)%CM-8O;SOVO(4$uu8?rwH%CTM3CKN&5G9 z;G|GXDY$5vy|~j)6>0Xw?J4`#>-nfMUYzge7?hzJP<5B(u8<2n?wl4#N1T1-hY19} z*Ihl60OLKSDoZ`dJijdiFA z;wA1<{TUWUt(Wt@z<@GpcT7iXN(I_$Djx4n8#rIR8F*PR9Tr+78k)#smDju+}aTBG&AH^q^ zcj}>E7sY&FVl)iVD!2?V)5YdF-HobAiKBNqiQsEt=VHRK2}1Y?SWiZX#JlUpmY}1JKDSKdifhJy4Y*a3$ zEG0?`Ee1Nu4F3HKX+|0CzD(BJkWCaF?FTKOCb~9^IVm%UTn093mVZMu$&?R^uWP?c zX810msN>1dA>?lzqde3(ZZN8iB+5+-tM{eIE$6xL>nP%MT0xy5vOr@i& zGydTG5_M~ErTVttq%vhLW|2;}Nf2Lr*%PFVfO0MXGZzj71Ss2NQY#37`q1Y52YIL> zF5o@$P7cFhuGEMQ*2q1kvS!40|0U~SYp$368# zAPS%8#Fr4_ifC;PuUp*zPkgkt%!6GF5LL z=={Rjr~m?sG4-E!H_WwIGqr7m(!>`-XZvpOGgPCs&yW|2|9;7VW%hH3x~n7PWUc0L zum)oirh1x26m35~4b~lvGNzsP(cNJ5!}JYG0a%$MisH1zor<~#Mzs{p$DOW*pAXK{ z&@NROG!{{c8AME%blgxr9n&Y1`aAHNM(p{mCG5bschQbH3Ufz+MkD|8(gFa4NKb+C zB{f`<=@QtXz%T*xnefxL2HwtUT2dQN*64*pmRWwx$dGluzggShN}M_$qS@0DZLEdC zp-yrqKH?)>6r7X^R&T*aW7c`{Yc^_R7fvopI_V9UFyU5sr|DO2BCsdZy^Pf-2&`l& zorq24efF!lCz33(m60SrnC#3nu7`yFmR=y@BKeck8gf_&pna}xT-0xeO%%0GYQ$vk zYUkqrG(YZDcv0f~m6kKV{{_Lz^dZp48P>Ft;5?Hfzja6VbpvtAM9vnGTyX|mJ#E;_oZPn(4ADHveP9+? zPn3p3JtZYP*k~qoZ~B_0S~NZBbPa&yk&rMzb0g!5rUtqEn(aJRvz;WgYl zWW6t{c`co?i~4N?7unnE2?22ZMJDPqsi*FTOxxnRPC72v0YZBaTGa7-UBFEUuxMz z<0__W^8UtAFZ1_bYQU2O7E(vrtSPjCa4)X~Qs_+93i2Zm5#|Wn$NXSqG`7mA*5+VU zuSA?OgIbNjmKbD=0=Nc|`dU?IHb4+d{ICmX#oSdOJaYx{tW$_IeW$S%Pub2b{y2b{ z2*4q^wdjlfi#dSJboKM_EJEO%eb*Rj&mF^h=A3VHk@k6$$?bt2PKpw zr2q&OTLLK|h}ck<3IT{MYh;VZeiJSG2X)f$sCI4b#>9SDd79WW>SKn8&s&!T`*^DM zPSl@?;G?@|4=#L7_biP4r7ioCqOkJw^`DvhJB~G1-3|s)o;gY^Dma#WeIAT9%bSHW z+=qV6e{3zakEv7XUyIq=z4~ zlREA~V{4%^U>3%_K>Ej&y?4eDUE_##RcXm4M<1?*Aol-83cLWURIeC=d;2XMXeeyI z2L*?zrVx-%4WyIZrg6(zJXCx9@*c_Emh@mnGL5nP!v8K>4%4zS4NO3c_Vi8^ka72~ZWK|F(^1H(DiDiix$$P`&No%m9 z-&VXZ0Za}pH73w@sO$v?-y&EbNOK*cAg8W6=;u}lTFgTw6TX8Dkc7}~mhQaO6o zs)*kdrHq3pH#d1)Fn*KIYv-Uv<)tS1_lziVIPl^&@MQ@D{0LqZzF zaD*O1DTe6dP4xD%f$o$gqeB84PyG?&KQf^((nPsdb5pl*LpYanZwaHomG6H%Dgc+Q zcP^kReAUN2-byvgBJ_UtwSFmfBZ-9SQ0AS_BIh66IdZ3WV zyRg`Yj!TKm=zOT~3TqgH{Yt5i#e*)e00&xZm^E@3%OR{Z!suFF-J8IA5?qoGe z4EgIAmZ;g85;7al?24?x1GGyS5Y?G&;|{mnl!uVL=IR%PQGA}bMgI}&iGM2qLn-wh zslqBtJ5u~mlj%~aa}o_PD_B2xV0=g%63qYWY-O98Qiy(P1*|j*#|Z!Fu%DWH0tsa3 zU`)JIt#l(JXe(l;T%KcZx~V8>qAEILs5mgI@ovq7eqdM?poHW&eeQ($YF43Y$SR-K zs>uVRVB-KQ)#mM`FlR|UAy8C1p>JxbZu;M?+T6N)?JBoEcnxkYQJzVHd?UCU=|G7# zj=q9F0Tx_z^K*T{&ik(vc*c(-5Lp<{P+BO6ht~)Af~1SWd?$POAc}Df^M$2XY9W9E}8?^jDn{4v*t)u$I$+gQRd2W7`x3wi#D3HM2Z)Q*smo)fT7&J z2|Zxe%yF65RI{C`XvY2$@vt&l_uT($3J?g<)8ieIQD@|{ z@?ki9sL=s0w{9ZeK_g}*Q6M*nHc8=i0lb(Oe`3taU&Rt7mzst}4ToM^6Y&6T3@Abvf*~EC*pmY1MXd`z5J2IV< zOk8fEb=_VUd^}MOprX285YCWJ9X*5go2oh(L{E=2&#?TVY^XZyMxp}}k{R98eRWU^ z|6*L21EyKBTVKBTwJOXaGmS${bkdML9QNGx2YaFXq5ekRs$!{4l-MXkp*vt== zJ)RajW+T5$KMq-Io4#sT4nJvT9HHZgnLJ9E=aUM{V{%*qmHXE$9|^FW9HOB_$M4e!^Ee ztOmOi5D@+Zr7`((z&f$%i&IT7sW*{E4&?`1p9tiU!k#MRrg{<7og zR5x#5%Mo5$`LfKdh^R4p)E-4y%XUXOH}ydy53v#gfTA7-Zos#smL*gW$9_~o6HH8p(A4ptH+D0SZRGO}#kmoV7j-Y%iN(QNw zCH0Mz@0MFjy9*z@(a+bIiT7sWnZdJ27#QJ=JDInFHo)6D_#n`wFtb?20jCX)@lG*~ zQK*4lVBtwU;OL18P$;-O*X{XnQUr2MAxOtkOWf+Vlpdz+QjgkkEX#f_%?d}7#@$7p zqHwE!^2pmC>&kEEk}h2!`i1>E`_I5i${;Su79(a9Z}aBu@ehOCMhPNQjNy-rUjQ)R zk19gyre%DS36TyP?pu06D;WiDH*ELz_bew@TgiJrKOrpI%-}#!%r@7$h=^?SJO{#D zSl%j~GVXFeIwo>9pa+tFEoBChRp#86dwCwREYJTgU~CZ`yU_KL)`J*!fAH(W1XH1q z)#jjaO99+c5c+QhmC{*@fN}#7r5U~j*LE*6ennZW8yvX%Uf8FvL>o_qLK@@);zL{ zCt?S~tv-gIb(g_nyD2kdV7o|$M2!Azx&ZDpSNCI+apwxvUmPCYcY6!+F9q@sRGGA& zIJ?Jf3Id`7MJLOAtD3Erp@zsLoFisRa*;aMv)GrJxB$RXNlNx*4~_E557Ha%{JwPsdaaFx6u}b z66z55sHWGeksdbP#&=)h8<91q5`*jC%_@%?0q${e=r4&1 zb55`(^~w!)T{$wIZn+ZXS z2K_CQ6=wol2)5qpe}QrKxD$pZMq0_i5DrZgf%|IFt*C$!nLZg)$KB~M`wHoEQ?g*F zd|OKi?aN9W@d6`wR@IV-B8z|DP7*q4JW+-031zOdB*H>Q@D0&mAt}Du9-T& z;=7^qX6kOY3v0s5mnzRf-;8$OsG{$PIu*0;9?%!M%$4`%HeMydjhKV&i25zPK3Nxf zuHa)%a8VMxMkuWryZ35V7M}F1RxkPfG%#2P39Jc{a7$H?kd6OLHhg_g`{>b&v6}nO zGEoM$EGEGubG+g|4BaUVe}RWgOQAeIn1|XrT?mpQKOn}<;_GuNZ%9RuOAiq7ZV?gU z*9i$qk79vQ{w87R9`nlY2Yn3je+XC(KWoRgIA-EgsLmRrwknHipdJV(-lef3)t%d* zZ$$>A>LYbsR$?%!POp3EXZ`#}owH%;vqB_Pt>8HbsSE_D1~O;U62msF_u3rajoCZW@`JHb z1YGhSvx%YWK8c6(b-RPuLuuI9Zc5UW0Wnq^j>iWK^hu}%-xj!PCTY<(t^sAIut-TSqzaQy(QVdC;xr= zd-MutGpa<==q7%U5vl>|g_rGk75~TY>aIXE^gXaXW^zwwe)#Qpj3S>If0t~q$9A~z zvh6l~=L$Cn$6`xmVK1f@ra&%53_{J-&xQ}z<;nUt$g^RRi11a$l@nzRvCf(*qv}|aUI9H&glsz5* zWVM(5PT@*Ug(?LvO)C6dW~H6A*JHW{F!O9y7oTzj!Fx;E(OP2kGud|Tdd=F~^bh?^ z7ruo^(+@Z>*k&09h(X5)MYuxUcK5#nmjQ7#q6t`kFoU=mlf*#NL3zGBj^*^4!zO;z zkKGku=#G6~^NZJ9Q*INdACscEM>%j`Pd)$yuA@7R5Ash+SBUnS6Y|o_K$(szCYhD{ zvc|lKw!d>sD*YXb*0QX(xbJQ^Kf&Z5~k(HpdKZ}be2QN=6+`!X{xoYv7LV~`*2xJWm zUlO?LaD^mBatgu6Sa^GI)eQ3o=TLra2kZ6>tEyJUb|F5Sy?AXu6MwH&0oJAN7Y2ur zppF{aVvLTNM2jFrr2O5|BC5iwO2R$)+i^U$7VC!B{lapbv-B=BO zq1DJIA8(cFi%gZY5#Avx1zN)>9fK2| z`i^hMlr=$w4j8wel3v*#jMP^D98&c{{td^35p4(Waj~mxkbG-%l+% zDy9qzn(B+LNGt?e2?!jv55x*G z_cqCUc_5j}CscLKoM&nUi?m2wMl|h=@M)y?qCW)_E*@v}f&0!Uk$~LOSy|=aj!K$U z?>is>xDUQ?872iU%M8(J9x)%8%eD&unO=IPE-d;4Bd(5&09iLP7KYXyht;0|R+IZT zfEqt%()dOra^k>(Hzf(o8jUD+ILJvNk2ZhUgK=sLGrRU81-~r1f-Vh z^da+#mMxGjVCgg^JTXV~4Wq=syzZqbgzPESCC0SXMdu6}z7gS?)=ZN_mZUnzp$ei3 zr2u0%p5Hs=u=h1Bf)VVlkw?3?Y!vR;4R~$;rRKvi1yH27DQ6rI z{aIbSMb?`c^6atqRLzN%aWcPm-#BPKtBGy3zbXJEL1m`2-byR?>XP&m!0w__(TxDe z<5Lg@v>42Ir_A?)r&LfjqVNJc6us3WlS;kOYE1!@*1ke!V_<18$1OAtLs;eyV;P#O zbk;vFK=8xkSg*qVa!{IXpK;Z5%-=mmQ}w^jQL^=H@bBltIgK;@&5fL;|SbmJssi&s)6A$*sSSUf9 z47uc))bUZN*keoyaPbjE2(2dFA|cb1i+Ge6!a1LxTOEfeMz6eMJCaR=$1l{#G!~@X z2S`p<^ZMQy;^JfkXwgmOHqm0a&Bo-}NI;SXhlP%JQIub9$MAxf-s86NWD4w@w9bqQ zMb$Ig3nv5~PNB(MN2Q|BQ5s_m-R?Tm-|!&`v~n5}Q_Hh;aP~uVj zw{mmS2sX^zI`sYI`K5_Gw`PT-?he>|iC zbLm*$tDoY{OgWG#8mlL!zXyaYQrip93QqhPuPI?5Mb@->TBONL!n$v_lHJDGyBna(2UE>TnD%*)*Hkf$qLO4H7^K$_g`g(6ZI&X7v zJl5P@iOe`BDm*LTzFBPP7aU+GjSP8!P&ccf}GN$=hMyUc-z`I7A# zxD^17c8|Y7$`N4ZQRGU3>HYI_acg0zgxR$G^cTDjcD=p~$f`Xi+}=QJ_aR?lbSbn~ zB{5tdN$B}@j(KABXw(@X3rRW-nER=s*s17cW)nV509Mwi3lN`5S&)J{z{U`4O(OBa zT?@sB)%6gjB}0*aLdoIDU7pwS{T)FtApp)QW>=<~v&fATdUWO{=0?3C9%b45AtYGU zw}E!b#`|CW74By%Kuj=Ly|4p3Aslni^TZ{jF(Nx@w0mrl^fr`~W71HBWj_-%a1X z0pRuJjz79b?k)72=5XY>(A3tA{@@jD=Xq~JO-qz;I}%nj!|_c+_72u|q*eZjzRXjC zE5{LGfl8@UQ?_{<6QCmSu3Swz@g9>c%c;v)A!6lio`&?isjpp#wo zmgrt(91)chR=o2V+>p;zD<@-{qWfqsFwfYEUM{E)^U)~`DKU|iQ(^%ugAMCfdsM6m z14S%pj{8#4tM%n#L3M+y(rVx#;uI(O3?8 zRc{iip|o8J2-B#5f=?so%#SlE{pO7vkU=^ z7x(IWgguoWSY0j#gdEN(bmn4FRl)@P5;HT)o4{=s0fch&iC(Bku|_Sbl;k&%(PK!1 zktsG^I*!7~=9*`x`jcimx(w{a<_I3MX`Q<9tB|@aC9r!)mG8oyaHIl;3BX%c?1`X^9E**J99cUY4tH&C0E9t+48Qd( zC;Ma0?jnc|b29vyqOcC_zfN#ayx}Mcn8=)Cb2Oo4EthC29B2%7iiUri@|$?V);ec% z#a_ujV3p$uStZQjev`y+_Y(o9b6WE2ZTUnNr?yxM9WkW>-|qKZfbchh8SZyV8Ty6z z=T3xCh~qNJ11{%fys5THwRP|~4f_(^5hXApTk?oz=`$i1q z&Z(nMDNo7dpET$jBvq*^s8NABMykT#j5PSZ``6B~%U8&u*T-mEsO~fCEtuqXA(x}n z8yJ#)cKCio8UXPxSKiT?c}Q4t{AYyCF^@1E{3iy>=}uJ^K!tWj?~aBwTtrwjyf~*i zcFIW|qbukQF+#M?oPSGV9WMZv4}U)c!*Q1Jf#FqGUP%9TPksP;Qno9|kh%}Cq~ zG5YJ{Gfqx5V8flZ<7YB(;b45w3N@MnKBevRW<0@BXLl?0o%>2SxG0Hb7>kkHGg zXN=Y)Ij95DZ2zcwx`c+r2!4^(Pl(+NQeF4AW#ZCfA|}jLH+R$Ir5YO64U&! z>l+fGjO~%~TX;XbQ04_&AA}t?P)L+@uST;|7Pw%g5QCyaktZqjhQ*@57StD%i;RpQ zYGDD@uo8#*lN9a~g1jn+oPU+9S>->%bfj}iw?GUIPf6fsurqp#%83z)-&O4{r#I|T z9-;1%)i7hG0AFLmy~O~=_{&v*--hB<&iQA38w%DWOEG{OzhR!!1%9maej!G8TAUP= zoD?ODoWYgFm{{(boAbIjhA4{7jSKMg-50K`JEQ@U$JkMA%bNg(lBVok#ny80kln)x zA3Vp{Higv7@(ng5F#`wbR!d*=nf$vHzqQE|)%1&&A(1VPGq5~!ixZ)FG#J<`Pm~>n zicmC@IP__iEdv)irysxcr;r*fjw1fmvApnmGGQ%*o|?bH@Qh|2He|2GMwCi!xZr~6 z?l5OXaoamQZMPi^$O%wdtDJHm21aF=L`c!wKp#*@UYsVcYw#N~~hH?Jzzxkv=}o(0<=0187a)5pgKGUdQZ{3MY(B$I67 zP27ANWFllStEtHLQi)#Bx`VG`yhHa$Ts%5Z2dbr&p8_H)5WTmd`4)c{b)>2SXhNu*dBr{We+8(sMF@%o^%Vnd*+;p z+Wg-+KcW(uM;y6;CxxAG&}hL5XZ!$WJ#eZ}R|u#Z4%;tB{O)gjNG^)*>lsPr>VE1yaDQ1?Rr z;Yd#x*XuC^Pra+^;-L{}OZ0g?0$58>7F3)RJUNxS2p}fNp!>y805rqvCNHiBE*E*2 z*iRP9WDTv99sv4k|Jv^$W1EfkvhwzFqWTWt3gUDO_YE!i?JUD2B^D-y*g77I=N6q3 z!1Z=Y6&4%{22-7z?^>3{1giEwz*2b< zXcj9-xD3YlmJ3y3)Y82xSm>EDyDXUtlbe)BB%o)mUw#jLEvCs!QQm0@55`oa?|Lim zK4*|VE-?;4MRe#=<@-Iv4k5GRBVmjir9Q$hWuwnSz1u1bmU0OY#W$xQryElyE(KQ+ zwIm{7!D3YaH4=BhC*R1yWV_#Ra}ZrH5$L)^!NVWTp=sN4RSVTE=Z7~IgK+%Ir^upP zR}(F~btMrSM}_FL0$aDI5e0|T8otK;JbQVc_c5(6U*SiX3rBfW$%^I~^jIH6jO_V0xGoy!`2PSKFvS;2 zlB!Mof+Asdi+yeT8b z>1um;c`EW0fPc!#eie^IG0Z80V;Ylf-J%-LQ}VpQ(s$D?1SWJ?g?@`kFb9UENGY<} z=`TRgJJ*7g?%f(-jj<_UAsBQXGeq%39(wP;*Z6rNYQm(?7a?Gl-;&$1$oe*A{F*a= zE!dzDB*hKU3|jvbD6{+@Nth@I6ET7V@!$9qMfl@?#P*!|7+rR&u@s+D4V{lX%}X(ia39fG}RC4S6G5k&3-bsw2HhveN-)p-$)<# zi{K%~ppMeM?U>OrJb@JQrxT17w(8mvTt(iq)b{t|Jk?$Z(2iUd}6@uw!Q zhFRR~Dz1pQJBDfZcmFj;HZE^&v7XVjj1omft=sB`igu$>*OLLO(~BNhu{?w?Hxztf zRkO7;IyNgz_q#B@WoMi-3XF0LJzD=@?Di-I9AGlOiPtdg2WKE)THdy)D!#juaA>?r z&>8nA?#JksBPw0>-Hu)}c>)Sgo{l+Ci=ZpEIuJ_7t=|VJNo~kuMMF0MtCLp>(C~i9 z3KpDYsh-8MJfu}Bod{2k_WQLHp#_mWdRy2kwZC8>EFzw@K!SBTisbGw9|89Pu)7XxQAiMW=hPmNF?@M_TKlHY zS`Jae?_d$Dm5bO8mImVvsC8Q7lXr^W?g0q7aVFwB`B|=NlPhJ3R&Q!Ws+X&W@)i-L ze#Ddsi$-K;Q$Nlm2uFC-}0r=oYjmme9jZLM4&r2#ata-%6_<7Tub|TIMDPvF|z}$}h^3kUvR|KZ%(E#dF<+Ixt6Ims^iz zZ>6k9?}I8S7w^)#8Z-gBC|r18TcI4;WMumrRo^blPdX0fO2)c^lsi0luS!SiBS8qn zf6~h3cs6%9m2(%Jf+$GaHv+ckBGE zoQCV1xFC_nb`k;pDs9{M=E-nBLljQkeNjghvSWU@%M_-2p5@nKQ|Qd?_s!e?I*G;l zJx{0T;{w+3yug-H@o1Y5q6UMdn(3=g@m|(1J%dQ}p;W?)`=Ls#Bqw5^0wqSoD}TUB ze$C)nhT3f!trlMtlEzv;3FbIYfF1&kqr@PXhK6JD8sdnnz|aQckbl{#9)=AA2vWsN zn5`xn6R;^(m!_yIG~eUVPa47A^o zY~tvQUi)qv#$akQhUC*fdGZD=xV(wNLF9NU=vSPHDAxLx(C1;!mXNu+OU_2q^(8bSqndRdndl#-TVyUWehNQ%|o=9ZYcu7NQvaNtC@=J%D z&Pq<;4WJWg*<$;1@paZvyG3C9zeb_lDL_~!QNiU!c+%@|wnOlFfg2BJqQy zn`il8kx24D`wCQ|GaLe5^u}i@ zU=qZDL?{_+0Y$%-YpcOq;i5Q9DCuJDw_21yVDn$}c(Lykss9`lnSClgv(B}NU`yn| z9m6C7r9x>{?B^Px6R~DPNt02qW0+u&Ti+=F^j;G@wRZHMUxIGI%0aG#>GNR2=STK< zj|zVnty4E$6nKY9;o-9)0|DNxOn#g%9{up3E#`kh>zXE4KpgKw4rVEyzCVdO1@<70 z$S#(R2wAt=5kirCoTbOCk$j?%Jn<4utV82GkF*k;3Cq_il=|Y0J<(2?TO?q83%z^z}rtM!IJ2!}kALuqfM{7+M-nvMkM&Nl?!q8z7X zg&JNr&jfCy_2X)j?hbjmYmo2S1+=ZO;(c zoagB|rU8t%&g<4^EGO*Qa9S{beIhVIyz;$D3Z@5!^CdQ*r~-5d^@3qfZeL!ssWUHW zadwmHF&AVyCb)Bbi!{ZnVsG#Tw`1uj)p)f&^S!^B)lZE|&IIV-MQme5ihkl z2#gkf3M%i`=3u!vm;&Vk529Ps#wNN5!+Y zxJdxNmVDDX^l!WWpaurESm_{yRa>?ay+`VAW9Hv2uN+G_f)`$JMT88FI9xt&Acnk| zxzbx~gtf>?(5!(T(hm6=2G&hk=L}5Zl?J6fXPOM}asR||ZuVX#%?+x@C@{#EuZ*+EN-ZXs+`K=R4+7I5Pp1R8N6U|9U4w9eK6Y{lp4#sEUI8-IZueV)mjt3xqTbob7=T11{}zs zNmKmd=!{Uoyn(@yX(^lDF*ZeP)vT*`-+ne7(HCY9m--XeCL~|~g^hOI?RK^vV zlL`Yg(MaSoHuC_XV_7toy?VofQ*WoFBO!FsA;b$G!liXF>}N&XHx zp)aQuCDs1__x=_x9CKdp>L%8SJiip6-_0srlcFfu8nV86c zP@aQ$!BE4vzUsGLccqlQfk%1V38eJn)o8>$5%hP!NZ($12gy%h>L|YEz5zZWqYOWu zIMxhd;9QGd5fKf{FPjxI5dGX(S^0^0I){*Agme*}9!TmTK_5WP)p6kCZxhTLDMq`} zeGvc~d@A~VZa1BxbG<&>-BI|G6q+4lN4)F)s~dG-NA2KX*&vrX-(A#A_t7J}q3p?g zVElW1eZ90()R6Y5Vwbq4EjL$c@!UDc4k`%zcRkz$0DdTVmNK(zXin%GsyY_nJ%=P! z5oE)d{O-#&Uo&{!XzN(Xa}cRXPrwssaXih1@0t|EDw$3(@1AX$@1uWBV-Pf53+pA0 zLz2zVQ1TZC@6%5OhbH$ccro`Rsf1kwKAI2ViS&n?(PL3*ox46NB#h>O008MrZeP8s zJGCB5N@rlhP)<<#XDEF)8X*S0zSTsxqT{l9vJBo1<_L^*DK0TIdiIs>SW7Lngi)hr zIb*Ee^zv5j?Sj5mEb>&!Qa?=qAE@yX)UM+1Si6h8FIcjtQpp(q#P-Ej_E24qKN88- z3_b_-RsaA2JB0f=9N#RucHQhEYwbH2@01k+>WgWpAKL_VCpFKe`{b|a-99q0d`1wo zvP@Wk^y^-g7W+9sXgZwXnWlM1zmT80?>cq|m<6v|C1Be|JZtJ|yZ)X42xpTZ00018 zW;``#{h7_U8X&x`#CdSR!T2BhFT_&~FrZHAZe9+ykF{t?H2SHjHF1K=g|n_9+8 zse1E7Je7c!F0x-p(x&FP%BZoKQfC5fX!s^a_`|+6VMSFxBZ_0{E*5wvj;~$>P2hfa zv7pG|i2ibzjY(Gr5B2y!Ghpx;5I& zNhlVIBTHo8th6tcw|IKdo2}%Hmx|L+43SC1=dort+@%jKNq0Sf z#$a5Hzc7I$?pJ*BK6**M?6|#N#hB-|$99WAad?!8_9-<-umAz(`#+DA0001X2*s|( zCrNT#dUa)%)*7R@c{qore@ABkr=)5xLWh}N^d6wND~xmD%8_Sv4kK)=XJmUl-LLy0 z9Kt6w;B+o&Snd2mn#cm{6p==$Y3!^kkyN3t)CWGG3;GP-YTU@ZVESeO^-?qZU)oti z?2`oA2NR$@1eX|q0000L@AmWa6>{4QvLg=~taxTPa$97t^Gyj94-h+(U(Y6=Os50NO#NCpMk$1+TvymbAf-L^6Hded>fGtc0y^gV z&q6FwnUBm691&#FfTlKZB&3Q}wej!3%I_Zk)qWG@P#2&9jRW9PESeH>q3!vJ_KOe?(@mzUM zo~t`g!7!Ca;)qAAg;{3=kZPn$@lK?zDJ`EXsWSw#Jlvm#$>YlBc;-@P?zBC;@xUc= zH49@8AbCIAM6eco9gfkcUmyD334dzpyKfU*o_?Gu!;hy-*kpxT^P~;!0#H!U%BWc| zS_YYZ@HvfZ2LSL6s{kClUJx@7!H!VUi~WI>8D1@S{Yo_RMouQ^-=zU2=MvF1R_{r& zzRf3va(yhZ%oD+-Fe|Gi5+aJU)udy78E_>9T)wEDK7}Rl4YRziZGbM_I|&R18a=>D z7Z;hN0MHE*8-cmWDvZiicy_rM!AT%ot&q%ryI`sa!GOOEt?9e4wQM_Z`8S z9qI#8$#`%PCphpcKY3S^0WITxDMhm8PpH9hmBGoVVg2)*&Xz+C9!V`2T|9A$uylttt6bhUK) zTX??PiiM+OI;?G6;PJ=ulD{o%{0d0FquPEPS=nMqSDp<>FY)?BAqXi(ggYljNfKlI zlzCh4ek_Vw)}Sb{)7Cj_%WDcl3ZREf=%M}_?wx~emu>Hakb@>E++vUnVfxg z;LIGwI<)vaT)z(xHwvDYo*l7VO8y43w3VXud&n_TgTJF$StAT9c(~0;pZAsLhB`oJ!z1N>9YvpM6irdGZaSdz)Fww{wv;5Pi$3G`2Y7c z)iNBW{;m_pNpyio*!>Wtja&8TphtDl_EQ2(($B!6{-3fYIP%z-L#Fm_yC-7E-HgfS z(zh7x_3RUEW3o~s2otshUzt8;antYVKV<;HmW+0}{y-%diocfo2__Tp8fSNGZH{ zYHUKQ_*bgh?NCziX#PPcGv2Y7l7t55xpXtU6n!dNoiFZ*k9jw$y2{$KG@I+7QJpIP ze?rIW%in8|=P%^=QTR)o_>QG&00010B}HM_4i?JkymNpOc4bNbszdcec}K+QVAw~I ziJP$==8~!7lFS0+#mhIr1^F}n31J;29h)!9*Vh2x9sP_!s3OB2p5+yLp$v^A33Bq z+9Vy3jFPWfy4W%rFD{o{YSA1ovJ`rn{HCe6ZfB0C(sn3$hM3%`63Z_~!$qgTGgqT{ z2BXe_EExGJhyf0mX2e3loR92V=mVZI+`w#u-`Ge|cx)`r_E3jmK5vrgU#R$eGG>1! zSI?BNZnkyz;ae4%(Y9%n5U`36l7VS$5-?eG_|w6S>E&2>nqrk+nJgi5Ab4I8jt^@iKKB zMo~uqu)9;iaTvRRwLK^A1#_cKaX8y1`>bO`m0q5j-~wU#$*mTzh1?PMA;f3(y4Rkt zQP+p)%6s6?tpS(Z|7~;nhBdf!d5rzhu+-ITyE}>i^0vr- zhVRbOB8LCLz65K(DQR#|dmWakE5XG9m;VPaa6?Ry`YQf`wDRiEY#7guskQL4ci#nX z3TUKhY@5xhm_83)*ODCHM|77o#AAB8xK&rIQt;V5ScOSzr?ZJ2)et2DBQhc6R%>;q zbweUz^$}i68?B}0D<-hr5MjgoQ$=Y9JjZN_oCWZV5F`iJqLfy5>V|eS3Nr$7L{=cY zD!>2$Y3B-x(YhlI)D@+mEju`43s}Z}Xw)q7B|Y93&Rz?%9TK!COG`@6E{|A$TtrPZCY3C4))wgEsS=8=J9`JL}GKen%^;dmslQ-JxNnzuNUqu+RfThea za~HS$Ot%e%Wf6S922`o%FUZlFQm^)XwtzIiC%Wy(3q9-R>N6Z5iYzU4Csvjb`87#$BYj%t)$%>XeAU46!453F2E%!M zObTQ2^Qw^$(2~I!L05=O13OC$UQ^D=8e0N19-dhIz-3H}K4rn(0iSSmsb4ZI%tBE( zhMtD5-J~aV96oC_zk>2__KVK=Ao}D(1AJgpX{SPHvKwB>*L8S!1DV+cE4jJzfmEyH zpL;nR+Ka}(pt(_|N=eCcZ^^5u92yr34K4n1?IAjlC8-Kcg~%2$TqFp2{WW#Gx%of< zhUyY*%&h98VXBQ7zc=MV>2;=E88lEj1VfGE0%S!&fe0&|fBjqmk_Lt{Z#hmKP2xYw zLQ&^&wZo%RW|>Ads%>N2L{&fUg0KJp007A$@IvPX1T109Ml69~V5b&7$^9=^hd{f5 zu^`}=Dkea@>Mgg$w)2a|hmx^t-CiUIkO`i3THezfPEGt~S7LI^HQ);lm#6jjD4LdY z1)qa1pguirLbRVaSVH#Qtbo?t#UmYXCcl*(k0Q zV!-KXYd9@e#vns~3^hKhKWtWo4MMXCaroA)X372pd2VglD@KA+VzJ=sKm2va)obRW zPN#V{%d*=|>O04;N&QVCl^sZ{@}nx?C1_v-{f6WZ7-umKwRAd%qIbeaZUuehUn3k^ z$3sL2qU{l?0mX0s5}_hE$5;&1-Y%&3GJ2ibK9}@AETD1ZwD_I?qda(&28*j{A6Hc5 zEQc)EeJX z59jby!or2c4e{JcQS7b0vG=@@EBn>?Xq}`HE=L$VYi@9m8_qmkd}6ob|CJvg#am5VVxd!2%&&YhQBF~K#$V+myNh9*68gPD8Bw+e?& z$m#FeBxphw==Al=-ezP{X<5~A{JfqvRQWH>8S-xZ7e~v?FaQyi~if0mt8!WvZw*^RKDE|g)to3SiGTM zm%QY^0xn=0fzJ(Mj~~O)?y;H_!vbC?tQxaR8X^IX)3tUL-r(G{u29*-R3{Gt&E=}7 zK!yhluB6&*F8gKbw#3|K2(%Bp>dY+3t~+V2O z%xer&b7)id$dW6xSjGh@I{>3&GX)K2!sp?LxT=3ARhiu)`Y51L0#VElX26Wj9mHd) zh0Lg#Sl$e_mffABE%hSG))bUtc}Dh$@zmfEe(PV192p*sC$W84w4zr&*vhC-v~i4~ zn0}+txjkw;N4o|^4x+BFof+u>0000yCJ)L00000c+3N~-KnE(|000000000000000 F001q$V*UUC literal 59250 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