diff --git a/.husky/pre-commit b/.husky/pre-commit index 4dfead07..afcbbc94 100644 --- a/.husky/pre-commit +++ b/.husky/pre-commit @@ -1 +1 @@ -bun test +bun run test:bun diff --git a/CLAUDE.md b/CLAUDE.md index 4f8fd2b9..2bad30f2 100644 --- a/CLAUDE.md +++ b/CLAUDE.md @@ -36,7 +36,7 @@ vibesdk is an AI-powered full-stack application generation platform built on Clo - Tools: tools for LLM (read-files, run-analysis, regenerate-file, etc.) - Git: isomorphic-git with SQLite filesystem - Database: `worker/database/` (Drizzle ORM, D1) -- Services: `worker/services/` (sandbox, code-fixer, oauth, rate-limit) +- Services: `worker/services/` (sandbox, code-fixer, oauth, rate-limit, secrets) - API: `worker/api/` (routes, controllers, handlers) **Other:** @@ -117,6 +117,15 @@ Edit `/worker/agents/operations/UserConversationProcessor.ts` (system prompt lin - Can fix multiple files in parallel (regenerate_file) - Cannot run during code generation (checked via isCodeGenerating()) +**User Secrets Store (Durable Object):** +- Location: `/worker/services/secrets/` +- Purpose: Encrypted storage for user API keys with key rotation +- Architecture: One DO per user, XChaCha20-Poly1305 encryption, SQLite backend +- Key derivation: MEK → UMK → DEK (hierarchical PBKDF2) +- Features: Key rotation, soft deletion, access tracking, expiration support +- RPC Methods: Return `null`/`boolean` on error, never throw exceptions +- Testing: 90 comprehensive tests in `/test/worker/services/secrets/` + **Git System:** - GitVersionControl class wraps isomorphic-git - Key methods: commit(), reset(), log(), show() diff --git a/docs/llm.md b/docs/llm.md index 083e4319..fe75cdcd 100644 --- a/docs/llm.md +++ b/docs/llm.md @@ -2818,6 +2818,318 @@ CSRF tokens stored in `oauthStates` table: --- +## User Secrets Store (Durable Object) + +**Location:** `/worker/services/secrets/` + +**Purpose:** Secure, encrypted storage for user API keys and secrets with key rotation support + +### **Architecture** + +**Storage:** Durable Object with SQLite backend +- One DO instance per user (userId as DO ID) +- XChaCha20-Poly1305 encryption (AEAD) +- Hierarchical key derivation: MEK → UMK → DEK +- Key rotation metadata tracking + +**Core Components:** +1. **UserSecretsStore** (`UserSecretsStore.ts`) - Main DO class +2. **KeyDerivation** (`KeyDerivation.ts`) - PBKDF2-based key derivation +3. **EncryptionService** (`EncryptionService.ts`) - XChaCha20-Poly1305 encryption +4. **Types** (`types.ts`) - Type definitions + +### **Key Features** + +**1. Hierarchical Key Derivation** +``` +Master Encryption Key (MEK) [from env.SECRETS_ENCRYPTION_KEY] + ↓ PBKDF2 with userId salt +User Master Key (UMK) + ↓ PBKDF2 with secret-specific salt +Data Encryption Key (DEK) - unique per secret +``` + +**2. Encryption** +- Algorithm: XChaCha20-Poly1305 (AEAD) +- Unique salt per secret (16 bytes) +- Unique nonce per encryption (24 bytes) +- Authentication tag for integrity verification + +**3. Key Rotation** +- Tracks master key fingerprint (SHA-256) +- Detects key changes automatically +- Re-encrypts all secrets with new key +- Maintains rotation statistics + +**4. Security Features** +- Access counting (tracks how many times secret accessed) +- Secret expiration timestamps +- Soft deletion (90-day retention) +- Key preview masking (shows first/last 4 chars) + +### **Database Schema** + +**Tables:** +```sql +-- Main secrets table +CREATE TABLE secrets ( + id TEXT PRIMARY KEY, + user_id TEXT NOT NULL, + name TEXT NOT NULL, + secret_type TEXT NOT NULL, + encrypted_value BLOB NOT NULL, + nonce BLOB NOT NULL, + salt BLOB NOT NULL, + key_preview TEXT NOT NULL, + metadata TEXT, + access_count INTEGER DEFAULT 0, + created_at INTEGER NOT NULL, + updated_at INTEGER NOT NULL, + expires_at INTEGER, + is_active INTEGER DEFAULT 1, + key_fingerprint TEXT NOT NULL +); + +-- Key rotation tracking +CREATE TABLE key_rotation_metadata ( + id INTEGER PRIMARY KEY DEFAULT 1, + current_key_fingerprint TEXT NOT NULL, + last_rotation_at INTEGER NOT NULL, + rotation_count INTEGER DEFAULT 0 +); +``` + +### **API Methods (RPC - No Exceptions)** + +**Critical:** All DO RPC methods return `null` or `boolean` on error, never throw exceptions. + +```typescript +// Store new secret +async storeSecret(request: StoreSecretRequest): Promise + +// Get decrypted value +async getSecretValue(secretId: string): Promise + +// List secrets (metadata only) +async listSecrets(): Promise + +// Update secret +async updateSecret(secretId: string, updates: UpdateSecretRequest): Promise + +// Delete secret (soft delete) +async deleteSecret(secretId: string): Promise + +// Get key rotation info +async getKeyRotationInfo(): Promise +``` + +### **Type Definitions** + +```typescript +interface StoreSecretRequest { + name: string; + secretType: 'api_key' | 'oauth_token' | 'webhook_secret' | 'encryption_key' | 'other'; + value: string; + metadata?: Record; + expiresAt?: number; +} + +interface SecretMetadata { + id: string; + userId: string; + name: string; + secretType: string; + keyPreview: string; + metadata?: Record; + accessCount: number; + createdAt: number; + updatedAt: number; + expiresAt?: number; +} + +interface SecretWithValue { + value: string; + metadata: SecretMetadata; +} + +interface KeyRotationInfo { + currentKeyFingerprint: string; + lastRotationAt: number; + rotationCount: number; + totalSecrets: number; + secretsRotated: number; +} +``` + +### **Usage Example** + +```typescript +// Get DO stub +const id = env.UserSecretsStore.idFromName(user.id); +const store = env.UserSecretsStore.get(id); + +// Store secret +const metadata = await store.storeSecret({ + name: 'OpenAI API Key', + secretType: 'api_key', + value: 'sk-...', + metadata: { provider: 'openai' } +}); + +if (!metadata) { + throw new Error('Failed to store secret'); +} + +// Retrieve decrypted value +const secret = await store.getSecretValue(metadata.id); + +if (!secret) { + throw new Error('Secret not found or expired'); +} + +console.log(secret.value); // Decrypted value +console.log(secret.metadata.accessCount); // Incremented on each access + +// List all secrets (no values) +const secrets = await store.listSecrets(); + +// Update secret +const updated = await store.updateSecret(metadata.id, { + name: 'OpenAI API Key (Production)', + expiresAt: Date.now() + 86400000 // 24 hours +}); + +// Delete secret +const deleted = await store.deleteSecret(metadata.id); +``` + +### **Controller Integration** + +**Location:** `/worker/api/controllers/user-secrets/controller.ts` + +```typescript +// Example: Get secret value +static async getSecretValue( + request: Request, + env: Env, + ctx: ExecutionContext, + context: RouteContext +): Promise>> { + const user = context.user!; + const secretId = context.pathParams.secretId; + + const stub = this.getUserSecretsStub(env, user.id); + const result = await stub.getSecretValue(secretId); + + if (!result) { + return UserSecretsController.createErrorResponse( + 'Secret not found or has expired', + 404 + ); + } + + return UserSecretsController.createSuccessResponse(result); +} +``` + +### **Key Rotation Process** + +**Automatic Detection:** +1. On DO initialization, checks current master key fingerprint +2. Compares with stored fingerprint in database +3. If different, triggers key rotation + +**Re-encryption:** +```typescript +async performKeyRotation() { + // 1. Fetch all active secrets + const secrets = this.ctx.storage.sql.exec(` + SELECT * FROM secrets WHERE is_active = 1 + `); + + // 2. Decrypt with old key, encrypt with new key + for (const secret of secrets) { + const decrypted = await this.decrypt(secret.encrypted_value, ...); + const encrypted = await this.encrypt(decrypted); + // 3. Update in database atomically + } + + // 4. Update rotation metadata +} +``` + +### **Security Considerations** + +**✅ Good Practices:** +- Master key stored in Worker environment variable +- Unique salt per secret +- AEAD encryption with integrity verification +- Key rotation support +- Soft deletion for recovery +- Access tracking for audit + +**⚠️ Important Notes:** +- DO RPC methods return `null`/`boolean` instead of throwing exceptions +- Master key must be 64 hex characters (32 bytes) +- Expired secrets automatically filtered from results +- Soft deleted secrets retained for 90 days + +### **Testing** + +**Location:** `/test/worker/services/secrets/` + +Comprehensive test suite with **90+ tests** (3 test files): +- **KeyDerivation.test.ts** - 17 unit tests for key derivation +- **EncryptionService.test.ts** - 18 unit tests for encryption/decryption +- **UserSecretsStore.test.ts** - 55+ E2E tests for full DO lifecycle + +**Run tests:** +```bash +npm test test/worker/services/secrets +# Or with Bun: +bun run test:bun test/worker/services/secrets +``` + +**Test Coverage:** +- CRUD operations +- Encryption/decryption +- Key rotation +- Expiration handling +- Concurrency (10 parallel operations) +- Large scale (20+ secrets, 5KB values) +- Data integrity verification +- Error handling + +### **Configuration** + +**Environment Variables:** +```bash +# Required: 64 hex characters (32 bytes) +SECRETS_ENCRYPTION_KEY=0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef +``` + +**Wrangler Configuration:** +```jsonc +{ + "durable_objects": { + "bindings": [ + { + "name": "UserSecretsStore", + "class_name": "UserSecretsStore" + } + ] + }, + "migrations": [ + { + "tag": "v3", + "new_sqlite_classes": ["UserSecretsStore"] + } + ] +} +``` + +--- + # 🎨 FRONTEND RENDERING PATTERNS ## Component Architecture diff --git a/package.json b/package.json index 9267b0da..b514f1d9 100644 --- a/package.json +++ b/package.json @@ -16,6 +16,8 @@ "test": "vitest run", "test:watch": "vitest", "test:coverage": "vitest run --coverage", + "test:bun": "bun run vitest run", + "test:bun:watch": "bun run vitest", "db:generate": "drizzle-kit generate --config=drizzle.config.local.ts", "db:generate:remote": "drizzle-kit generate --config=drizzle.config.remote.ts", "db:migrate:local": "wrangler d1 migrations apply vibesdk-db --local", diff --git a/test/env.d.ts b/test/env.d.ts new file mode 100644 index 00000000..8624428f --- /dev/null +++ b/test/env.d.ts @@ -0,0 +1,11 @@ +// Import Env type from worker-configuration +/// + +declare module "cloudflare:test" { + // Export env for test access + export const env: ProvidedEnv; + + // ProvidedEnv extends the Env from worker-configuration.d.ts + interface ProvidedEnv extends Env { + } +} diff --git a/test/tsconfig.json b/test/tsconfig.json new file mode 100644 index 00000000..4d027ff7 --- /dev/null +++ b/test/tsconfig.json @@ -0,0 +1,17 @@ +{ + "extends": "../tsconfig.node.json", + "compilerOptions": { + "moduleResolution": "bundler", + "module": "ESNext", + "types": [ + "@cloudflare/vitest-pool-workers", + "@cloudflare/workers-types" + ], + "lib": ["ES2023"] + }, + "include": [ + "./**/*.ts", + "../worker-configuration.d.ts", + "../worker/**/*.ts" + ] +} diff --git a/test/tsconfig.tsbuildinfo b/test/tsconfig.tsbuildinfo new file mode 100644 index 00000000..f7273596 --- /dev/null +++ b/test/tsconfig.tsbuildinfo @@ -0,0 +1 @@ +{"fileNames":["../node_modules/typescript/lib/lib.d.ts","../node_modules/typescript/lib/lib.es5.d.ts","../node_modules/typescript/lib/lib.es2015.d.ts","../node_modules/typescript/lib/lib.es2016.d.ts","../node_modules/typescript/lib/lib.es2017.d.ts","../node_modules/typescript/lib/lib.es2018.d.ts","../node_modules/typescript/lib/lib.es2019.d.ts","../node_modules/typescript/lib/lib.es2020.d.ts","../node_modules/typescript/lib/lib.dom.d.ts","../node_modules/typescript/lib/lib.webworker.importscripts.d.ts","../node_modules/typescript/lib/lib.scripthost.d.ts","../node_modules/typescript/lib/lib.es2015.core.d.ts","../node_modules/typescript/lib/lib.es2015.collection.d.ts","../node_modules/typescript/lib/lib.es2015.generator.d.ts","../node_modules/typescript/lib/lib.es2015.iterable.d.ts","../node_modules/typescript/lib/lib.es2015.promise.d.ts","../node_modules/typescript/lib/lib.es2015.proxy.d.ts","../node_modules/typescript/lib/lib.es2015.reflect.d.ts","../node_modules/typescript/lib/lib.es2015.symbol.d.ts","../node_modules/typescript/lib/lib.es2015.symbol.wellknown.d.ts","../node_modules/typescript/lib/lib.es2016.array.include.d.ts","../node_modules/typescript/lib/lib.es2016.intl.d.ts","../node_modules/typescript/lib/lib.es2017.arraybuffer.d.ts","../node_modules/typescript/lib/lib.es2017.date.d.ts","../node_modules/typescript/lib/lib.es2017.object.d.ts","../node_modules/typescript/lib/lib.es2017.sharedmemory.d.ts","../node_modules/typescript/lib/lib.es2017.string.d.ts","../node_modules/typescript/lib/lib.es2017.intl.d.ts","../node_modules/typescript/lib/lib.es2017.typedarrays.d.ts","../node_modules/typescript/lib/lib.es2018.asyncgenerator.d.ts","../node_modules/typescript/lib/lib.es2018.asynciterable.d.ts","../node_modules/typescript/lib/lib.es2018.intl.d.ts","../node_modules/typescript/lib/lib.es2018.promise.d.ts","../node_modules/typescript/lib/lib.es2018.regexp.d.ts","../node_modules/typescript/lib/lib.es2019.array.d.ts","../node_modules/typescript/lib/lib.es2019.object.d.ts","../node_modules/typescript/lib/lib.es2019.string.d.ts","../node_modules/typescript/lib/lib.es2019.symbol.d.ts","../node_modules/typescript/lib/lib.es2019.intl.d.ts","../node_modules/typescript/lib/lib.es2020.bigint.d.ts","../node_modules/typescript/lib/lib.es2020.date.d.ts","../node_modules/typescript/lib/lib.es2020.promise.d.ts","../node_modules/typescript/lib/lib.es2020.sharedmemory.d.ts","../node_modules/typescript/lib/lib.es2020.string.d.ts","../node_modules/typescript/lib/lib.es2020.symbol.wellknown.d.ts","../node_modules/typescript/lib/lib.es2020.intl.d.ts","../node_modules/typescript/lib/lib.es2020.number.d.ts","../node_modules/typescript/lib/lib.decorators.d.ts","../node_modules/typescript/lib/lib.decorators.legacy.d.ts","./env.d.ts","../node_modules/@vitest/pretty-format/dist/index.d.ts","../node_modules/@vitest/utils/dist/types.d.ts","../node_modules/@vitest/utils/dist/helpers.d.ts","../node_modules/tinyrainbow/dist/index-8b61d5bc.d.ts","../node_modules/tinyrainbow/dist/node.d.ts","../node_modules/@vitest/utils/dist/index.d.ts","../node_modules/@vitest/runner/dist/tasks.d-cksck4of.d.ts","../node_modules/@vitest/utils/dist/types.d-bcelap-c.d.ts","../node_modules/@vitest/utils/dist/diff.d.ts","../node_modules/@vitest/runner/dist/types.d.ts","../node_modules/@vitest/utils/dist/error.d.ts","../node_modules/@vitest/runner/dist/index.d.ts","../node_modules/vitest/optional-types.d.ts","../node_modules/vitest/dist/chunks/environment.d.cl3nlxbe.d.ts","../node_modules/@types/node/compatibility/disposable.d.ts","../node_modules/@types/node/compatibility/indexable.d.ts","../node_modules/@types/node/compatibility/iterators.d.ts","../node_modules/@types/node/compatibility/index.d.ts","../node_modules/@types/node/globals.typedarray.d.ts","../node_modules/@types/node/buffer.buffer.d.ts","../node_modules/@types/node/globals.d.ts","../node_modules/@types/node/web-globals/abortcontroller.d.ts","../node_modules/@types/node/web-globals/domexception.d.ts","../node_modules/@types/node/web-globals/events.d.ts","../node_modules/buffer/index.d.ts","../node_modules/undici-types/header.d.ts","../node_modules/undici-types/readable.d.ts","../node_modules/undici-types/file.d.ts","../node_modules/undici-types/fetch.d.ts","../node_modules/undici-types/formdata.d.ts","../node_modules/undici-types/connector.d.ts","../node_modules/undici-types/client.d.ts","../node_modules/undici-types/errors.d.ts","../node_modules/undici-types/dispatcher.d.ts","../node_modules/undici-types/global-dispatcher.d.ts","../node_modules/undici-types/global-origin.d.ts","../node_modules/undici-types/pool-stats.d.ts","../node_modules/undici-types/pool.d.ts","../node_modules/undici-types/handlers.d.ts","../node_modules/undici-types/balanced-pool.d.ts","../node_modules/undici-types/agent.d.ts","../node_modules/undici-types/mock-interceptor.d.ts","../node_modules/undici-types/mock-agent.d.ts","../node_modules/undici-types/mock-client.d.ts","../node_modules/undici-types/mock-pool.d.ts","../node_modules/undici-types/mock-errors.d.ts","../node_modules/undici-types/proxy-agent.d.ts","../node_modules/undici-types/env-http-proxy-agent.d.ts","../node_modules/undici-types/retry-handler.d.ts","../node_modules/undici-types/retry-agent.d.ts","../node_modules/undici-types/api.d.ts","../node_modules/undici-types/interceptors.d.ts","../node_modules/undici-types/util.d.ts","../node_modules/undici-types/cookies.d.ts","../node_modules/undici-types/patch.d.ts","../node_modules/undici-types/websocket.d.ts","../node_modules/undici-types/eventsource.d.ts","../node_modules/undici-types/filereader.d.ts","../node_modules/undici-types/diagnostics-channel.d.ts","../node_modules/undici-types/content-type.d.ts","../node_modules/undici-types/cache.d.ts","../node_modules/undici-types/index.d.ts","../node_modules/@types/node/web-globals/fetch.d.ts","../node_modules/@types/node/web-globals/navigator.d.ts","../node_modules/@types/node/web-globals/storage.d.ts","../node_modules/@types/node/assert.d.ts","../node_modules/@types/node/assert/strict.d.ts","../node_modules/@types/node/async_hooks.d.ts","../node_modules/@types/node/buffer.d.ts","../node_modules/@types/node/child_process.d.ts","../node_modules/@types/node/cluster.d.ts","../node_modules/@types/node/console.d.ts","../node_modules/@types/node/constants.d.ts","../node_modules/@types/node/crypto.d.ts","../node_modules/@types/node/dgram.d.ts","../node_modules/@types/node/diagnostics_channel.d.ts","../node_modules/@types/node/dns.d.ts","../node_modules/@types/node/dns/promises.d.ts","../node_modules/@types/node/domain.d.ts","../node_modules/@types/node/events.d.ts","../node_modules/@types/node/fs.d.ts","../node_modules/@types/node/fs/promises.d.ts","../node_modules/@types/node/http.d.ts","../node_modules/@types/node/http2.d.ts","../node_modules/@types/node/https.d.ts","../node_modules/@types/node/inspector.generated.d.ts","../node_modules/@types/node/module.d.ts","../node_modules/@types/node/net.d.ts","../node_modules/@types/node/os.d.ts","../node_modules/@types/node/path.d.ts","../node_modules/@types/node/perf_hooks.d.ts","../node_modules/@types/node/process.d.ts","../node_modules/@types/node/punycode.d.ts","../node_modules/@types/node/querystring.d.ts","../node_modules/@types/node/readline.d.ts","../node_modules/@types/node/readline/promises.d.ts","../node_modules/@types/node/repl.d.ts","../node_modules/@types/node/sea.d.ts","../node_modules/@types/node/sqlite.d.ts","../node_modules/@types/node/stream.d.ts","../node_modules/@types/node/stream/promises.d.ts","../node_modules/@types/node/stream/consumers.d.ts","../node_modules/@types/node/stream/web.d.ts","../node_modules/@types/node/string_decoder.d.ts","../node_modules/@types/node/test.d.ts","../node_modules/@types/node/timers.d.ts","../node_modules/@types/node/timers/promises.d.ts","../node_modules/@types/node/tls.d.ts","../node_modules/@types/node/trace_events.d.ts","../node_modules/@types/node/tty.d.ts","../node_modules/@types/node/url.d.ts","../node_modules/@types/node/util.d.ts","../node_modules/@types/node/v8.d.ts","../node_modules/@types/node/vm.d.ts","../node_modules/@types/node/wasi.d.ts","../node_modules/@types/node/worker_threads.d.ts","../node_modules/@types/node/zlib.d.ts","../node_modules/@types/node/index.d.ts","../node_modules/vitest/node_modules/vite/types/hmrpayload.d.ts","../node_modules/vitest/node_modules/vite/dist/node/modulerunnertransport-bwuzbvlx.d.ts","../node_modules/vitest/node_modules/vite/types/customevent.d.ts","../node_modules/vitest/node_modules/vite/node_modules/rolldown/node_modules/@oxc-project/types/types.d.ts","../node_modules/vitest/node_modules/vite/node_modules/rolldown/dist/shared/binding-bvxbxhpv.d.mts","../node_modules/vitest/node_modules/vite/node_modules/rolldown/node_modules/@rolldown/pluginutils/dist/index.d.mts","../node_modules/vitest/node_modules/vite/node_modules/rolldown/dist/shared/define-config-0kfjrpvq.d.mts","../node_modules/vitest/node_modules/vite/node_modules/rolldown/dist/index.d.mts","../node_modules/vitest/node_modules/vite/types/internal/rolluptypecompat.d.mts","../node_modules/vitest/node_modules/vite/node_modules/rolldown/dist/parse-ast-index.d.mts","../node_modules/vitest/node_modules/vite/node_modules/rolldown/dist/experimental-index.d.mts","../node_modules/vitest/node_modules/vite/types/hot.d.ts","../node_modules/vitest/node_modules/vite/dist/node/module-runner.d.ts","../node_modules/esbuild/lib/main.d.ts","../node_modules/vitest/node_modules/vite/types/internal/esbuildoptions.d.ts","../node_modules/vitest/node_modules/vite/types/metadata.d.mts","../node_modules/vitest/node_modules/vite/types/internal/terseroptions.d.ts","../node_modules/source-map-js/source-map.d.ts","../node_modules/postcss/lib/previous-map.d.ts","../node_modules/postcss/lib/input.d.ts","../node_modules/postcss/lib/css-syntax-error.d.ts","../node_modules/postcss/lib/declaration.d.ts","../node_modules/postcss/lib/root.d.ts","../node_modules/postcss/lib/warning.d.ts","../node_modules/postcss/lib/lazy-result.d.ts","../node_modules/postcss/lib/no-work-result.d.ts","../node_modules/postcss/lib/processor.d.ts","../node_modules/postcss/lib/result.d.ts","../node_modules/postcss/lib/document.d.ts","../node_modules/postcss/lib/rule.d.ts","../node_modules/postcss/lib/node.d.ts","../node_modules/postcss/lib/comment.d.ts","../node_modules/postcss/lib/container.d.ts","../node_modules/postcss/lib/at-rule.d.ts","../node_modules/postcss/lib/list.d.ts","../node_modules/postcss/lib/postcss.d.ts","../node_modules/postcss/lib/postcss.d.mts","../node_modules/vitest/node_modules/vite/node_modules/lightningcss/node/ast.d.ts","../node_modules/vitest/node_modules/vite/node_modules/lightningcss/node/targets.d.ts","../node_modules/vitest/node_modules/vite/node_modules/lightningcss/node/index.d.ts","../node_modules/vitest/node_modules/vite/types/internal/lightningcssoptions.d.ts","../node_modules/vitest/node_modules/vite/types/internal/csspreprocessoroptions.d.ts","../node_modules/vitest/node_modules/vite/node_modules/rolldown/dist/filter-index.d.mts","../node_modules/vitest/node_modules/vite/types/importglob.d.ts","../node_modules/vitest/node_modules/vite/dist/node/index.d.ts","../node_modules/@vitest/mocker/dist/registry.d-d765pazg.d.ts","../node_modules/@vitest/mocker/dist/types.d-d_arzrdy.d.ts","../node_modules/@vitest/mocker/dist/index.d.ts","../node_modules/@vitest/utils/dist/source-map.d.ts","../node_modules/vite-node/dist/trace-mapping.d-dlvdeqop.d.ts","../node_modules/vite-node/dist/index.d-dgmxd2u7.d.ts","../node_modules/vite-node/dist/index.d.ts","../node_modules/@vitest/snapshot/dist/environment.d-dhdq1csl.d.ts","../node_modules/@vitest/snapshot/dist/rawsnapshot.d-lfsmjfud.d.ts","../node_modules/@vitest/snapshot/dist/index.d.ts","../node_modules/@vitest/snapshot/dist/environment.d.ts","../node_modules/vitest/dist/chunks/config.d.d2roskhv.d.ts","../node_modules/vitest/dist/chunks/worker.d.1gmbbd7g.d.ts","../node_modules/@types/deep-eql/index.d.ts","../node_modules/@types/chai/index.d.ts","../node_modules/@vitest/runner/dist/utils.d.ts","../node_modules/tinybench/dist/index.d.ts","../node_modules/vitest/dist/chunks/benchmark.d.bwvbvtda.d.ts","../node_modules/vite-node/dist/client.d.ts","../node_modules/vitest/dist/chunks/coverage.d.s9rmnxie.d.ts","../node_modules/@vitest/snapshot/dist/manager.d.ts","../node_modules/vitest/dist/chunks/reporters.d.bflkqcl6.d.ts","../node_modules/vitest/dist/chunks/worker.d.ckwwzbsj.d.ts","../node_modules/@vitest/spy/dist/index.d.ts","../node_modules/@vitest/expect/dist/index.d.ts","../node_modules/vitest/dist/chunks/global.d.mamajcmj.d.ts","../node_modules/vitest/dist/chunks/vite.d.cmlllifp.d.ts","../node_modules/vitest/dist/chunks/mocker.d.be_2ls6u.d.ts","../node_modules/vitest/dist/chunks/suite.d.fvehnv49.d.ts","../node_modules/expect-type/dist/utils.d.ts","../node_modules/expect-type/dist/overloads.d.ts","../node_modules/expect-type/dist/branding.d.ts","../node_modules/expect-type/dist/messages.d.ts","../node_modules/expect-type/dist/index.d.ts","../node_modules/vitest/dist/index.d.ts","../node_modules/vitest/index.d.cts","./worker/services/secrets/auditlogger.test.ts","./worker/services/secrets/encryptionservice.test.ts","./worker/services/secrets/keyderivation.test.ts","../worker/services/secrets/constants.ts","../worker/utils/cryptoutils.ts","../worker/services/secrets/keyderivation.ts","../node_modules/@noble/ciphers/utils.d.ts","../node_modules/@noble/ciphers/chacha.d.ts","../worker/services/secrets/types.ts","../worker/services/secrets/encryptionservice.ts","../node_modules/nanoid/index.d.ts","../worker/utils/idgenerator.ts","../worker/services/secrets/auditlogger.ts","../node_modules/@cloudflare/workers-types/index.ts","../worker/services/secrets/usersecretsstore.ts","./worker/services/secrets/usersecretsstore.test.ts","../worker/logger/types.ts","../node_modules/@sentry/core/build/types/types-hoist/attachment.d.ts","../node_modules/@sentry/core/build/types/types-hoist/severity.d.ts","../node_modules/@sentry/core/build/types/types-hoist/breadcrumb.d.ts","../node_modules/@sentry/core/build/types/utils/featureflags.d.ts","../node_modules/@sentry/core/build/types/types-hoist/measurement.d.ts","../node_modules/@sentry/core/build/types/types-hoist/opentelemetry.d.ts","../node_modules/@sentry/core/build/types/types-hoist/spanstatus.d.ts","../node_modules/@sentry/core/build/types/types-hoist/transaction.d.ts","../node_modules/@sentry/core/build/types/types-hoist/span.d.ts","../node_modules/@sentry/core/build/types/types-hoist/link.d.ts","../node_modules/@sentry/core/build/types/types-hoist/webfetchapi.d.ts","../node_modules/@sentry/core/build/types/types-hoist/request.d.ts","../node_modules/@sentry/core/build/types/types-hoist/misc.d.ts","../node_modules/@sentry/core/build/types/types-hoist/context.d.ts","../node_modules/@sentry/core/build/types/types-hoist/checkin.d.ts","../node_modules/@sentry/core/build/types/types-hoist/datacategory.d.ts","../node_modules/@sentry/core/build/types/types-hoist/clientreport.d.ts","../node_modules/@sentry/core/build/types/types-hoist/csp.d.ts","../node_modules/@sentry/core/build/types/types-hoist/dsn.d.ts","../node_modules/@sentry/core/build/types/types-hoist/feedback/form.d.ts","../node_modules/@sentry/core/build/types/types-hoist/feedback/theme.d.ts","../node_modules/@sentry/core/build/types/types-hoist/feedback/config.d.ts","../node_modules/@sentry/core/build/types/types-hoist/user.d.ts","../node_modules/@sentry/core/build/types/types-hoist/feedback/sendfeedback.d.ts","../node_modules/@sentry/core/build/types/types-hoist/feedback/index.d.ts","../node_modules/@sentry/core/build/types/types-hoist/parameterize.d.ts","../node_modules/@sentry/core/build/types/types-hoist/log.d.ts","../node_modules/@sentry/core/build/types/types-hoist/metric.d.ts","../node_modules/@sentry/core/build/types/types-hoist/debugmeta.d.ts","../node_modules/@sentry/core/build/types/types-hoist/profiling.d.ts","../node_modules/@sentry/core/build/types/types-hoist/replay.d.ts","../node_modules/@sentry/core/build/types/types-hoist/package.d.ts","../node_modules/@sentry/core/build/types/types-hoist/sdkinfo.d.ts","../node_modules/@sentry/core/build/types/types-hoist/session.d.ts","../node_modules/@sentry/core/build/types/types-hoist/envelope.d.ts","../node_modules/@sentry/core/build/types/types-hoist/eventprocessor.d.ts","../node_modules/@sentry/core/build/types/types-hoist/extra.d.ts","../node_modules/@sentry/core/build/types/types-hoist/tracing.d.ts","../node_modules/@sentry/core/build/types/scope.d.ts","../node_modules/@sentry/core/build/types/types-hoist/mechanism.d.ts","../node_modules/@sentry/core/build/types/types-hoist/stackframe.d.ts","../node_modules/@sentry/core/build/types/types-hoist/stacktrace.d.ts","../node_modules/@sentry/core/build/types/types-hoist/exception.d.ts","../node_modules/@sentry/core/build/types/types-hoist/thread.d.ts","../node_modules/@sentry/core/build/types/types-hoist/event.d.ts","../node_modules/@sentry/core/build/types/types-hoist/integration.d.ts","../node_modules/@sentry/core/build/types/types-hoist/samplingcontext.d.ts","../node_modules/@sentry/core/build/types/types-hoist/sdkmetadata.d.ts","../node_modules/@sentry/core/build/types/types-hoist/transport.d.ts","../node_modules/@sentry/core/build/types/types-hoist/options.d.ts","../node_modules/@sentry/core/build/types/integration.d.ts","../node_modules/@sentry/core/build/types/types-hoist/startspanoptions.d.ts","../node_modules/@sentry/core/build/types/client.d.ts","../node_modules/@sentry/core/build/types/sdk.d.ts","../node_modules/@sentry/core/build/types/utils/tracedata.d.ts","../node_modules/@sentry/core/build/types/utils/tracing.d.ts","../node_modules/@sentry/core/build/types/tracing/trace.d.ts","../node_modules/@sentry/core/build/types/utils/spanutils.d.ts","../node_modules/@sentry/core/build/types/asynccontext/types.d.ts","../node_modules/@sentry/core/build/types/asynccontext/stackstrategy.d.ts","../node_modules/@sentry/core/build/types/utils/env.d.ts","../node_modules/@sentry/core/build/types/utils/worldwide.d.ts","../node_modules/@sentry/core/build/types/carrier.d.ts","../node_modules/@sentry/core/build/types/transports/offline.d.ts","../node_modules/@sentry/core/build/types/server-runtime-client.d.ts","../node_modules/@sentry/core/build/types/tracing/errors.d.ts","../node_modules/@sentry/core/build/types/tracing/utils.d.ts","../node_modules/@sentry/core/build/types/tracing/idlespan.d.ts","../node_modules/@sentry/core/build/types/types-hoist/timedevent.d.ts","../node_modules/@sentry/core/build/types/tracing/sentryspan.d.ts","../node_modules/@sentry/core/build/types/tracing/sentrynonrecordingspan.d.ts","../node_modules/@sentry/core/build/types/tracing/spanstatus.d.ts","../node_modules/@sentry/core/build/types/tracing/dynamicsamplingcontext.d.ts","../node_modules/@sentry/core/build/types/tracing/measurement.d.ts","../node_modules/@sentry/core/build/types/tracing/sampling.d.ts","../node_modules/@sentry/core/build/types/tracing/logspans.d.ts","../node_modules/@sentry/core/build/types/tracing/index.d.ts","../node_modules/@sentry/core/build/types/semanticattributes.d.ts","../node_modules/@sentry/core/build/types/envelope.d.ts","../node_modules/@sentry/core/build/types/utils/prepareevent.d.ts","../node_modules/@sentry/core/build/types/exports.d.ts","../node_modules/@sentry/core/build/types/currentscopes.d.ts","../node_modules/@sentry/core/build/types/defaultscopes.d.ts","../node_modules/@sentry/core/build/types/asynccontext/index.d.ts","../node_modules/@sentry/core/build/types/session.d.ts","../node_modules/@sentry/core/build/types/eventprocessors.d.ts","../node_modules/@sentry/core/build/types/report-dialog.d.ts","../node_modules/@sentry/core/build/types/api.d.ts","../node_modules/@sentry/core/build/types/utils/promisebuffer.d.ts","../node_modules/@sentry/core/build/types/transports/base.d.ts","../node_modules/@sentry/core/build/types/transports/multiplexed.d.ts","../node_modules/@sentry/core/build/types/utils/applyscopedatatoevent.d.ts","../node_modules/@sentry/core/build/types/checkin.d.ts","../node_modules/@sentry/core/build/types/utils/hasspansenabled.d.ts","../node_modules/@sentry/core/build/types/utils/issentryrequesturl.d.ts","../node_modules/@sentry/core/build/types/utils/handlecallbackerrors.d.ts","../node_modules/@sentry/core/build/types/utils/parameterize.d.ts","../node_modules/@sentry/core/build/types/utils/ipaddress.d.ts","../node_modules/@sentry/core/build/types/utils/spanonscope.d.ts","../node_modules/@sentry/core/build/types/utils/parsesamplerate.d.ts","../node_modules/@sentry/core/build/types/utils/sdkmetadata.d.ts","../node_modules/@sentry/core/build/types/utils/meta.d.ts","../node_modules/@sentry/core/build/types/utils/debounce.d.ts","../node_modules/@sentry/core/build/types/utils/request.d.ts","../node_modules/@sentry/core/build/types/constants.d.ts","../node_modules/@sentry/core/build/types/breadcrumbs.d.ts","../node_modules/@sentry/core/build/types/integrations/functiontostring.d.ts","../node_modules/@sentry/core/build/types/integrations/eventfilters.d.ts","../node_modules/@sentry/core/build/types/integrations/linkederrors.d.ts","../node_modules/@sentry/core/build/types/integrations/modulemetadata.d.ts","../node_modules/@sentry/core/build/types/integrations/requestdata.d.ts","../node_modules/@sentry/core/build/types/integrations/captureconsole.d.ts","../node_modules/@sentry/core/build/types/integrations/dedupe.d.ts","../node_modules/@sentry/core/build/types/integrations/extraerrordata.d.ts","../node_modules/@sentry/core/build/types/integrations/rewriteframes.d.ts","../node_modules/@sentry/core/build/types/integrations/supabase.d.ts","../node_modules/@sentry/core/build/types/integrations/zoderrors.d.ts","../node_modules/@sentry/core/build/types/integrations/third-party-errors-filter.d.ts","../node_modules/@sentry/core/build/types/types-hoist/instrument.d.ts","../node_modules/@sentry/core/build/types/integrations/console.d.ts","../node_modules/@sentry/core/build/types/integrations/featureflags/featureflagsintegration.d.ts","../node_modules/@sentry/core/build/types/integrations/featureflags/growthbook.d.ts","../node_modules/@sentry/core/build/types/integrations/featureflags/index.d.ts","../node_modules/@sentry/core/build/types/profiling.d.ts","../node_modules/@sentry/core/build/types/fetch.d.ts","../node_modules/@sentry/core/build/types/trpc.d.ts","../node_modules/@sentry/core/build/types/integrations/mcp-server/index.d.ts","../node_modules/@sentry/core/build/types/feedback.d.ts","../node_modules/@sentry/core/build/types/logs/internal.d.ts","../node_modules/@sentry/core/build/types/logs/public-api.d.ts","../node_modules/@sentry/core/build/types/logs/console-integration.d.ts","../node_modules/@sentry/core/build/types/metrics/internal.d.ts","../node_modules/@sentry/core/build/types/metrics/public-api.d.ts","../node_modules/@sentry/core/build/types/integrations/consola.d.ts","../node_modules/@sentry/core/build/types/utils/vercel-ai/index.d.ts","../node_modules/@sentry/core/build/types/utils/vercel-ai/types.d.ts","../node_modules/@sentry/core/build/types/utils/vercel-ai/utils.d.ts","../node_modules/@sentry/core/build/types/utils/openai/constants.d.ts","../node_modules/@sentry/core/build/types/utils/openai/types.d.ts","../node_modules/@sentry/core/build/types/utils/openai/index.d.ts","../node_modules/@sentry/core/build/types/utils/anthropic-ai/constants.d.ts","../node_modules/@sentry/core/build/types/utils/anthropic-ai/types.d.ts","../node_modules/@sentry/core/build/types/utils/anthropic-ai/index.d.ts","../node_modules/@sentry/core/build/types/utils/google-genai/constants.d.ts","../node_modules/@sentry/core/build/types/utils/google-genai/types.d.ts","../node_modules/@sentry/core/build/types/utils/google-genai/index.d.ts","../node_modules/@sentry/core/build/types/utils/langchain/types.d.ts","../node_modules/@sentry/core/build/types/utils/langchain/index.d.ts","../node_modules/@sentry/core/build/types/utils/langchain/constants.d.ts","../node_modules/@sentry/core/build/types/utils/aggregate-errors.d.ts","../node_modules/@sentry/core/build/types/utils/breadcrumb-log-level.d.ts","../node_modules/@sentry/core/build/types/utils/browser.d.ts","../node_modules/@sentry/core/build/types/utils/dsn.d.ts","../node_modules/@sentry/core/build/types/utils/error.d.ts","../node_modules/@sentry/core/build/types/instrument/console.d.ts","../node_modules/@sentry/core/build/types/instrument/fetch.d.ts","../node_modules/@sentry/core/build/types/instrument/globalerror.d.ts","../node_modules/@sentry/core/build/types/instrument/globalunhandledrejection.d.ts","../node_modules/@sentry/core/build/types/instrument/handlers.d.ts","../node_modules/@sentry/core/build/types/types-hoist/polymorphics.d.ts","../node_modules/@sentry/core/build/types/utils/is.d.ts","../node_modules/@sentry/core/build/types/utils/isbrowser.d.ts","../node_modules/@sentry/core/build/types/utils/debug-logger.d.ts","../node_modules/@sentry/core/build/types/utils/misc.d.ts","../node_modules/@sentry/core/build/types/utils/node.d.ts","../node_modules/@sentry/core/build/types/utils/normalize.d.ts","../node_modules/@sentry/core/build/types/types-hoist/wrappedfunction.d.ts","../node_modules/@sentry/core/build/types/utils/object.d.ts","../node_modules/@sentry/core/build/types/utils/path.d.ts","../node_modules/@sentry/core/build/types/utils/severity.d.ts","../node_modules/@sentry/core/build/types/utils/exports.d.ts","../node_modules/@sentry/core/build/types/utils/stacktrace.d.ts","../node_modules/@sentry/core/build/types/utils/node-stack-trace.d.ts","../node_modules/@sentry/core/build/types/vendor/escapestringforregex.d.ts","../node_modules/@sentry/core/build/types/utils/string.d.ts","../node_modules/@sentry/core/build/types/utils/supports.d.ts","../node_modules/@sentry/core/build/types/utils/syncpromise.d.ts","../node_modules/@sentry/core/build/types/utils/time.d.ts","../node_modules/@sentry/core/build/types/utils/envelope.d.ts","../node_modules/@sentry/core/build/types/utils/clientreport.d.ts","../node_modules/@sentry/core/build/types/utils/ratelimit.d.ts","../node_modules/@sentry/core/build/types/utils/baggage.d.ts","../node_modules/@sentry/core/build/types/utils/url.d.ts","../node_modules/@sentry/core/build/types/utils/eventbuilder.d.ts","../node_modules/@sentry/core/build/types/utils/anr.d.ts","../node_modules/@sentry/core/build/types/utils/lru.d.ts","../node_modules/@sentry/core/build/types/utils/propagationcontext.d.ts","../node_modules/@sentry/core/build/types/utils/vercelwaituntil.d.ts","../node_modules/@sentry/core/build/types/utils/flushifserverless.d.ts","../node_modules/@sentry/core/build/types/utils/version.d.ts","../node_modules/@sentry/core/build/types/utils/debug-ids.d.ts","../node_modules/@sentry/core/build/types/types-hoist/error.d.ts","../node_modules/@sentry/core/build/types/types-hoist/runtime.d.ts","../node_modules/@sentry/core/build/types/types-hoist/browseroptions.d.ts","../node_modules/@sentry/core/build/types/types-hoist/view-hierarchy.d.ts","../node_modules/@sentry/core/build/types/build-time-plugins/buildtimeoptionsbase.d.ts","../node_modules/@sentry/core/build/types/index.d.ts","../node_modules/@sentry/cloudflare/build/types/flush.d.ts","../node_modules/@sentry/cloudflare/build/types/transport.d.ts","../node_modules/@sentry/cloudflare/build/types/client.d.ts","../node_modules/@sentry/cloudflare/build/types/handler.d.ts","../node_modules/@sentry/cloudflare/build/types/durableobject.d.ts","../node_modules/@sentry/cloudflare/build/types/pages-plugin.d.ts","../node_modules/@sentry/cloudflare/build/types/request.d.ts","../node_modules/@sentry/cloudflare/build/types/sdk.d.ts","../node_modules/@sentry/cloudflare/build/types/integrations/fetch.d.ts","../node_modules/@sentry/cloudflare/build/types/integrations/tracing/vercelai.d.ts","../node_modules/@sentry/cloudflare/build/types/integrations/hono.d.ts","../node_modules/@sentry/cloudflare/build/types/d1.d.ts","../node_modules/@sentry/cloudflare/build/types/workflows.d.ts","../node_modules/@sentry/cloudflare/build/types/async.d.ts","../node_modules/@sentry/cloudflare/build/types/index.d.ts","../worker/logger/core.ts","../worker/logger/index.ts","../node_modules/agents/dist/mcp-dw5vdry8.d.ts","../node_modules/zod/v3/helpers/typealiases.d.cts","../node_modules/zod/v3/helpers/util.d.cts","../node_modules/zod/v3/index.d.cts","../node_modules/zod/v3/zoderror.d.cts","../node_modules/zod/v3/locales/en.d.cts","../node_modules/zod/v3/errors.d.cts","../node_modules/zod/v3/helpers/parseutil.d.cts","../node_modules/zod/v3/helpers/enumutil.d.cts","../node_modules/zod/v3/helpers/errorutil.d.cts","../node_modules/zod/v3/helpers/partialutil.d.cts","../node_modules/zod/v3/standard-schema.d.cts","../node_modules/zod/v3/types.d.cts","../node_modules/zod/v3/external.d.cts","../node_modules/zod/index.d.cts","../node_modules/@modelcontextprotocol/sdk/dist/esm/shared/auth.d.ts","../node_modules/@modelcontextprotocol/sdk/dist/esm/server/auth/errors.d.ts","../node_modules/@modelcontextprotocol/sdk/dist/esm/server/auth/types.d.ts","../node_modules/@modelcontextprotocol/sdk/dist/esm/types.d.ts","../node_modules/@modelcontextprotocol/sdk/dist/esm/shared/transport.d.ts","../node_modules/@modelcontextprotocol/sdk/dist/esm/client/auth.d.ts","../node_modules/agents/dist/do-oauth-client-provider-dgc5pp0l.d.ts","../node_modules/@modelcontextprotocol/sdk/dist/esm/shared/protocol.d.ts","../node_modules/@modelcontextprotocol/sdk/dist/esm/client/index.d.ts","../node_modules/eventsource/dist/index.d.ts","../node_modules/@modelcontextprotocol/sdk/dist/esm/client/sse.d.ts","../node_modules/@modelcontextprotocol/sdk/dist/esm/client/streamablehttp.d.ts","../node_modules/@types/json-schema/index.d.ts","../node_modules/@ai-sdk/provider/dist/index.d.ts","../node_modules/zod/v4/core/standard-schema.d.cts","../node_modules/zod/v4/core/util.d.cts","../node_modules/zod/v4/core/versions.d.cts","../node_modules/zod/v4/core/schemas.d.cts","../node_modules/zod/v4/core/checks.d.cts","../node_modules/zod/v4/core/errors.d.cts","../node_modules/zod/v4/core/core.d.cts","../node_modules/zod/v4/core/parse.d.cts","../node_modules/zod/v4/core/regexes.d.cts","../node_modules/zod/v4/locales/ar.d.cts","../node_modules/zod/v4/locales/az.d.cts","../node_modules/zod/v4/locales/be.d.cts","../node_modules/zod/v4/locales/ca.d.cts","../node_modules/zod/v4/locales/cs.d.cts","../node_modules/zod/v4/locales/de.d.cts","../node_modules/zod/v4/locales/en.d.cts","../node_modules/zod/v4/locales/eo.d.cts","../node_modules/zod/v4/locales/es.d.cts","../node_modules/zod/v4/locales/fa.d.cts","../node_modules/zod/v4/locales/fi.d.cts","../node_modules/zod/v4/locales/fr.d.cts","../node_modules/zod/v4/locales/fr-ca.d.cts","../node_modules/zod/v4/locales/he.d.cts","../node_modules/zod/v4/locales/hu.d.cts","../node_modules/zod/v4/locales/id.d.cts","../node_modules/zod/v4/locales/it.d.cts","../node_modules/zod/v4/locales/ja.d.cts","../node_modules/zod/v4/locales/kh.d.cts","../node_modules/zod/v4/locales/ko.d.cts","../node_modules/zod/v4/locales/mk.d.cts","../node_modules/zod/v4/locales/ms.d.cts","../node_modules/zod/v4/locales/nl.d.cts","../node_modules/zod/v4/locales/no.d.cts","../node_modules/zod/v4/locales/ota.d.cts","../node_modules/zod/v4/locales/ps.d.cts","../node_modules/zod/v4/locales/pl.d.cts","../node_modules/zod/v4/locales/pt.d.cts","../node_modules/zod/v4/locales/ru.d.cts","../node_modules/zod/v4/locales/sl.d.cts","../node_modules/zod/v4/locales/sv.d.cts","../node_modules/zod/v4/locales/ta.d.cts","../node_modules/zod/v4/locales/th.d.cts","../node_modules/zod/v4/locales/tr.d.cts","../node_modules/zod/v4/locales/ua.d.cts","../node_modules/zod/v4/locales/ur.d.cts","../node_modules/zod/v4/locales/vi.d.cts","../node_modules/zod/v4/locales/zh-cn.d.cts","../node_modules/zod/v4/locales/zh-tw.d.cts","../node_modules/zod/v4/locales/index.d.cts","../node_modules/zod/v4/core/registries.d.cts","../node_modules/zod/v4/core/doc.d.cts","../node_modules/zod/v4/core/function.d.cts","../node_modules/zod/v4/core/api.d.cts","../node_modules/zod/v4/core/json-schema.d.cts","../node_modules/zod/v4/core/to-json-schema.d.cts","../node_modules/zod/v4/core/index.d.cts","../node_modules/zod/v4/classic/errors.d.cts","../node_modules/zod/v4/classic/parse.d.cts","../node_modules/zod/v4/classic/schemas.d.cts","../node_modules/zod/v4/classic/checks.d.cts","../node_modules/zod/v4/classic/compat.d.cts","../node_modules/zod/v4/classic/iso.d.cts","../node_modules/zod/v4/classic/coerce.d.cts","../node_modules/zod/v4/classic/external.d.cts","../node_modules/zod/v4/classic/index.d.cts","../node_modules/zod/v4/index.d.cts","../node_modules/@standard-schema/spec/dist/index.d.cts","../node_modules/eventsource-parser/dist/stream.d.cts","../node_modules/@ai-sdk/provider-utils/dist/index.d.ts","../node_modules/@ai-sdk/gateway/dist/index.d.ts","../node_modules/@opentelemetry/api/build/src/baggage/internal/symbol.d.ts","../node_modules/@opentelemetry/api/build/src/baggage/types.d.ts","../node_modules/@opentelemetry/api/build/src/baggage/utils.d.ts","../node_modules/@opentelemetry/api/build/src/common/exception.d.ts","../node_modules/@opentelemetry/api/build/src/common/time.d.ts","../node_modules/@opentelemetry/api/build/src/common/attributes.d.ts","../node_modules/@opentelemetry/api/build/src/context/types.d.ts","../node_modules/@opentelemetry/api/build/src/context/context.d.ts","../node_modules/@opentelemetry/api/build/src/api/context.d.ts","../node_modules/@opentelemetry/api/build/src/diag/types.d.ts","../node_modules/@opentelemetry/api/build/src/diag/consolelogger.d.ts","../node_modules/@opentelemetry/api/build/src/api/diag.d.ts","../node_modules/@opentelemetry/api/build/src/metrics/observableresult.d.ts","../node_modules/@opentelemetry/api/build/src/metrics/metric.d.ts","../node_modules/@opentelemetry/api/build/src/metrics/meter.d.ts","../node_modules/@opentelemetry/api/build/src/metrics/noopmeter.d.ts","../node_modules/@opentelemetry/api/build/src/metrics/meterprovider.d.ts","../node_modules/@opentelemetry/api/build/src/api/metrics.d.ts","../node_modules/@opentelemetry/api/build/src/propagation/textmappropagator.d.ts","../node_modules/@opentelemetry/api/build/src/baggage/context-helpers.d.ts","../node_modules/@opentelemetry/api/build/src/api/propagation.d.ts","../node_modules/@opentelemetry/api/build/src/trace/attributes.d.ts","../node_modules/@opentelemetry/api/build/src/trace/trace_state.d.ts","../node_modules/@opentelemetry/api/build/src/trace/span_context.d.ts","../node_modules/@opentelemetry/api/build/src/trace/link.d.ts","../node_modules/@opentelemetry/api/build/src/trace/status.d.ts","../node_modules/@opentelemetry/api/build/src/trace/span.d.ts","../node_modules/@opentelemetry/api/build/src/trace/span_kind.d.ts","../node_modules/@opentelemetry/api/build/src/trace/spanoptions.d.ts","../node_modules/@opentelemetry/api/build/src/trace/tracer.d.ts","../node_modules/@opentelemetry/api/build/src/trace/tracer_options.d.ts","../node_modules/@opentelemetry/api/build/src/trace/proxytracer.d.ts","../node_modules/@opentelemetry/api/build/src/trace/tracer_provider.d.ts","../node_modules/@opentelemetry/api/build/src/trace/proxytracerprovider.d.ts","../node_modules/@opentelemetry/api/build/src/trace/samplingresult.d.ts","../node_modules/@opentelemetry/api/build/src/trace/sampler.d.ts","../node_modules/@opentelemetry/api/build/src/trace/trace_flags.d.ts","../node_modules/@opentelemetry/api/build/src/trace/internal/utils.d.ts","../node_modules/@opentelemetry/api/build/src/trace/spancontext-utils.d.ts","../node_modules/@opentelemetry/api/build/src/trace/invalid-span-constants.d.ts","../node_modules/@opentelemetry/api/build/src/trace/context-utils.d.ts","../node_modules/@opentelemetry/api/build/src/api/trace.d.ts","../node_modules/@opentelemetry/api/build/src/context-api.d.ts","../node_modules/@opentelemetry/api/build/src/diag-api.d.ts","../node_modules/@opentelemetry/api/build/src/metrics-api.d.ts","../node_modules/@opentelemetry/api/build/src/propagation-api.d.ts","../node_modules/@opentelemetry/api/build/src/trace-api.d.ts","../node_modules/@opentelemetry/api/build/src/index.d.ts","../node_modules/ai/dist/index.d.ts","../node_modules/agents/dist/client-csp_m13h.d.ts","../node_modules/agents/dist/index-dhjcadwd.d.ts","../node_modules/agents/dist/ai-types-d5yoprbz.d.ts","../node_modules/partyserver/dist/index.d.ts","../node_modules/agents/dist/index-dfqsr7mb.d.ts","../node_modules/agents/dist/index.d.ts","../worker/agents/schemas.ts","../worker/services/sandbox/sandboxtypes.ts","../node_modules/before-after-hook/index.d.ts","../node_modules/@octokit/types/dist-types/requestmethod.d.ts","../node_modules/@octokit/types/dist-types/url.d.ts","../node_modules/@octokit/types/dist-types/fetch.d.ts","../node_modules/@octokit/types/dist-types/requestrequestoptions.d.ts","../node_modules/@octokit/types/dist-types/requestheaders.d.ts","../node_modules/@octokit/types/dist-types/requestparameters.d.ts","../node_modules/@octokit/types/dist-types/endpointoptions.d.ts","../node_modules/@octokit/types/dist-types/responseheaders.d.ts","../node_modules/@octokit/types/dist-types/octokitresponse.d.ts","../node_modules/@octokit/types/dist-types/endpointdefaults.d.ts","../node_modules/@octokit/types/dist-types/requestoptions.d.ts","../node_modules/@octokit/types/dist-types/route.d.ts","../node_modules/@octokit/openapi-types/types.d.ts","../node_modules/@octokit/types/dist-types/generated/endpoints.d.ts","../node_modules/@octokit/types/dist-types/endpointinterface.d.ts","../node_modules/@octokit/types/dist-types/requestinterface.d.ts","../node_modules/@octokit/types/dist-types/authinterface.d.ts","../node_modules/@octokit/types/dist-types/requesterror.d.ts","../node_modules/@octokit/types/dist-types/strategyinterface.d.ts","../node_modules/@octokit/types/dist-types/version.d.ts","../node_modules/@octokit/types/dist-types/getresponsetypefromendpointmethod.d.ts","../node_modules/@octokit/types/dist-types/index.d.ts","../node_modules/@octokit/request/dist-types/index.d.ts","../node_modules/@octokit/graphql/dist-types/types.d.ts","../node_modules/@octokit/graphql/dist-types/error.d.ts","../node_modules/@octokit/graphql/dist-types/index.d.ts","../node_modules/@octokit/request-error/dist-types/types.d.ts","../node_modules/@octokit/request-error/dist-types/index.d.ts","../node_modules/@octokit/core/dist-types/types.d.ts","../node_modules/@octokit/core/dist-types/index.d.ts","../node_modules/@octokit/plugin-paginate-rest/dist-types/generated/paginating-endpoints.d.ts","../node_modules/@octokit/plugin-paginate-rest/dist-types/types.d.ts","../node_modules/@octokit/plugin-paginate-rest/dist-types/compose-paginate.d.ts","../node_modules/@octokit/plugin-paginate-rest/dist-types/paginating-endpoints.d.ts","../node_modules/@octokit/plugin-paginate-rest/dist-types/index.d.ts","../node_modules/@octokit/plugin-rest-endpoint-methods/dist-types/generated/parameters-and-response-types.d.ts","../node_modules/@octokit/plugin-rest-endpoint-methods/dist-types/generated/method-types.d.ts","../node_modules/@octokit/plugin-rest-endpoint-methods/dist-types/types.d.ts","../node_modules/@octokit/plugin-rest-endpoint-methods/dist-types/index.d.ts","../node_modules/@octokit/rest/dist-types/index.d.ts","../worker/services/github/types.ts","../node_modules/@ashishkumar472/cf-git/index.d.ts","../worker/agents/git/memfs.ts","../worker/agents/git/git-clone-service.ts","../node_modules/@ashishkumar472/cf-git/http/web/index.d.cts","../worker/utils/deploytocf.ts","../worker/services/github/githubservice.ts","../node_modules/openai/internal/builtin-types.d.ts","../node_modules/undici/types/utility.d.ts","../node_modules/undici/types/header.d.ts","../node_modules/undici/types/readable.d.ts","../node_modules/undici/types/fetch.d.ts","../node_modules/undici/types/formdata.d.ts","../node_modules/undici/types/connector.d.ts","../node_modules/undici/types/client-stats.d.ts","../node_modules/undici/types/client.d.ts","../node_modules/undici/types/errors.d.ts","../node_modules/undici/types/dispatcher.d.ts","../node_modules/undici/types/global-dispatcher.d.ts","../node_modules/undici/types/global-origin.d.ts","../node_modules/undici/types/pool-stats.d.ts","../node_modules/undici/types/pool.d.ts","../node_modules/undici/types/handlers.d.ts","../node_modules/undici/types/balanced-pool.d.ts","../node_modules/undici/types/h2c-client.d.ts","../node_modules/undici/types/agent.d.ts","../node_modules/undici/types/mock-interceptor.d.ts","../node_modules/undici/types/mock-call-history.d.ts","../node_modules/undici/types/mock-agent.d.ts","../node_modules/undici/types/mock-client.d.ts","../node_modules/undici/types/mock-pool.d.ts","../node_modules/undici/types/snapshot-agent.d.ts","../node_modules/undici/types/mock-errors.d.ts","../node_modules/undici/types/proxy-agent.d.ts","../node_modules/undici/types/env-http-proxy-agent.d.ts","../node_modules/undici/types/retry-handler.d.ts","../node_modules/undici/types/retry-agent.d.ts","../node_modules/undici/types/api.d.ts","../node_modules/undici/types/cache-interceptor.d.ts","../node_modules/undici/types/interceptors.d.ts","../node_modules/undici/types/util.d.ts","../node_modules/undici/types/cookies.d.ts","../node_modules/undici/types/patch.d.ts","../node_modules/undici/types/websocket.d.ts","../node_modules/undici/types/eventsource.d.ts","../node_modules/undici/types/diagnostics-channel.d.ts","../node_modules/undici/types/content-type.d.ts","../node_modules/undici/types/cache.d.ts","../node_modules/undici/types/index.d.ts","../node_modules/undici/index.d.ts","../node_modules/form-data/index.d.ts","../node_modules/@types/node-fetch/externals.d.ts","../node_modules/@types/node-fetch/index.d.ts","../node_modules/formdata-polyfill/esm.min.d.ts","../node_modules/fetch-blob/file.d.ts","../node_modules/fetch-blob/index.d.ts","../node_modules/fetch-blob/from.d.ts","../node_modules/node-fetch/@types/index.d.ts","../node_modules/openai/internal/types.d.ts","../node_modules/openai/internal/headers.d.ts","../node_modules/openai/internal/shim-types.d.ts","../node_modules/openai/core/streaming.d.ts","../node_modules/openai/internal/request-options.d.ts","../node_modules/openai/internal/utils/log.d.ts","../node_modules/openai/core/error.d.ts","../node_modules/openai/pagination.d.ts","../node_modules/openai/internal/parse.d.ts","../node_modules/openai/core/api-promise.d.ts","../node_modules/openai/core/pagination.d.ts","../node_modules/openai/internal/uploads.d.ts","../node_modules/openai/internal/to-file.d.ts","../node_modules/openai/core/uploads.d.ts","../node_modules/openai/resources/shared.d.ts","../node_modules/openai/resources/batches.d.ts","../node_modules/openai/resources/chat/completions/messages.d.ts","../node_modules/openai/resources/chat/completions/index.d.ts","../node_modules/openai/resources/chat/completions.d.ts","../node_modules/openai/azure.d.ts","../node_modules/openai/index.d.ts","../node_modules/openai/error.d.ts","../node_modules/openai/lib/eventstream.d.ts","../node_modules/openai/lib/abstractchatcompletionrunner.d.ts","../node_modules/openai/lib/chatcompletionstream.d.ts","../node_modules/openai/lib/responsesparser.d.ts","../node_modules/openai/lib/responses/eventtypes.d.ts","../node_modules/openai/lib/responses/responsestream.d.ts","../node_modules/openai/resources/responses/input-items.d.ts","../node_modules/openai/resources/responses/responses.d.ts","../node_modules/openai/lib/parser.d.ts","../node_modules/openai/lib/chatcompletionstreamingrunner.d.ts","../node_modules/openai/lib/jsonschema.d.ts","../node_modules/openai/lib/runnablefunction.d.ts","../node_modules/openai/lib/chatcompletionrunner.d.ts","../node_modules/openai/resources/chat/completions/completions.d.ts","../node_modules/openai/resources/completions.d.ts","../node_modules/openai/resources/embeddings.d.ts","../node_modules/openai/resources/files.d.ts","../node_modules/openai/resources/images.d.ts","../node_modules/openai/resources/models.d.ts","../node_modules/openai/resources/moderations.d.ts","../node_modules/openai/resources/webhooks.d.ts","../node_modules/openai/resources/audio/speech.d.ts","../node_modules/openai/resources/audio/transcriptions.d.ts","../node_modules/openai/resources/audio/translations.d.ts","../node_modules/openai/resources/audio/audio.d.ts","../node_modules/openai/resources/beta/threads/messages.d.ts","../node_modules/openai/resources/beta/threads/runs/steps.d.ts","../node_modules/openai/lib/assistantstream.d.ts","../node_modules/openai/resources/beta/threads/runs/runs.d.ts","../node_modules/openai/resources/beta/threads/threads.d.ts","../node_modules/openai/resources/beta/assistants.d.ts","../node_modules/openai/resources/beta/realtime/sessions.d.ts","../node_modules/openai/resources/beta/realtime/transcription-sessions.d.ts","../node_modules/openai/resources/beta/realtime/realtime.d.ts","../node_modules/openai/resources/beta/beta.d.ts","../node_modules/openai/resources/containers/files/content.d.ts","../node_modules/openai/resources/containers/files/files.d.ts","../node_modules/openai/resources/containers/containers.d.ts","../node_modules/openai/resources/conversations/items.d.ts","../node_modules/openai/resources/conversations/conversations.d.ts","../node_modules/openai/resources/graders/grader-models.d.ts","../node_modules/openai/resources/evals/runs/output-items.d.ts","../node_modules/openai/resources/evals/runs/runs.d.ts","../node_modules/openai/resources/evals/evals.d.ts","../node_modules/openai/resources/fine-tuning/methods.d.ts","../node_modules/openai/resources/fine-tuning/alpha/graders.d.ts","../node_modules/openai/resources/fine-tuning/alpha/alpha.d.ts","../node_modules/openai/resources/fine-tuning/checkpoints/permissions.d.ts","../node_modules/openai/resources/fine-tuning/checkpoints/checkpoints.d.ts","../node_modules/openai/resources/fine-tuning/jobs/checkpoints.d.ts","../node_modules/openai/resources/fine-tuning/jobs/jobs.d.ts","../node_modules/openai/resources/fine-tuning/fine-tuning.d.ts","../node_modules/openai/resources/graders/graders.d.ts","../node_modules/openai/resources/realtime/client-secrets.d.ts","../node_modules/openai/resources/realtime/realtime.d.ts","../node_modules/openai/resources/uploads/parts.d.ts","../node_modules/openai/resources/uploads/uploads.d.ts","../node_modules/openai/uploads.d.ts","../node_modules/openai/resources/vector-stores/files.d.ts","../node_modules/openai/resources/vector-stores/file-batches.d.ts","../node_modules/openai/resources/vector-stores/vector-stores.d.ts","../node_modules/openai/client.d.ts","../node_modules/openai/core/resource.d.ts","../node_modules/openai/resources/chat/chat.d.ts","../node_modules/openai/resources/chat/index.d.ts","../node_modules/openai/resources/index.d.ts","../node_modules/openai/resources.d.ts","../worker/agents/inferutils/common.ts","../node_modules/openai/internal/builtin-types.d.mts","../node_modules/openai/internal/types.d.mts","../node_modules/openai/internal/headers.d.mts","../node_modules/openai/internal/shim-types.d.mts","../node_modules/openai/core/streaming.d.mts","../node_modules/openai/internal/request-options.d.mts","../node_modules/openai/internal/utils/log.d.mts","../node_modules/openai/core/error.d.mts","../node_modules/openai/pagination.d.mts","../node_modules/openai/internal/parse.d.mts","../node_modules/openai/core/api-promise.d.mts","../node_modules/openai/core/pagination.d.mts","../node_modules/openai/internal/uploads.d.mts","../node_modules/openai/internal/to-file.d.mts","../node_modules/openai/core/uploads.d.mts","../node_modules/openai/resources/shared.d.mts","../node_modules/openai/resources/batches.d.mts","../node_modules/openai/resources/chat/completions/messages.d.mts","../node_modules/openai/resources/chat/completions/index.d.mts","../node_modules/openai/resources/chat/completions.d.mts","../node_modules/openai/azure.d.mts","../node_modules/openai/index.d.mts","../node_modules/openai/error.d.mts","../node_modules/openai/lib/eventstream.d.mts","../node_modules/openai/lib/abstractchatcompletionrunner.d.mts","../node_modules/openai/lib/chatcompletionstream.d.mts","../node_modules/openai/lib/responsesparser.d.mts","../node_modules/openai/lib/responses/eventtypes.d.mts","../node_modules/openai/lib/responses/responsestream.d.mts","../node_modules/openai/resources/responses/input-items.d.mts","../node_modules/openai/resources/responses/responses.d.mts","../node_modules/openai/lib/parser.d.mts","../node_modules/openai/lib/chatcompletionstreamingrunner.d.mts","../node_modules/openai/lib/jsonschema.d.mts","../node_modules/openai/lib/runnablefunction.d.mts","../node_modules/openai/lib/chatcompletionrunner.d.mts","../node_modules/openai/resources/chat/completions/completions.d.mts","../node_modules/openai/resources/completions.d.mts","../node_modules/openai/resources/embeddings.d.mts","../node_modules/openai/resources/files.d.mts","../node_modules/openai/resources/images.d.mts","../node_modules/openai/resources/models.d.mts","../node_modules/openai/resources/moderations.d.mts","../node_modules/openai/resources/webhooks.d.mts","../node_modules/openai/resources/audio/speech.d.mts","../node_modules/openai/resources/audio/transcriptions.d.mts","../node_modules/openai/resources/audio/translations.d.mts","../node_modules/openai/resources/audio/audio.d.mts","../node_modules/openai/resources/beta/threads/messages.d.mts","../node_modules/openai/resources/beta/threads/runs/steps.d.mts","../node_modules/openai/lib/assistantstream.d.mts","../node_modules/openai/resources/beta/threads/runs/runs.d.mts","../node_modules/openai/resources/beta/threads/threads.d.mts","../node_modules/openai/resources/beta/assistants.d.mts","../node_modules/openai/resources/beta/realtime/sessions.d.mts","../node_modules/openai/resources/beta/realtime/transcription-sessions.d.mts","../node_modules/openai/resources/beta/realtime/realtime.d.mts","../node_modules/openai/resources/beta/beta.d.mts","../node_modules/openai/resources/containers/files/content.d.mts","../node_modules/openai/resources/containers/files/files.d.mts","../node_modules/openai/resources/containers/containers.d.mts","../node_modules/openai/resources/conversations/items.d.mts","../node_modules/openai/resources/conversations/conversations.d.mts","../node_modules/openai/resources/graders/grader-models.d.mts","../node_modules/openai/resources/evals/runs/output-items.d.mts","../node_modules/openai/resources/evals/runs/runs.d.mts","../node_modules/openai/resources/evals/evals.d.mts","../node_modules/openai/resources/fine-tuning/methods.d.mts","../node_modules/openai/resources/fine-tuning/alpha/graders.d.mts","../node_modules/openai/resources/fine-tuning/alpha/alpha.d.mts","../node_modules/openai/resources/fine-tuning/checkpoints/permissions.d.mts","../node_modules/openai/resources/fine-tuning/checkpoints/checkpoints.d.mts","../node_modules/openai/resources/fine-tuning/jobs/checkpoints.d.mts","../node_modules/openai/resources/fine-tuning/jobs/jobs.d.mts","../node_modules/openai/resources/fine-tuning/fine-tuning.d.mts","../node_modules/openai/resources/graders/graders.d.mts","../node_modules/openai/resources/realtime/client-secrets.d.mts","../node_modules/openai/resources/realtime/realtime.d.mts","../node_modules/openai/resources/uploads/parts.d.mts","../node_modules/openai/resources/uploads/uploads.d.mts","../node_modules/openai/uploads.d.mts","../node_modules/openai/resources/vector-stores/files.d.mts","../node_modules/openai/resources/vector-stores/file-batches.d.mts","../node_modules/openai/resources/vector-stores/vector-stores.d.mts","../node_modules/openai/client.d.mts","../node_modules/openai/core/resource.d.mts","../node_modules/openai/resources/chat/chat.d.mts","../node_modules/openai/resources/chat/index.d.mts","../node_modules/openai/resources/index.d.mts","../node_modules/openai/resources.d.mts","../worker/agents/inferutils/config.types.ts","../worker/agents/core/state.ts","../worker/agents/core/types.ts","../node_modules/@babel/types/lib/index.d.ts","../worker/services/code-fixer/types.ts","../node_modules/@babel/parser/typings/babel-parser.d.ts","../node_modules/@types/babel__traverse/index.d.ts","../node_modules/@types/babel__generator/index.d.ts","../worker/services/code-fixer/utils/ast.ts","../worker/services/code-fixer/utils/imports.ts","../worker/services/code-fixer/utils/paths.ts","../worker/services/code-fixer/utils/modules.ts","../worker/services/code-fixer/utils/stubs.ts","../worker/services/code-fixer/utils/helpers.ts","../worker/services/code-fixer/fixers/ts2307.ts","../worker/services/code-fixer/fixers/ts2613.ts","../worker/services/code-fixer/fixers/ts2304.ts","../worker/services/code-fixer/fixers/ts2305.ts","../worker/services/code-fixer/fixers/ts2614.ts","../worker/services/code-fixer/fixers/ts2724.ts","../worker/services/code-fixer/index.ts","../worker/agents/domain/values/issuereport.ts","../worker/api/websockettypes.ts","../worker/agents/constants.ts","../worker/types/image-attachment.ts","../worker/agents/core/websocket.ts","../node_modules/@types/unist/index.d.ts","../node_modules/vfile-message/lib/index.d.ts","../node_modules/vfile-message/index.d.ts","../node_modules/vfile/lib/index.d.ts","../node_modules/vfile/index.d.ts","../node_modules/unified/lib/callable-instance.d.ts","../node_modules/trough/lib/index.d.ts","../node_modules/trough/index.d.ts","../node_modules/unified/lib/index.d.ts","../node_modules/unified/index.d.ts","../node_modules/@types/mdast/index.d.ts","../node_modules/micromark-util-types/index.d.ts","../node_modules/mdast-util-from-markdown/lib/types.d.ts","../node_modules/mdast-util-from-markdown/lib/index.d.ts","../node_modules/mdast-util-from-markdown/index.d.ts","../node_modules/remark-parse/lib/index.d.ts","../node_modules/remark-parse/index.d.ts","../node_modules/micromark-extension-gfm-footnote/lib/html.d.ts","../node_modules/micromark-extension-gfm-footnote/lib/syntax.d.ts","../node_modules/micromark-extension-gfm-footnote/index.d.ts","../node_modules/micromark-extension-gfm-strikethrough/lib/html.d.ts","../node_modules/micromark-extension-gfm-strikethrough/lib/syntax.d.ts","../node_modules/micromark-extension-gfm-strikethrough/index.d.ts","../node_modules/micromark-extension-gfm/index.d.ts","../node_modules/mdast-util-to-markdown/lib/types.d.ts","../node_modules/mdast-util-to-markdown/lib/index.d.ts","../node_modules/mdast-util-to-markdown/lib/handle/blockquote.d.ts","../node_modules/mdast-util-to-markdown/lib/handle/break.d.ts","../node_modules/mdast-util-to-markdown/lib/handle/code.d.ts","../node_modules/mdast-util-to-markdown/lib/handle/definition.d.ts","../node_modules/mdast-util-to-markdown/lib/handle/emphasis.d.ts","../node_modules/mdast-util-to-markdown/lib/handle/heading.d.ts","../node_modules/mdast-util-to-markdown/lib/handle/html.d.ts","../node_modules/mdast-util-to-markdown/lib/handle/image.d.ts","../node_modules/mdast-util-to-markdown/lib/handle/image-reference.d.ts","../node_modules/mdast-util-to-markdown/lib/handle/inline-code.d.ts","../node_modules/mdast-util-to-markdown/lib/handle/link.d.ts","../node_modules/mdast-util-to-markdown/lib/handle/link-reference.d.ts","../node_modules/mdast-util-to-markdown/lib/handle/list.d.ts","../node_modules/mdast-util-to-markdown/lib/handle/list-item.d.ts","../node_modules/mdast-util-to-markdown/lib/handle/paragraph.d.ts","../node_modules/mdast-util-to-markdown/lib/handle/root.d.ts","../node_modules/mdast-util-to-markdown/lib/handle/strong.d.ts","../node_modules/mdast-util-to-markdown/lib/handle/text.d.ts","../node_modules/mdast-util-to-markdown/lib/handle/thematic-break.d.ts","../node_modules/mdast-util-to-markdown/lib/handle/index.d.ts","../node_modules/mdast-util-to-markdown/index.d.ts","../node_modules/mdast-util-gfm-footnote/lib/index.d.ts","../node_modules/mdast-util-gfm-footnote/index.d.ts","../node_modules/markdown-table/index.d.ts","../node_modules/mdast-util-gfm-table/lib/index.d.ts","../node_modules/mdast-util-gfm-table/index.d.ts","../node_modules/mdast-util-gfm/lib/index.d.ts","../node_modules/mdast-util-gfm/index.d.ts","../node_modules/remark-gfm/lib/index.d.ts","../node_modules/remark-gfm/index.d.ts","../node_modules/mdast-util-to-string/lib/index.d.ts","../node_modules/mdast-util-to-string/index.d.ts","../worker/agents/inferutils/schemaformatters.ts","../worker/agents/output-formats/streaming-formats/base.ts","../worker/agents/output-formats/diff-formats/udiff.ts","../worker/agents/utils/common.ts","../worker/agents/output-formats/streaming-formats/scof.ts","../worker/agents/utils/codeserializers.ts","../worker/agents/prompts.ts","../node_modules/openai/streaming.d.ts","../node_modules/openai/helpers/zod.d.mts","../worker/agents/tools/types.ts","../worker/services/rate-limit/config.ts","../node_modules/drizzle-orm/entity.d.cts","../node_modules/drizzle-orm/cache/core/types.d.cts","../node_modules/drizzle-orm/cache/core/cache.d.cts","../node_modules/drizzle-orm/logger.d.cts","../node_modules/drizzle-orm/casing.d.cts","../node_modules/drizzle-orm/table.d.cts","../node_modules/drizzle-orm/operations.d.cts","../node_modules/drizzle-orm/subquery.d.cts","../node_modules/drizzle-orm/query-builders/select.types.d.cts","../node_modules/drizzle-orm/sql/sql.d.cts","../node_modules/drizzle-orm/utils.d.cts","../node_modules/drizzle-orm/sql/expressions/conditions.d.cts","../node_modules/drizzle-orm/sql/expressions/select.d.cts","../node_modules/drizzle-orm/sql/expressions/index.d.cts","../node_modules/drizzle-orm/sql/functions/aggregate.d.cts","../node_modules/drizzle-orm/query-builders/query-builder.d.cts","../node_modules/drizzle-orm/sql/functions/vector.d.cts","../node_modules/drizzle-orm/sql/functions/index.d.cts","../node_modules/drizzle-orm/sql/index.d.cts","../node_modules/drizzle-orm/gel-core/checks.d.cts","../node_modules/drizzle-orm/gel-core/sequence.d.cts","../node_modules/drizzle-orm/gel-core/columns/int.common.d.cts","../node_modules/drizzle-orm/gel-core/columns/bigintt.d.cts","../node_modules/drizzle-orm/gel-core/columns/boolean.d.cts","../node_modules/drizzle-orm/gel-core/columns/bytes.d.cts","../node_modules/drizzle-orm/gel-core/columns/custom.d.cts","../node_modules/drizzle-orm/gel-core/columns/date-duration.d.cts","../node_modules/drizzle-orm/gel-core/columns/decimal.d.cts","../node_modules/drizzle-orm/gel-core/columns/double-precision.d.cts","../node_modules/drizzle-orm/gel-core/columns/duration.d.cts","../node_modules/drizzle-orm/gel-core/columns/integer.d.cts","../node_modules/drizzle-orm/gel-core/columns/json.d.cts","../node_modules/drizzle-orm/entity.d.ts","../node_modules/drizzle-orm/operations.d.ts","../node_modules/drizzle-orm/table.d.ts","../node_modules/drizzle-orm/sql/expressions/conditions.d.ts","../node_modules/drizzle-orm/sql/expressions/select.d.ts","../node_modules/drizzle-orm/sql/expressions/index.d.ts","../node_modules/drizzle-orm/relations.d.ts","../node_modules/drizzle-orm/alias.d.ts","../node_modules/drizzle-orm/errors.d.ts","../node_modules/drizzle-orm/logger.d.ts","../node_modules/drizzle-orm/query-promise.d.ts","../node_modules/drizzle-orm/sql/functions/aggregate.d.ts","../node_modules/drizzle-orm/query-builders/query-builder.d.ts","../node_modules/drizzle-orm/sql/functions/vector.d.ts","../node_modules/drizzle-orm/sql/functions/index.d.ts","../node_modules/drizzle-orm/sql/index.d.ts","../node_modules/drizzle-orm/subquery.d.ts","../node_modules/drizzle-orm/view-common.d.ts","../node_modules/drizzle-orm/index.d.ts","../node_modules/drizzle-orm/cache/core/types.d.ts","../node_modules/drizzle-orm/cache/core/cache.d.ts","../node_modules/drizzle-orm/utils.d.ts","../node_modules/drizzle-orm/casing.d.ts","../node_modules/drizzle-orm/query-builders/select.types.d.ts","../node_modules/drizzle-orm/sql/sql.d.ts","../node_modules/drizzle-orm/column.d.ts","../node_modules/drizzle-orm/gel-core/checks.d.ts","../node_modules/drizzle-orm/gel-core/sequence.d.ts","../node_modules/drizzle-orm/gel-core/columns/int.common.d.ts","../node_modules/drizzle-orm/gel-core/columns/bigintt.d.ts","../node_modules/drizzle-orm/gel-core/columns/boolean.d.ts","../node_modules/drizzle-orm/gel-core/columns/bytes.d.ts","../node_modules/drizzle-orm/gel-core/columns/custom.d.ts","../node_modules/drizzle-orm/gel-core/columns/date-duration.d.ts","../node_modules/drizzle-orm/gel-core/columns/decimal.d.ts","../node_modules/drizzle-orm/gel-core/columns/double-precision.d.ts","../node_modules/drizzle-orm/gel-core/columns/duration.d.ts","../node_modules/drizzle-orm/gel-core/columns/integer.d.ts","../node_modules/drizzle-orm/gel-core/columns/json.d.ts","../node_modules/drizzle-orm/gel-core/columns/date.common.d.ts","../node_modules/drizzle-orm/gel-core/columns/localdate.d.ts","../node_modules/drizzle-orm/gel-core/columns/localtime.d.ts","../node_modules/drizzle-orm/gel-core/columns/real.d.ts","../node_modules/drizzle-orm/gel-core/columns/relative-duration.d.ts","../node_modules/drizzle-orm/gel-core/columns/smallint.d.ts","../node_modules/drizzle-orm/gel-core/columns/text.d.ts","../node_modules/drizzle-orm/gel-core/columns/timestamp.d.ts","../node_modules/drizzle-orm/gel-core/columns/timestamptz.d.ts","../node_modules/drizzle-orm/gel-core/columns/uuid.d.ts","../node_modules/drizzle-orm/gel-core/columns/all.d.ts","../node_modules/drizzle-orm/gel-core/indexes.d.ts","../node_modules/drizzle-orm/gel-core/roles.d.ts","../node_modules/drizzle-orm/gel-core/policies.d.ts","../node_modules/drizzle-orm/gel-core/primary-keys.d.ts","../node_modules/drizzle-orm/gel-core/unique-constraint.d.ts","../node_modules/drizzle-orm/gel-core/table.d.ts","../node_modules/drizzle-orm/gel-core/foreign-keys.d.ts","../node_modules/drizzle-orm/gel-core/columns/common.d.ts","../node_modules/drizzle-orm/gel-core/columns/bigint.d.ts","../node_modules/drizzle-orm/gel-core/columns/index.d.ts","../node_modules/drizzle-orm/gel-core/view-base.d.ts","../node_modules/drizzle-orm/session.d.ts","../node_modules/drizzle-orm/gel-core/query-builders/count.d.ts","../node_modules/drizzle-orm/runnable-query.d.ts","../node_modules/drizzle-orm/gel-core/query-builders/query.d.ts","../node_modules/drizzle-orm/gel-core/query-builders/raw.d.ts","../node_modules/drizzle-orm/gel-core/subquery.d.ts","../node_modules/drizzle-orm/gel-core/db.d.ts","../node_modules/drizzle-orm/gel-core/session.d.ts","../node_modules/drizzle-orm/gel-core/query-builders/delete.d.ts","../node_modules/drizzle-orm/gel-core/query-builders/update.d.ts","../node_modules/drizzle-orm/gel-core/query-builders/insert.d.ts","../node_modules/drizzle-orm/gel-core/query-builders/refresh-materialized-view.d.ts","../node_modules/drizzle-orm/gel-core/query-builders/select.d.ts","../node_modules/drizzle-orm/gel-core/query-builders/index.d.ts","../node_modules/drizzle-orm/gel-core/dialect.d.ts","../node_modules/drizzle-orm/gel-core/query-builders/query-builder.d.ts","../node_modules/drizzle-orm/gel-core/view-common.d.ts","../node_modules/drizzle-orm/gel-core/view.d.ts","../node_modules/drizzle-orm/gel-core/query-builders/select.types.d.ts","../node_modules/drizzle-orm/gel-core/alias.d.ts","../node_modules/drizzle-orm/gel-core/schema.d.ts","../node_modules/drizzle-orm/gel-core/utils.d.ts","../node_modules/drizzle-orm/gel-core/index.d.ts","../node_modules/drizzle-orm/mysql-core/checks.d.ts","../node_modules/drizzle-orm/mysql-core/columns/binary.d.ts","../node_modules/drizzle-orm/mysql-core/columns/boolean.d.ts","../node_modules/drizzle-orm/mysql-core/columns/char.d.ts","../node_modules/drizzle-orm/mysql-core/columns/custom.d.ts","../node_modules/drizzle-orm/mysql-core/columns/date.d.ts","../node_modules/drizzle-orm/mysql-core/columns/datetime.d.ts","../node_modules/drizzle-orm/mysql-core/columns/decimal.d.ts","../node_modules/drizzle-orm/mysql-core/columns/double.d.ts","../node_modules/drizzle-orm/mysql-core/columns/enum.d.ts","../node_modules/drizzle-orm/mysql-core/columns/float.d.ts","../node_modules/drizzle-orm/mysql-core/columns/int.d.ts","../node_modules/drizzle-orm/mysql-core/columns/json.d.ts","../node_modules/drizzle-orm/mysql-core/columns/mediumint.d.ts","../node_modules/drizzle-orm/mysql-core/columns/real.d.ts","../node_modules/drizzle-orm/mysql-core/columns/serial.d.ts","../node_modules/drizzle-orm/mysql-core/columns/smallint.d.ts","../node_modules/drizzle-orm/mysql-core/columns/text.d.ts","../node_modules/drizzle-orm/mysql-core/columns/time.d.ts","../node_modules/drizzle-orm/mysql-core/columns/date.common.d.ts","../node_modules/drizzle-orm/mysql-core/columns/timestamp.d.ts","../node_modules/drizzle-orm/mysql-core/columns/tinyint.d.ts","../node_modules/drizzle-orm/mysql-core/columns/varbinary.d.ts","../node_modules/drizzle-orm/mysql-core/columns/varchar.d.ts","../node_modules/drizzle-orm/mysql-core/columns/year.d.ts","../node_modules/drizzle-orm/mysql-core/columns/all.d.ts","../node_modules/drizzle-orm/mysql-core/indexes.d.ts","../node_modules/drizzle-orm/mysql-core/primary-keys.d.ts","../node_modules/drizzle-orm/mysql-core/unique-constraint.d.ts","../node_modules/drizzle-orm/mysql-core/table.d.ts","../node_modules/drizzle-orm/mysql-core/foreign-keys.d.ts","../node_modules/drizzle-orm/mysql-core/columns/common.d.ts","../node_modules/drizzle-orm/mysql-core/columns/bigint.d.ts","../node_modules/drizzle-orm/mysql-core/columns/index.d.ts","../node_modules/drizzle-orm/migrator.d.ts","../node_modules/drizzle-orm/mysql-core/query-builders/delete.d.ts","../node_modules/drizzle-orm/mysql-core/subquery.d.ts","../node_modules/drizzle-orm/mysql-core/view-base.d.ts","../node_modules/drizzle-orm/mysql-core/query-builders/select.d.ts","../node_modules/drizzle-orm/mysql-core/query-builders/query-builder.d.ts","../node_modules/drizzle-orm/mysql-core/query-builders/update.d.ts","../node_modules/drizzle-orm/mysql-core/query-builders/insert.d.ts","../node_modules/drizzle-orm/mysql-core/dialect.d.ts","../node_modules/drizzle-orm/mysql-core/query-builders/count.d.ts","../node_modules/drizzle-orm/mysql-core/query-builders/index.d.ts","../node_modules/drizzle-orm/mysql-core/query-builders/query.d.ts","../node_modules/drizzle-orm/mysql-core/db.d.ts","../node_modules/drizzle-orm/mysql-core/session.d.ts","../node_modules/drizzle-orm/mysql-core/view-common.d.ts","../node_modules/drizzle-orm/mysql-core/view.d.ts","../node_modules/drizzle-orm/mysql-core/query-builders/select.types.d.ts","../node_modules/drizzle-orm/mysql-core/alias.d.ts","../node_modules/drizzle-orm/mysql-core/schema.d.ts","../node_modules/drizzle-orm/mysql-core/utils.d.ts","../node_modules/drizzle-orm/mysql-core/index.d.ts","../node_modules/drizzle-orm/pg-core/checks.d.ts","../node_modules/drizzle-orm/pg-core/columns/bigserial.d.ts","../node_modules/drizzle-orm/pg-core/columns/boolean.d.ts","../node_modules/drizzle-orm/pg-core/columns/char.d.ts","../node_modules/drizzle-orm/pg-core/columns/cidr.d.ts","../node_modules/drizzle-orm/pg-core/columns/custom.d.ts","../node_modules/drizzle-orm/pg-core/columns/date.common.d.ts","../node_modules/drizzle-orm/pg-core/columns/date.d.ts","../node_modules/drizzle-orm/pg-core/columns/double-precision.d.ts","../node_modules/drizzle-orm/pg-core/columns/inet.d.ts","../node_modules/drizzle-orm/pg-core/sequence.d.ts","../node_modules/drizzle-orm/pg-core/columns/int.common.d.ts","../node_modules/drizzle-orm/pg-core/columns/integer.d.ts","../node_modules/drizzle-orm/pg-core/columns/timestamp.d.ts","../node_modules/drizzle-orm/pg-core/columns/interval.d.ts","../node_modules/drizzle-orm/pg-core/columns/json.d.ts","../node_modules/drizzle-orm/pg-core/columns/jsonb.d.ts","../node_modules/drizzle-orm/pg-core/columns/line.d.ts","../node_modules/drizzle-orm/pg-core/columns/macaddr.d.ts","../node_modules/drizzle-orm/pg-core/columns/macaddr8.d.ts","../node_modules/drizzle-orm/pg-core/columns/numeric.d.ts","../node_modules/drizzle-orm/pg-core/columns/point.d.ts","../node_modules/drizzle-orm/pg-core/columns/postgis_extension/geometry.d.ts","../node_modules/drizzle-orm/pg-core/columns/real.d.ts","../node_modules/drizzle-orm/pg-core/columns/serial.d.ts","../node_modules/drizzle-orm/pg-core/columns/smallint.d.ts","../node_modules/drizzle-orm/pg-core/columns/smallserial.d.ts","../node_modules/drizzle-orm/pg-core/columns/text.d.ts","../node_modules/drizzle-orm/pg-core/columns/time.d.ts","../node_modules/drizzle-orm/pg-core/columns/uuid.d.ts","../node_modules/drizzle-orm/pg-core/columns/varchar.d.ts","../node_modules/drizzle-orm/pg-core/columns/vector_extension/bit.d.ts","../node_modules/drizzle-orm/pg-core/columns/vector_extension/halfvec.d.ts","../node_modules/drizzle-orm/pg-core/columns/vector_extension/sparsevec.d.ts","../node_modules/drizzle-orm/pg-core/columns/vector_extension/vector.d.ts","../node_modules/drizzle-orm/pg-core/columns/all.d.ts","../node_modules/drizzle-orm/pg-core/indexes.d.ts","../node_modules/drizzle-orm/pg-core/roles.d.ts","../node_modules/drizzle-orm/pg-core/policies.d.ts","../node_modules/drizzle-orm/pg-core/primary-keys.d.ts","../node_modules/drizzle-orm/pg-core/unique-constraint.d.ts","../node_modules/drizzle-orm/pg-core/table.d.ts","../node_modules/drizzle-orm/pg-core/foreign-keys.d.ts","../node_modules/drizzle-orm/pg-core/columns/common.d.ts","../node_modules/drizzle-orm/pg-core/columns/bigint.d.ts","../node_modules/drizzle-orm/pg-core/columns/enum.d.ts","../node_modules/drizzle-orm/pg-core/columns/index.d.ts","../node_modules/drizzle-orm/pg-core/view-base.d.ts","../node_modules/drizzle-orm/pg-core/query-builders/count.d.ts","../node_modules/drizzle-orm/pg-core/query-builders/query.d.ts","../node_modules/drizzle-orm/pg-core/query-builders/raw.d.ts","../node_modules/drizzle-orm/pg-core/query-builders/refresh-materialized-view.d.ts","../node_modules/drizzle-orm/pg-core/subquery.d.ts","../node_modules/drizzle-orm/pg-core/db.d.ts","../node_modules/drizzle-orm/pg-core/session.d.ts","../node_modules/drizzle-orm/pg-core/query-builders/delete.d.ts","../node_modules/drizzle-orm/pg-core/query-builders/update.d.ts","../node_modules/drizzle-orm/pg-core/query-builders/insert.d.ts","../node_modules/drizzle-orm/pg-core/query-builders/select.d.ts","../node_modules/drizzle-orm/pg-core/query-builders/index.d.ts","../node_modules/drizzle-orm/pg-core/dialect.d.ts","../node_modules/drizzle-orm/pg-core/query-builders/query-builder.d.ts","../node_modules/drizzle-orm/pg-core/view-common.d.ts","../node_modules/drizzle-orm/pg-core/view.d.ts","../node_modules/drizzle-orm/pg-core/query-builders/select.types.d.ts","../node_modules/drizzle-orm/pg-core/alias.d.ts","../node_modules/drizzle-orm/pg-core/schema.d.ts","../node_modules/drizzle-orm/pg-core/utils.d.ts","../node_modules/drizzle-orm/pg-core/utils/array.d.ts","../node_modules/drizzle-orm/pg-core/utils/index.d.ts","../node_modules/drizzle-orm/pg-core/index.d.ts","../node_modules/drizzle-orm/singlestore-core/columns/binary.d.ts","../node_modules/drizzle-orm/singlestore-core/columns/boolean.d.ts","../node_modules/drizzle-orm/singlestore-core/columns/char.d.ts","../node_modules/drizzle-orm/singlestore-core/columns/custom.d.ts","../node_modules/drizzle-orm/singlestore-core/columns/date.d.ts","../node_modules/drizzle-orm/singlestore-core/columns/datetime.d.ts","../node_modules/drizzle-orm/singlestore-core/columns/decimal.d.ts","../node_modules/drizzle-orm/singlestore-core/columns/double.d.ts","../node_modules/drizzle-orm/singlestore-core/columns/enum.d.ts","../node_modules/drizzle-orm/singlestore-core/columns/float.d.ts","../node_modules/drizzle-orm/singlestore-core/columns/int.d.ts","../node_modules/drizzle-orm/singlestore-core/columns/json.d.ts","../node_modules/drizzle-orm/singlestore-core/columns/mediumint.d.ts","../node_modules/drizzle-orm/singlestore-core/columns/real.d.ts","../node_modules/drizzle-orm/singlestore-core/columns/serial.d.ts","../node_modules/drizzle-orm/singlestore-core/columns/smallint.d.ts","../node_modules/drizzle-orm/singlestore-core/columns/text.d.ts","../node_modules/drizzle-orm/singlestore-core/columns/time.d.ts","../node_modules/drizzle-orm/singlestore-core/columns/date.common.d.ts","../node_modules/drizzle-orm/singlestore-core/columns/timestamp.d.ts","../node_modules/drizzle-orm/singlestore-core/columns/tinyint.d.ts","../node_modules/drizzle-orm/singlestore-core/columns/varbinary.d.ts","../node_modules/drizzle-orm/singlestore-core/columns/varchar.d.ts","../node_modules/drizzle-orm/singlestore-core/columns/vector.d.ts","../node_modules/drizzle-orm/singlestore-core/columns/year.d.ts","../node_modules/drizzle-orm/singlestore-core/columns/all.d.ts","../node_modules/drizzle-orm/singlestore-core/indexes.d.ts","../node_modules/drizzle-orm/singlestore-core/primary-keys.d.ts","../node_modules/drizzle-orm/singlestore-core/unique-constraint.d.ts","../node_modules/drizzle-orm/singlestore-core/table.d.ts","../node_modules/drizzle-orm/singlestore-core/columns/common.d.ts","../node_modules/drizzle-orm/singlestore-core/columns/bigint.d.ts","../node_modules/drizzle-orm/singlestore-core/columns/index.d.ts","../node_modules/drizzle-orm/singlestore-core/query-builders/delete.d.ts","../node_modules/drizzle-orm/singlestore-core/query-builders/update.d.ts","../node_modules/drizzle-orm/singlestore-core/query-builders/insert.d.ts","../node_modules/drizzle-orm/singlestore-core/dialect.d.ts","../node_modules/drizzle-orm/cache/core/index.d.ts","../node_modules/drizzle-orm/singlestore/session.d.ts","../node_modules/drizzle-orm/singlestore/driver.d.ts","../node_modules/drizzle-orm/singlestore-core/query-builders/count.d.ts","../node_modules/drizzle-orm/singlestore-core/subquery.d.ts","../node_modules/drizzle-orm/singlestore-core/query-builders/select.d.ts","../node_modules/drizzle-orm/singlestore-core/query-builders/query-builder.d.ts","../node_modules/drizzle-orm/singlestore-core/query-builders/index.d.ts","../node_modules/drizzle-orm/singlestore-core/db.d.ts","../node_modules/drizzle-orm/singlestore-core/session.d.ts","../node_modules/drizzle-orm/singlestore-core/query-builders/select.types.d.ts","../node_modules/drizzle-orm/singlestore-core/alias.d.ts","../node_modules/drizzle-orm/singlestore-core/schema.d.ts","../node_modules/drizzle-orm/singlestore-core/utils.d.ts","../node_modules/drizzle-orm/singlestore-core/index.d.ts","../node_modules/drizzle-orm/sqlite-core/checks.d.ts","../node_modules/drizzle-orm/sqlite-core/columns/custom.d.ts","../node_modules/drizzle-orm/sqlite-core/indexes.d.ts","../node_modules/drizzle-orm/sqlite-core/primary-keys.d.ts","../node_modules/drizzle-orm/sqlite-core/unique-constraint.d.ts","../node_modules/drizzle-orm/sqlite-core/view-base.d.ts","../node_modules/drizzle-orm/sqlite-core/query-builders/count.d.ts","../node_modules/drizzle-orm/sqlite-core/query-builders/query.d.ts","../node_modules/drizzle-orm/sqlite-core/subquery.d.ts","../node_modules/drizzle-orm/sqlite-core/db.d.ts","../node_modules/drizzle-orm/sqlite-core/query-builders/raw.d.ts","../node_modules/drizzle-orm/sqlite-core/session.d.ts","../node_modules/drizzle-orm/sqlite-core/query-builders/delete.d.ts","../node_modules/drizzle-orm/sqlite-core/query-builders/update.d.ts","../node_modules/drizzle-orm/sqlite-core/query-builders/insert.d.ts","../node_modules/drizzle-orm/sqlite-core/query-builders/select.d.ts","../node_modules/drizzle-orm/sqlite-core/query-builders/index.d.ts","../node_modules/drizzle-orm/sqlite-core/dialect.d.ts","../node_modules/drizzle-orm/sqlite-core/query-builders/query-builder.d.ts","../node_modules/drizzle-orm/sqlite-core/view.d.ts","../node_modules/drizzle-orm/sqlite-core/utils.d.ts","../node_modules/drizzle-orm/sqlite-core/columns/integer.d.ts","../node_modules/drizzle-orm/sqlite-core/columns/numeric.d.ts","../node_modules/drizzle-orm/sqlite-core/columns/real.d.ts","../node_modules/drizzle-orm/sqlite-core/columns/text.d.ts","../node_modules/drizzle-orm/sqlite-core/columns/all.d.ts","../node_modules/drizzle-orm/sqlite-core/table.d.ts","../node_modules/drizzle-orm/sqlite-core/foreign-keys.d.ts","../node_modules/drizzle-orm/sqlite-core/columns/common.d.ts","../node_modules/drizzle-orm/sqlite-core/columns/blob.d.ts","../node_modules/drizzle-orm/sqlite-core/columns/index.d.ts","../node_modules/drizzle-orm/sqlite-core/query-builders/select.types.d.ts","../node_modules/drizzle-orm/sqlite-core/alias.d.ts","../node_modules/drizzle-orm/sqlite-core/index.d.ts","../node_modules/drizzle-orm/column-builder.d.ts","../node_modules/drizzle-orm/gel-core/columns/date.common.d.cts","../node_modules/drizzle-orm/gel-core/columns/localdate.d.cts","../node_modules/drizzle-orm/gel-core/columns/localtime.d.cts","../node_modules/drizzle-orm/gel-core/columns/real.d.cts","../node_modules/drizzle-orm/gel-core/columns/relative-duration.d.cts","../node_modules/drizzle-orm/gel-core/columns/smallint.d.cts","../node_modules/drizzle-orm/gel-core/columns/text.d.cts","../node_modules/drizzle-orm/gel-core/columns/timestamp.d.cts","../node_modules/drizzle-orm/gel-core/columns/timestamptz.d.cts","../node_modules/drizzle-orm/gel-core/columns/uuid.d.cts","../node_modules/drizzle-orm/gel-core/columns/all.d.cts","../node_modules/drizzle-orm/gel-core/indexes.d.cts","../node_modules/drizzle-orm/gel-core/roles.d.cts","../node_modules/drizzle-orm/gel-core/policies.d.cts","../node_modules/drizzle-orm/gel-core/primary-keys.d.cts","../node_modules/drizzle-orm/gel-core/unique-constraint.d.cts","../node_modules/drizzle-orm/gel-core/table.d.cts","../node_modules/drizzle-orm/gel-core/foreign-keys.d.cts","../node_modules/drizzle-orm/gel-core/columns/common.d.cts","../node_modules/drizzle-orm/gel-core/columns/bigint.d.cts","../node_modules/drizzle-orm/gel-core/columns/index.d.cts","../node_modules/drizzle-orm/gel-core/view-base.d.cts","../node_modules/drizzle-orm/relations.d.cts","../node_modules/drizzle-orm/session.d.cts","../node_modules/drizzle-orm/gel-core/query-builders/count.d.cts","../node_modules/drizzle-orm/query-promise.d.cts","../node_modules/drizzle-orm/runnable-query.d.cts","../node_modules/drizzle-orm/gel-core/query-builders/query.d.cts","../node_modules/drizzle-orm/gel-core/query-builders/raw.d.cts","../node_modules/drizzle-orm/gel-core/subquery.d.cts","../node_modules/drizzle-orm/gel-core/db.d.cts","../node_modules/drizzle-orm/gel-core/session.d.cts","../node_modules/drizzle-orm/gel-core/query-builders/delete.d.cts","../node_modules/drizzle-orm/gel-core/query-builders/update.d.cts","../node_modules/drizzle-orm/gel-core/query-builders/insert.d.cts","../node_modules/drizzle-orm/gel-core/query-builders/refresh-materialized-view.d.cts","../node_modules/drizzle-orm/gel-core/query-builders/select.d.cts","../node_modules/drizzle-orm/gel-core/query-builders/index.d.cts","../node_modules/drizzle-orm/gel-core/dialect.d.cts","../node_modules/drizzle-orm/gel-core/query-builders/query-builder.d.cts","../node_modules/drizzle-orm/gel-core/view-common.d.cts","../node_modules/drizzle-orm/gel-core/view.d.cts","../node_modules/drizzle-orm/gel-core/query-builders/select.types.d.cts","../node_modules/drizzle-orm/gel-core/alias.d.cts","../node_modules/drizzle-orm/gel-core/schema.d.cts","../node_modules/drizzle-orm/gel-core/utils.d.cts","../node_modules/drizzle-orm/gel-core/index.d.cts","../node_modules/drizzle-orm/mysql-core/checks.d.cts","../node_modules/drizzle-orm/mysql-core/columns/binary.d.cts","../node_modules/drizzle-orm/mysql-core/columns/boolean.d.cts","../node_modules/drizzle-orm/mysql-core/columns/char.d.cts","../node_modules/drizzle-orm/mysql-core/columns/custom.d.cts","../node_modules/drizzle-orm/mysql-core/columns/date.d.cts","../node_modules/drizzle-orm/mysql-core/columns/datetime.d.cts","../node_modules/drizzle-orm/mysql-core/columns/decimal.d.cts","../node_modules/drizzle-orm/mysql-core/columns/double.d.cts","../node_modules/drizzle-orm/mysql-core/columns/enum.d.cts","../node_modules/drizzle-orm/mysql-core/columns/float.d.cts","../node_modules/drizzle-orm/mysql-core/columns/int.d.cts","../node_modules/drizzle-orm/mysql-core/columns/json.d.cts","../node_modules/drizzle-orm/mysql-core/columns/mediumint.d.cts","../node_modules/drizzle-orm/mysql-core/columns/real.d.cts","../node_modules/drizzle-orm/mysql-core/columns/serial.d.cts","../node_modules/drizzle-orm/mysql-core/columns/smallint.d.cts","../node_modules/drizzle-orm/mysql-core/columns/text.d.cts","../node_modules/drizzle-orm/mysql-core/columns/time.d.cts","../node_modules/drizzle-orm/mysql-core/columns/date.common.d.cts","../node_modules/drizzle-orm/mysql-core/columns/timestamp.d.cts","../node_modules/drizzle-orm/mysql-core/columns/tinyint.d.cts","../node_modules/drizzle-orm/mysql-core/columns/varbinary.d.cts","../node_modules/drizzle-orm/mysql-core/columns/varchar.d.cts","../node_modules/drizzle-orm/mysql-core/columns/year.d.cts","../node_modules/drizzle-orm/mysql-core/columns/all.d.cts","../node_modules/drizzle-orm/mysql-core/indexes.d.cts","../node_modules/drizzle-orm/mysql-core/primary-keys.d.cts","../node_modules/drizzle-orm/mysql-core/unique-constraint.d.cts","../node_modules/drizzle-orm/mysql-core/table.d.cts","../node_modules/drizzle-orm/mysql-core/foreign-keys.d.cts","../node_modules/drizzle-orm/mysql-core/columns/common.d.cts","../node_modules/drizzle-orm/mysql-core/columns/bigint.d.cts","../node_modules/drizzle-orm/mysql-core/columns/index.d.cts","../node_modules/drizzle-orm/migrator.d.cts","../node_modules/drizzle-orm/mysql-core/query-builders/delete.d.cts","../node_modules/drizzle-orm/mysql-core/subquery.d.cts","../node_modules/drizzle-orm/mysql-core/view-base.d.cts","../node_modules/drizzle-orm/mysql-core/query-builders/select.d.cts","../node_modules/drizzle-orm/mysql-core/query-builders/query-builder.d.cts","../node_modules/drizzle-orm/mysql-core/query-builders/update.d.cts","../node_modules/drizzle-orm/mysql-core/query-builders/insert.d.cts","../node_modules/drizzle-orm/mysql-core/dialect.d.cts","../node_modules/drizzle-orm/mysql-core/query-builders/count.d.cts","../node_modules/drizzle-orm/mysql-core/query-builders/index.d.cts","../node_modules/drizzle-orm/mysql-core/query-builders/query.d.cts","../node_modules/drizzle-orm/mysql-core/db.d.cts","../node_modules/drizzle-orm/mysql-core/session.d.cts","../node_modules/drizzle-orm/mysql-core/view-common.d.cts","../node_modules/drizzle-orm/mysql-core/view.d.cts","../node_modules/drizzle-orm/mysql-core/query-builders/select.types.d.cts","../node_modules/drizzle-orm/mysql-core/alias.d.cts","../node_modules/drizzle-orm/mysql-core/schema.d.cts","../node_modules/drizzle-orm/mysql-core/utils.d.cts","../node_modules/drizzle-orm/mysql-core/index.d.cts","../node_modules/drizzle-orm/pg-core/checks.d.cts","../node_modules/drizzle-orm/pg-core/columns/bigserial.d.cts","../node_modules/drizzle-orm/pg-core/columns/boolean.d.cts","../node_modules/drizzle-orm/pg-core/columns/char.d.cts","../node_modules/drizzle-orm/pg-core/columns/cidr.d.cts","../node_modules/drizzle-orm/pg-core/columns/custom.d.cts","../node_modules/drizzle-orm/pg-core/columns/date.common.d.cts","../node_modules/drizzle-orm/pg-core/columns/date.d.cts","../node_modules/drizzle-orm/pg-core/columns/double-precision.d.cts","../node_modules/drizzle-orm/pg-core/columns/inet.d.cts","../node_modules/drizzle-orm/pg-core/sequence.d.cts","../node_modules/drizzle-orm/pg-core/columns/int.common.d.cts","../node_modules/drizzle-orm/pg-core/columns/integer.d.cts","../node_modules/drizzle-orm/pg-core/columns/timestamp.d.cts","../node_modules/drizzle-orm/pg-core/columns/interval.d.cts","../node_modules/drizzle-orm/pg-core/columns/json.d.cts","../node_modules/drizzle-orm/pg-core/columns/jsonb.d.cts","../node_modules/drizzle-orm/pg-core/columns/line.d.cts","../node_modules/drizzle-orm/pg-core/columns/macaddr.d.cts","../node_modules/drizzle-orm/pg-core/columns/macaddr8.d.cts","../node_modules/drizzle-orm/pg-core/columns/numeric.d.cts","../node_modules/drizzle-orm/pg-core/columns/point.d.cts","../node_modules/drizzle-orm/pg-core/columns/postgis_extension/geometry.d.cts","../node_modules/drizzle-orm/pg-core/columns/real.d.cts","../node_modules/drizzle-orm/pg-core/columns/serial.d.cts","../node_modules/drizzle-orm/pg-core/columns/smallint.d.cts","../node_modules/drizzle-orm/pg-core/columns/smallserial.d.cts","../node_modules/drizzle-orm/pg-core/columns/text.d.cts","../node_modules/drizzle-orm/pg-core/columns/time.d.cts","../node_modules/drizzle-orm/pg-core/columns/uuid.d.cts","../node_modules/drizzle-orm/pg-core/columns/varchar.d.cts","../node_modules/drizzle-orm/pg-core/columns/vector_extension/bit.d.cts","../node_modules/drizzle-orm/pg-core/columns/vector_extension/halfvec.d.cts","../node_modules/drizzle-orm/pg-core/columns/vector_extension/sparsevec.d.cts","../node_modules/drizzle-orm/pg-core/columns/vector_extension/vector.d.cts","../node_modules/drizzle-orm/pg-core/columns/all.d.cts","../node_modules/drizzle-orm/pg-core/indexes.d.cts","../node_modules/drizzle-orm/pg-core/roles.d.cts","../node_modules/drizzle-orm/pg-core/policies.d.cts","../node_modules/drizzle-orm/pg-core/primary-keys.d.cts","../node_modules/drizzle-orm/pg-core/unique-constraint.d.cts","../node_modules/drizzle-orm/pg-core/table.d.cts","../node_modules/drizzle-orm/pg-core/foreign-keys.d.cts","../node_modules/drizzle-orm/pg-core/columns/common.d.cts","../node_modules/drizzle-orm/pg-core/columns/bigint.d.cts","../node_modules/drizzle-orm/pg-core/columns/enum.d.cts","../node_modules/drizzle-orm/pg-core/columns/index.d.cts","../node_modules/drizzle-orm/pg-core/view-base.d.cts","../node_modules/drizzle-orm/pg-core/query-builders/count.d.cts","../node_modules/drizzle-orm/pg-core/query-builders/query.d.cts","../node_modules/drizzle-orm/pg-core/query-builders/raw.d.cts","../node_modules/drizzle-orm/pg-core/query-builders/refresh-materialized-view.d.cts","../node_modules/drizzle-orm/pg-core/subquery.d.cts","../node_modules/drizzle-orm/pg-core/db.d.cts","../node_modules/drizzle-orm/pg-core/session.d.cts","../node_modules/drizzle-orm/pg-core/query-builders/delete.d.cts","../node_modules/drizzle-orm/pg-core/query-builders/update.d.cts","../node_modules/drizzle-orm/pg-core/query-builders/insert.d.cts","../node_modules/drizzle-orm/pg-core/query-builders/select.d.cts","../node_modules/drizzle-orm/pg-core/query-builders/index.d.cts","../node_modules/drizzle-orm/pg-core/dialect.d.cts","../node_modules/drizzle-orm/pg-core/query-builders/query-builder.d.cts","../node_modules/drizzle-orm/pg-core/view-common.d.cts","../node_modules/drizzle-orm/pg-core/view.d.cts","../node_modules/drizzle-orm/pg-core/query-builders/select.types.d.cts","../node_modules/drizzle-orm/pg-core/alias.d.cts","../node_modules/drizzle-orm/pg-core/schema.d.cts","../node_modules/drizzle-orm/pg-core/utils.d.cts","../node_modules/drizzle-orm/pg-core/utils/array.d.cts","../node_modules/drizzle-orm/pg-core/utils/index.d.cts","../node_modules/drizzle-orm/pg-core/index.d.cts","../node_modules/drizzle-orm/singlestore-core/columns/binary.d.cts","../node_modules/drizzle-orm/singlestore-core/columns/boolean.d.cts","../node_modules/drizzle-orm/singlestore-core/columns/char.d.cts","../node_modules/drizzle-orm/singlestore-core/columns/custom.d.cts","../node_modules/drizzle-orm/singlestore-core/columns/date.d.cts","../node_modules/drizzle-orm/singlestore-core/columns/datetime.d.cts","../node_modules/drizzle-orm/singlestore-core/columns/decimal.d.cts","../node_modules/drizzle-orm/singlestore-core/columns/double.d.cts","../node_modules/drizzle-orm/singlestore-core/columns/enum.d.cts","../node_modules/drizzle-orm/singlestore-core/columns/float.d.cts","../node_modules/drizzle-orm/singlestore-core/columns/int.d.cts","../node_modules/drizzle-orm/singlestore-core/columns/json.d.cts","../node_modules/drizzle-orm/singlestore-core/columns/mediumint.d.cts","../node_modules/drizzle-orm/singlestore-core/columns/real.d.cts","../node_modules/drizzle-orm/singlestore-core/columns/serial.d.cts","../node_modules/drizzle-orm/singlestore-core/columns/smallint.d.cts","../node_modules/drizzle-orm/singlestore-core/columns/text.d.cts","../node_modules/drizzle-orm/singlestore-core/columns/time.d.cts","../node_modules/drizzle-orm/singlestore-core/columns/date.common.d.cts","../node_modules/drizzle-orm/singlestore-core/columns/timestamp.d.cts","../node_modules/drizzle-orm/singlestore-core/columns/tinyint.d.cts","../node_modules/drizzle-orm/singlestore-core/columns/varbinary.d.cts","../node_modules/drizzle-orm/singlestore-core/columns/varchar.d.cts","../node_modules/drizzle-orm/singlestore-core/columns/vector.d.cts","../node_modules/drizzle-orm/singlestore-core/columns/year.d.cts","../node_modules/drizzle-orm/singlestore-core/columns/all.d.cts","../node_modules/drizzle-orm/singlestore-core/indexes.d.cts","../node_modules/drizzle-orm/singlestore-core/primary-keys.d.cts","../node_modules/drizzle-orm/singlestore-core/unique-constraint.d.cts","../node_modules/drizzle-orm/singlestore-core/table.d.cts","../node_modules/drizzle-orm/singlestore-core/columns/common.d.cts","../node_modules/drizzle-orm/singlestore-core/columns/bigint.d.cts","../node_modules/drizzle-orm/singlestore-core/columns/index.d.cts","../node_modules/drizzle-orm/singlestore-core/query-builders/delete.d.cts","../node_modules/drizzle-orm/singlestore-core/query-builders/update.d.cts","../node_modules/drizzle-orm/singlestore-core/query-builders/insert.d.cts","../node_modules/drizzle-orm/singlestore-core/dialect.d.cts","../node_modules/drizzle-orm/cache/core/index.d.cts","../node_modules/drizzle-orm/singlestore/session.d.cts","../node_modules/drizzle-orm/singlestore/driver.d.cts","../node_modules/drizzle-orm/singlestore-core/query-builders/count.d.cts","../node_modules/drizzle-orm/singlestore-core/subquery.d.cts","../node_modules/drizzle-orm/singlestore-core/query-builders/select.d.cts","../node_modules/drizzle-orm/singlestore-core/query-builders/query-builder.d.cts","../node_modules/drizzle-orm/singlestore-core/query-builders/index.d.cts","../node_modules/drizzle-orm/singlestore-core/db.d.cts","../node_modules/drizzle-orm/singlestore-core/session.d.cts","../node_modules/drizzle-orm/singlestore-core/query-builders/select.types.d.cts","../node_modules/drizzle-orm/singlestore-core/alias.d.cts","../node_modules/drizzle-orm/singlestore-core/schema.d.cts","../node_modules/drizzle-orm/singlestore-core/utils.d.cts","../node_modules/drizzle-orm/singlestore-core/index.d.cts","../node_modules/drizzle-orm/sqlite-core/checks.d.cts","../node_modules/drizzle-orm/sqlite-core/columns/custom.d.cts","../node_modules/drizzle-orm/sqlite-core/indexes.d.cts","../node_modules/drizzle-orm/sqlite-core/primary-keys.d.cts","../node_modules/drizzle-orm/sqlite-core/unique-constraint.d.cts","../node_modules/drizzle-orm/sqlite-core/view-base.d.cts","../node_modules/drizzle-orm/sqlite-core/query-builders/count.d.cts","../node_modules/drizzle-orm/sqlite-core/query-builders/query.d.cts","../node_modules/drizzle-orm/sqlite-core/subquery.d.cts","../node_modules/drizzle-orm/sqlite-core/db.d.cts","../node_modules/drizzle-orm/sqlite-core/query-builders/raw.d.cts","../node_modules/drizzle-orm/sqlite-core/session.d.cts","../node_modules/drizzle-orm/sqlite-core/query-builders/delete.d.cts","../node_modules/drizzle-orm/sqlite-core/query-builders/update.d.cts","../node_modules/drizzle-orm/sqlite-core/query-builders/insert.d.cts","../node_modules/drizzle-orm/sqlite-core/query-builders/select.d.cts","../node_modules/drizzle-orm/sqlite-core/query-builders/index.d.cts","../node_modules/drizzle-orm/sqlite-core/dialect.d.cts","../node_modules/drizzle-orm/sqlite-core/query-builders/query-builder.d.cts","../node_modules/drizzle-orm/sqlite-core/view.d.cts","../node_modules/drizzle-orm/sqlite-core/utils.d.cts","../node_modules/drizzle-orm/sqlite-core/columns/integer.d.cts","../node_modules/drizzle-orm/sqlite-core/columns/numeric.d.cts","../node_modules/drizzle-orm/sqlite-core/columns/real.d.cts","../node_modules/drizzle-orm/sqlite-core/columns/text.d.cts","../node_modules/drizzle-orm/sqlite-core/columns/all.d.cts","../node_modules/drizzle-orm/sqlite-core/table.d.cts","../node_modules/drizzle-orm/sqlite-core/foreign-keys.d.cts","../node_modules/drizzle-orm/sqlite-core/columns/common.d.cts","../node_modules/drizzle-orm/sqlite-core/columns/blob.d.cts","../node_modules/drizzle-orm/sqlite-core/columns/index.d.cts","../node_modules/drizzle-orm/sqlite-core/query-builders/select.types.d.cts","../node_modules/drizzle-orm/sqlite-core/alias.d.cts","../node_modules/drizzle-orm/sqlite-core/index.d.cts","../node_modules/drizzle-orm/column-builder.d.cts","../node_modules/drizzle-orm/column.d.cts","../node_modules/drizzle-orm/alias.d.cts","../node_modules/drizzle-orm/errors.d.cts","../node_modules/drizzle-orm/view-common.d.cts","../node_modules/drizzle-orm/index.d.cts","../worker/database/schema.ts","../worker/types/auth-types.ts","../worker/utils/authutils.ts","../node_modules/hono/dist/types/request/constants.d.ts","../node_modules/hono/dist/types/router.d.ts","../node_modules/hono/dist/types/utils/headers.d.ts","../node_modules/hono/dist/types/utils/http-status.d.ts","../node_modules/hono/dist/types/utils/types.d.ts","../node_modules/hono/dist/types/types.d.ts","../node_modules/hono/dist/types/utils/body.d.ts","../node_modules/hono/dist/types/request.d.ts","../node_modules/hono/dist/types/utils/mime.d.ts","../node_modules/hono/dist/types/context.d.ts","../node_modules/hono/dist/types/hono-base.d.ts","../node_modules/hono/dist/types/hono.d.ts","../node_modules/hono/dist/types/client/types.d.ts","../node_modules/hono/dist/types/client/client.d.ts","../node_modules/hono/dist/types/client/fetch-result-please.d.ts","../node_modules/hono/dist/types/client/utils.d.ts","../node_modules/hono/dist/types/client/index.d.ts","../node_modules/hono/dist/types/index.d.ts","../node_modules/hono/dist/types/http-exception.d.ts","../worker/utils/envs.ts","../worker/config/security.ts","../worker/config/index.ts","../node_modules/hono/dist/types/helper/factory/index.d.ts","../node_modules/drizzle-orm/batch.d.cts","../node_modules/drizzle-orm/d1/driver.d.cts","../node_modules/drizzle-orm/d1/session.d.cts","../node_modules/drizzle-orm/d1/index.d.cts","../worker/database/types.ts","../worker/database/database.ts","../worker/database/services/baseservice.ts","../worker/database/services/analyticsservice.ts","../worker/database/services/userservice.ts","../worker/utils/timeformatter.ts","../worker/database/services/appservice.ts","../worker/types/secretstemplates.ts","../worker/database/services/secretsservice.ts","../worker/agents/inferutils/config.ts","../worker/database/services/modelconfigservice.ts","../worker/database/services/modeltestservice.ts","../worker/database/index.ts","../node_modules/jose/dist/types/types.d.ts","../node_modules/jose/dist/types/jwe/compact/decrypt.d.ts","../node_modules/jose/dist/types/jwe/flattened/decrypt.d.ts","../node_modules/jose/dist/types/jwe/general/decrypt.d.ts","../node_modules/jose/dist/types/jwe/general/encrypt.d.ts","../node_modules/jose/dist/types/jws/compact/verify.d.ts","../node_modules/jose/dist/types/jws/flattened/verify.d.ts","../node_modules/jose/dist/types/jws/general/verify.d.ts","../node_modules/jose/dist/types/jwt/verify.d.ts","../node_modules/jose/dist/types/jwt/decrypt.d.ts","../node_modules/jose/dist/types/jwt/produce.d.ts","../node_modules/jose/dist/types/jwe/compact/encrypt.d.ts","../node_modules/jose/dist/types/jwe/flattened/encrypt.d.ts","../node_modules/jose/dist/types/jws/compact/sign.d.ts","../node_modules/jose/dist/types/jws/flattened/sign.d.ts","../node_modules/jose/dist/types/jws/general/sign.d.ts","../node_modules/jose/dist/types/jwt/sign.d.ts","../node_modules/jose/dist/types/jwt/encrypt.d.ts","../node_modules/jose/dist/types/jwk/thumbprint.d.ts","../node_modules/jose/dist/types/jwk/embedded.d.ts","../node_modules/jose/dist/types/jwks/local.d.ts","../node_modules/jose/dist/types/jwks/remote.d.ts","../node_modules/jose/dist/types/jwt/unsecured.d.ts","../node_modules/jose/dist/types/key/export.d.ts","../node_modules/jose/dist/types/key/import.d.ts","../node_modules/jose/dist/types/util/decode_protected_header.d.ts","../node_modules/jose/dist/types/util/decode_jwt.d.ts","../node_modules/jose/dist/types/util/errors.d.ts","../node_modules/jose/dist/types/key/generate_key_pair.d.ts","../node_modules/jose/dist/types/key/generate_secret.d.ts","../node_modules/jose/dist/types/util/base64url.d.ts","../node_modules/jose/dist/types/util/runtime.d.ts","../node_modules/jose/dist/types/index.d.ts","../worker/utils/jwtutils.ts","../worker/database/services/sessionservice.ts","../worker/utils/validationutils.ts","../worker/utils/passwordservice.ts","../worker/services/oauth/base.ts","../worker/services/oauth/google.ts","../worker/utils/githubutils.ts","../worker/services/oauth/github.ts","../worker/database/services/authservice.ts","../worker/middleware/auth/auth.ts","../worker/services/rate-limit/errors.ts","../worker/api/responses.ts","../worker/middleware/auth/routeauth.ts","../worker/types/appenv.ts","../worker/observability/sentry.ts","../worker/services/rate-limit/doratelimitstore.ts","../worker/services/rate-limit/kvratelimitstore.ts","../worker/services/rate-limit/ratelimits.ts","../worker/agents/domain/pure/dependencymanagement.ts","../worker/agents/output-formats/diff-formats/search-replace.ts","../worker/agents/output-formats/diff-formats/index.ts","../worker/agents/domain/pure/fileprocessing.ts","../worker/agents/domain/values/generationcontext.ts","../worker/agents/services/interfaces/icodingagent.ts","../worker/agents/services/implementations/codingagent.ts","../worker/agents/operations/common.ts","../worker/agents/utils/idgenerator.ts","../worker/agents/operations/userconversationprocessor.ts","../worker/agents/tools/toolkit/web-search.ts","../worker/agents/tools/toolkit/feedback.ts","../worker/agents/tools/toolkit/queue-request.ts","../worker/agents/tools/toolkit/get-logs.ts","../worker/agents/tools/toolkit/deploy-preview.ts","../worker/agents/tools/toolkit/deep-debugger.ts","../worker/agents/tools/toolkit/rename-project.ts","../worker/agents/tools/toolkit/alter-blueprint.ts","../worker/agents/assistants/assistant.ts","../worker/agents/assistants/codedebugger.ts","../worker/agents/tools/toolkit/read-files.ts","../worker/agents/tools/toolkit/exec-commands.ts","../worker/agents/tools/toolkit/run-analysis.ts","../worker/agents/tools/toolkit/regenerate-file.ts","../worker/agents/tools/toolkit/generate-files.ts","../worker/agents/tools/toolkit/wait.ts","../worker/agents/tools/toolkit/get-runtime-errors.ts","../worker/agents/tools/toolkit/wait-for-generation.ts","../worker/agents/tools/toolkit/wait-for-debug.ts","../worker/agents/tools/toolkit/git.ts","../worker/agents/tools/customtools.ts","../worker/agents/inferutils/core.ts","../worker/agents/inferutils/infer.ts","../worker/agents/assistants/projectsetup.ts","../node_modules/diff/libcjs/types.d.ts","../node_modules/diff/libcjs/diff/base.d.ts","../node_modules/diff/libcjs/diff/character.d.ts","../node_modules/diff/libcjs/diff/word.d.ts","../node_modules/diff/libcjs/diff/line.d.ts","../node_modules/diff/libcjs/diff/sentence.d.ts","../node_modules/diff/libcjs/diff/css.d.ts","../node_modules/diff/libcjs/diff/json.d.ts","../node_modules/diff/libcjs/diff/array.d.ts","../node_modules/diff/libcjs/patch/apply.d.ts","../node_modules/diff/libcjs/patch/parse.d.ts","../node_modules/diff/libcjs/patch/reverse.d.ts","../node_modules/diff/libcjs/patch/create.d.ts","../node_modules/diff/libcjs/convert/dmp.d.ts","../node_modules/diff/libcjs/convert/xml.d.ts","../node_modules/diff/libcjs/index.d.ts","../worker/agents/services/interfaces/ifilemanager.ts","../worker/agents/services/interfaces/istatemanager.ts","../worker/agents/services/implementations/filemanager.ts","../worker/agents/services/implementations/statemanager.ts","../worker/agents/services/interfaces/ideploymentmanager.ts","../worker/services/aigateway-proxy/controller.ts","../worker/agents/services/interfaces/iserviceoptions.ts","../worker/agents/services/implementations/baseagentservice.ts","../node_modules/@cloudflare/containers/dist/types/index.d.ts","../node_modules/@cloudflare/containers/dist/lib/container.d.ts","../node_modules/@cloudflare/containers/dist/lib/utils.d.ts","../node_modules/@cloudflare/containers/dist/index.d.ts","../node_modules/@cloudflare/sandbox/dist/index.d.ts","../node_modules/fflate/lib/browser.d.cts","../worker/services/sandbox/zipextractor.ts","../worker/services/sandbox/filetreebuilder.ts","../worker/services/sandbox/basesandboxservice.ts","../worker/services/deployer/types.ts","../worker/services/deployer/utils/index.ts","../worker/services/deployer/api/cloudflare-api.ts","../worker/services/deployer/deployer.ts","../node_modules/jsonc-parser/lib/umd/main.d.ts","../worker/services/deployer/deploy.ts","../worker/services/sandbox/resourceprovisioner.ts","../worker/services/sandbox/templateparser.ts","../worker/services/sandbox/types.ts","../worker/utils/urls.ts","../worker/services/sandbox/sandboxsdkclient.ts","../worker/services/sandbox/remotesandboxservice.ts","../worker/services/sandbox/factory.ts","../worker/agents/services/implementations/deploymentmanager.ts","../worker/agents/assistants/realtimecodefixer.ts","../worker/agents/operations/phaseimplementation.ts","../worker/agents/operations/fileregeneration.ts","../worker/agents/operations/phasegeneration.ts","../worker/agents/utils/operationerror.ts","../worker/agents/operations/screenshotanalysis.ts","../worker/agents/git/fs-adapter.ts","../worker/agents/git/git.ts","../worker/agents/git/index.ts","../worker/agents/operations/postphasecodefixer.ts","../worker/agents/utils/templatecustomizer.ts","../worker/agents/planning/blueprint.ts","../worker/agents/core/statemigration.ts","../worker/agents/utils/packagesyncer.ts","../worker/agents/core/simplegeneratoragent.ts","../worker/agents/core/smartgeneratoragent.ts","../worker/utils/dispatcherutils.ts","../node_modules/hono/dist/types/middleware/cors/index.d.ts","../node_modules/hono/dist/types/middleware/secure-headers/permissions-policy.d.ts","../node_modules/hono/dist/types/middleware/secure-headers/secure-headers.d.ts","../node_modules/hono/dist/types/middleware/secure-headers/index.d.ts","../worker/database/services/apikeyservice.ts","../worker/utils/inputvalidator.ts","../worker/api/controllers/auth/authschemas.ts","../worker/api/types/route-context.ts","../worker/services/csrf/csrfservice.ts","../worker/utils/errorhandling.ts","../worker/api/controllers/types.ts","../worker/api/controllers/basecontroller.ts","../worker/api/controllers/auth/controller.ts","../worker/api/honoadapter.ts","../worker/api/routes/authroutes.ts","../worker/api/controllers/apps/types.ts","../worker/api/controllers/apps/controller.ts","../worker/agents/planning/templateselector.ts","../worker/agents/index.ts","../worker/api/controllers/appview/types.ts","../worker/api/controllers/appview/controller.ts","../worker/api/routes/approutes.ts","../worker/api/controllers/user/types.ts","../worker/api/controllers/user/controller.ts","../worker/api/routes/userroutes.ts","../worker/api/controllers/stats/types.ts","../worker/api/controllers/stats/controller.ts","../worker/api/routes/statsroutes.ts","../worker/services/analytics/types.ts","../worker/services/analytics/aigatewayanalyticsservice.ts","../worker/api/controllers/analytics/types.ts","../worker/api/controllers/analytics/controller.ts","../worker/api/routes/analyticsroutes.ts","../worker/api/controllers/modelconfig/types.ts","../worker/api/controllers/modelconfig/byokhelper.ts","../worker/api/controllers/modelconfig/controller.ts","../worker/api/routes/modelconfigroutes.ts","../worker/database/services/modelprovidersservice.ts","../worker/api/controllers/modelproviders/types.ts","../worker/api/controllers/modelproviders/controller.ts","../worker/api/routes/modelproviderroutes.ts","../worker/services/github/index.ts","../worker/services/oauth/github-exporter.ts","../worker/api/controllers/githubexporter/controller.ts","../worker/api/routes/githubexporterroutes.ts","../worker/api/controllers/agent/types.ts","../worker/middleware/security/websocket.ts","../worker/api/controllers/agent/controller.ts","../worker/api/routes/codegenroutes.ts","../worker/api/controllers/screenshots/controller.ts","../worker/api/routes/imagesroutes.ts","../worker/api/controllers/sentry/tunnelcontroller.ts","../worker/api/routes/sentryroutes.ts","../worker/api/controllers/status/types.ts","../worker/api/controllers/status/controller.ts","../worker/api/routes/statusroutes.ts","../worker/api/routes/index.ts","../worker/app.ts","../worker/services/sandbox/request-handler.ts","../worker/api/handlers/git-cache.ts","../worker/api/handlers/git-protocol.ts","../worker/index.ts","../worker-configuration.d.ts","../worker/agents/output-formats/diff-formats/search-replace.test.ts","../worker/agents/output-formats/diff-formats/udiff-comprehensive.test.ts","../worker/agents/output-formats/diff-formats/udiff.test.ts","../worker/agents/output-formats/streaming-formats/scof-comprehensive.test.ts","../worker/agents/output-formats/streaming-formats/scof.test.ts","../worker/agents/output-formats/streaming-formats/xml-stream.ts","../worker/agents/output-formats/streaming-formats/xml-stream.test.ts","../worker/agents/services/interfaces/ianalysismanager.ts","../node_modules/@modelcontextprotocol/sdk/dist/cjs/server/auth/types.d.ts","../node_modules/@modelcontextprotocol/sdk/dist/cjs/types.d.ts","../node_modules/@modelcontextprotocol/sdk/dist/cjs/shared/transport.d.ts","../node_modules/@modelcontextprotocol/sdk/dist/cjs/shared/protocol.d.ts","../node_modules/@modelcontextprotocol/sdk/dist/cjs/client/index.d.ts","../node_modules/eventsource/dist/index.d.cts","../node_modules/@modelcontextprotocol/sdk/dist/cjs/shared/auth.d.ts","../node_modules/@modelcontextprotocol/sdk/dist/cjs/server/auth/errors.d.ts","../node_modules/@modelcontextprotocol/sdk/dist/cjs/client/auth.d.ts","../node_modules/@modelcontextprotocol/sdk/dist/cjs/client/sse.d.ts","../worker/agents/tools/mcpmanager.ts","../worker/api/controllers/secrets/types.ts","../worker/api/controllers/secrets/controller.ts","../worker/api/controllers/user-secrets/controller.ts","../worker/api/controllers/user-secrets/types.ts","../worker/api/routes/secretsroutes.ts","../worker/api/routes/usersecretsroutes.ts","../worker/services/cache/cacheservice.ts","../worker/services/cache/kvcache.ts","../worker/services/cache/wrapper.ts","../worker/services/sandbox/utils.ts","../worker/utils/images.ts","../node_modules/@cloudflare/vitest-pool-workers/types/cloudflare-test.d.ts"],"fileIdsList":[[50,70,119,509,578,1890],[50,70,119,484,509,575,576,577,1890],[50,70,119,508,1890],[50,70,119,1890],[50,70,119,919,1890],[50,70,119,1757,1758,1759,1890],[50,70,119,1757,1890],[50,70,119,1758,1890],[50,70,119,1760,1890],[50,70,119],[50,70,119,1870,1874,1875,1890],[50,70,119,495,1869,1870,1871,1890],[50,70,119,1869,1870,1873,1876,1890],[50,70,119,1874,1890],[50,70,119,495,1890],[50,70,119,495,1868,1869,1870,1890],[50,70,119,1869,1890],[50,70,119,495,1868,1890],[50,70,119,496,497,500,1890],[50,70,119,495,499,500,503,1890],[50,70,119,499,500,501,505,1890],[50,70,119,499,500,501,1890],[50,70,119,496,1890],[50,70,119,495,498,499,500,1890],[50,70,119,499,1890],[50,70,119,495,498,1890],[50,70,119,256,1890],[50,70,119,637,660,663,666,1890],[50,70,119,659,665,667,1890],[50,70,119,659,661,1890],[50,70,119,660,661,662,1890],[50,70,119,659,1890],[50,70,119,669,1890],[50,70,119,667,669,670,671,1890],[50,70,119,668,1890],[50,70,119,659,667,668,1890],[50,70,119,659,673,1890],[50,70,119,667,673,675,1890],[50,70,119,659,674,1890],[50,70,119,659,664,1890],[50,70,119,667,672,676,1890],[50,70,119,643,644,646,649,653,1890],[50,70,119,638,639,642,643,1890],[50,70,119,643,647,648,649,651,1890],[50,70,119,638,639,643,1890],[50,70,119,641,642,646,650,1890],[50,70,119,638,639,640,641,642,643,644,645,646,647,648,649,651,652,653,654,655,656,657,658,1890],[50,70,119,639,645,1890],[50,70,119,643,646,649,651,652,1890],[50,70,119,638,639,641,642,1890],[50,70,119,639,641,642,1890],[50,70,119,640,1890],[50,70,119,654,1890],[50,70,119,586,1890],[50,70,119,589,1890],[50,70,119,594,596,1890],[50,70,119,582,586,598,599,1890],[50,70,119,609,612,618,620,1890],[50,70,119,581,586,1890],[50,70,119,580,1890],[50,70,119,581,1890],[50,70,119,588,1890],[50,70,119,591,1890],[50,70,119,581,582,583,584,585,586,587,588,589,590,591,592,593,594,595,596,597,598,600,601,602,603,604,605,606,607,608,609,610,611,612,613,614,615,616,617,618,619,621,622,623,624,625,626,1890],[50,70,119,597,1890],[50,70,119,593,1890],[50,70,119,594,1890],[50,70,119,585,586,592,1890],[50,70,119,593,594,1890],[50,70,119,600,1890],[50,70,119,621,1890],[50,70,119,585,1890],[50,70,119,586,603,606,1890],[50,70,119,602,1890],[50,70,119,603,1890],[50,70,119,601,603,1890],[50,70,119,586,606,608,609,610,1890],[50,70,119,609,610,612,1890],[50,70,119,586,601,604,607,614,1890],[50,70,119,601,602,1890],[50,70,119,583,584,601,603,604,605,1890],[50,70,119,603,606,1890],[50,70,119,584,601,604,607,1890],[50,70,119,586,606,608,1890],[50,70,119,609,610,1890],[50,70,119,463,464,465,1890],[50,70,119,263,1890],[50,70,119,466,1890],[50,70,119,463,466,467,468,469,470,471,472,473,474,475,476,477,1890],[50,70,119,463,1890],[50,70,119,263,466,1890],[50,70,119,463,466,1890],[50,70,119,285,299,353,1890],[50,70,119,325,329,1890],[50,70,119,305,319,325,1890],[50,70,119,305,321,323,324,1890],[50,70,119,269,1890],[50,70,119,293,294,305,319,325,326,328,1890],[50,70,119,281,285,301,314,1890],[50,70,119,268,269,275,278,281,282,283,285,291,292,293,294,300,301,302,305,311,312,314,315,316,317,318,1890],[50,70,119,280,305,319,1890],[50,70,119,305,1890],[50,70,119,284,285,299,300,301,311,314,319,336,1890],[50,70,119,302,311,1890],[50,70,119,268,279,281,289,300,302,303,305,311,346,1890],[50,70,119,291,305,311,1890],[50,70,119,275,278,385,1890],[50,70,119,267,268,269,270,271,273,274,275,277,278,279,280,281,282,283,284,285,289,291,292,293,294,295,296,297,298,299,300,301,302,303,304,305,306,307,308,309,310,311,312,313,314,315,316,317,318,319,320,321,322,324,325,327,328,329,330,331,335,343,344,345,346,347,348,349,350,351,352,353,354,355,356,357,358,359,360,361,362,363,364,365,366,367,368,369,370,371,372,373,374,375,376,377,378,379,380,381,382,383,384,385,386,389,390,391,392,393,394,395,396,397,398,399,400,401,403,404,405,406,407,408,409,410,411,412,413,414,415,416,417,418,419,420,421,422,423,424,425,426,427,428,429,430,431,432,433,434,435,436,437,438,439,440,441,442,443,444,445,446,447,448,449,450,451,452,453,454,455,456,457,458,459,460,461,462,1890],[50,70,119,385,1890],[50,70,119,312,316,319,1890],[50,70,119,312,1890],[50,70,119,293,319,1890],[50,70,119,385,463,1890],[50,70,119,311,312,1890],[50,70,119,387,388,1890],[50,70,119,307,463,1890],[50,70,119,312,385,1890],[50,70,119,293,305,319,1890],[50,70,119,292,293,305,363,1890],[50,70,119,294,305,319,1890],[50,70,119,294,305,1890],[50,70,119,296,1890],[50,70,119,285,1890],[50,70,119,267,268,269,275,278,279,280,289,300,301,302,303,304,311,319,1890],[50,70,119,316,319,1890],[50,70,119,268,281,292,305,311,315,316,319,1890],[50,70,119,300,1890],[50,70,119,275,301,305,319,1890],[50,70,119,275,318,1890],[50,70,119,323,332,333,334,336,337,338,339,340,341,342,1890],[50,70,119,275,1890],[50,70,119,271,335,463,1890],[50,70,119,313,316,1890],[50,70,119,273,275,1890],[50,70,119,273,275,276,335,1890],[50,70,119,275,305,318,322,1890],[50,70,119,275,305,1890],[50,70,119,315,355,1890],[50,70,119,301,311,315,1890],[50,70,119,301,315,1890],[50,70,119,268,1890],[50,70,119,280,1890],[50,70,119,282,1890],[50,70,119,270,275,276,279,1890],[50,70,119,267,275,281,283,284,285,291,293,294,296,297,299,300,311,1890],[50,70,119,267,268,269,271,274,275,278,279,280,289,295,299,303,305,306,309,310,1890],[50,70,119,311,1890],[50,70,119,306,308,1890],[50,70,119,279,286,287,1890],[50,70,119,267,1890],[50,70,119,267,286,288,290,312,1890],[50,70,119,279,289,311,1890],[50,70,119,277,1890],[50,70,119,311,319,1890],[50,70,119,292,1890],[50,70,119,278,1890],[50,70,119,269,275,293,294,304,305,308,311,312,313,314,315,1890],[50,70,119,271,295,312,319,1890],[50,70,119,275,278,279,1890],[50,70,119,298,1890],[50,70,119,299,1890],[50,70,119,289,1890],[50,70,119,271,272,273,274,276,1890],[50,70,119,307,1890],[50,70,119,275,276,305,1890],[50,70,119,308,1890],[50,70,119,301,1890],[50,70,119,301,319,1890],[50,70,119,308,309,311,1890],[50,70,119,408,1890],[50,70,119,407,1890],[50,70,119,305,311,1890],[50,70,119,283,301,1890],[50,70,119,295,308,1890],[50,70,119,285,319,1890],[50,70,119,267,275,282,285,299,301,311,314,1890],[50,70,119,268,292,307,308,309,311,319,1890],[50,70,119,411,1890],[50,70,119,410,1890],[50,70,119,316,1890],[50,70,119,289,300,1890],[50,70,119,279,292,426,1890],[50,70,119,319,1890],[50,70,119,413,1890],[50,70,119,304,1890],[50,70,119,306,307,311,1890],[50,70,119,433,1890],[50,70,119,405,1890],[50,70,119,404,1890],[50,70,119,305,308,311,316,319,1890],[50,70,119,282,315,1890],[50,70,119,277,278,1890],[50,70,119,273,275,276,280,1890],[50,70,119,307,308,311,1890],[50,70,119,440,1890],[50,70,119,275,304,305,319,1890],[50,70,119,274,304,319,1890],[50,70,119,275,280,402,1890],[50,70,119,327,329,1890],[50,70,119,227,1890],[50,70,119,942,1890],[50,70,119,133,161,168,728,729,1890],[50,70,116,119,1890],[50,70,118,119,1890],[50,119,1890],[50,70,119,124,153,1890],[50,70,119,120,125,130,138,150,161,1890],[50,70,119,120,121,130,138,1890],[50,65,66,67,70,119,1890],[50,70,119,122,162,1890],[50,70,119,123,124,131,139,1890],[50,70,119,124,150,158,1890],[50,70,119,125,127,130,138,1890],[50,70,118,119,126,1890],[50,70,119,127,128,1890],[50,70,119,129,130,1890],[50,70,118,119,130,1890],[50,70,119,130,131,132,150,161,1890],[50,70,119,130,131,132,145,150,153,1890],[50,70,112,119,127,130,133,138,150,161,1890],[50,70,119,130,131,133,134,138,150,158,161,1890],[50,70,119,133,135,150,158,161,1890],[50,68,69,70,71,72,73,74,113,114,115,116,117,118,119,120,121,122,123,124,125,126,127,128,129,130,131,132,133,134,135,136,137,138,139,140,141,142,143,144,145,146,147,148,149,150,151,152,153,154,155,156,157,158,159,160,161,162,163,164,165,166,167,1890],[50,70,119,130,136,1890],[50,70,119,137,161,1890],[50,70,119,127,130,138,150,1890],[50,70,119,139,1890],[50,70,119,140,1890],[50,70,118,119,141,1890],[50,70,116,117,118,119,120,121,122,123,124,125,126,127,128,129,130,131,132,133,134,135,136,137,138,139,140,141,142,143,144,145,146,147,148,149,150,151,152,153,154,155,156,157,158,159,160,161,162,163,164,165,166,167,1890],[50,70,119,143,1890],[50,70,119,144,1890],[50,70,119,130,145,146,1890],[50,70,119,145,147,162,164,1890],[50,70,119,131,1890],[50,70,119,130,150,151,153,1890],[50,70,119,152,153,1890],[50,70,119,150,151,1890],[50,70,119,153,1890],[50,70,119,154,1890],[50,70,116,119,150,155,1890],[50,70,119,130,156,157,1890],[50,70,119,156,157,1890],[50,70,119,124,138,150,158,1890],[50,70,119,159,1890],[50,70,119,138,160,1890],[50,70,119,133,144,161,1890],[50,70,119,124,162,1890],[50,70,119,150,163,1890],[50,70,119,137,164,1890],[50,70,119,165,1890],[50,70,112,119,1890],[50,70,112,119,130,132,141,150,153,161,163,164,166,1890],[50,70,119,150,167,1890],[50,55,56,59,70,119,237,1890],[50,70,119,214,215,1890],[50,56,57,59,60,61,70,119,1890],[50,56,70,119,1890],[50,56,57,59,70,119,1890],[50,56,57,70,119,1890],[50,70,119,221,1890],[50,51,70,119,221,222,1890],[50,51,70,119,221,1890],[50,51,58,70,119,1890],[50,52,70,119,1890],[50,51,52,53,55,70,119,1890],[50,51,70,119,1890],[50,70,119,628,1890],[50,70,119,481,495,499,502,503,504,506,507,628,1890],[50,70,119,496,501,1890],[50,70,119,499,504,629,630,631,632,1890],[50,70,119,481,1890],[50,70,119,481,502,629,630,631,633,1890],[50,70,119,133,484,509,575,578,579,627,1890],[50,70,119,1733,1890],[50,70,119,1733,1734,1890],[50,70,119,1733,1734,1737,1890],[50,70,119,1733,1734,1735,1736,1737,1738,1739,1740,1741,1742,1743,1744,1745,1746,1747,1890],[50,70,119,1011,1016,1020,1362,1600,1890],[50,70,119,1043,1045,1049,1067,1068,1890],[50,70,119,1366,1599,1890],[50,70,119,1011,1012,1604,1890],[50,70,119,1043,1061,1062,1890],[50,70,119,1013,1890],[50,70,119,1063,1890],[50,70,119,1011,1021,1600,1890],[50,70,119,1043,1064,1068,1890],[50,70,119,1011,1020,1021,1386,1441,1512,1564,1598,1600,1890],[50,70,119,1043,1064,1067,1068,1126,1181,1252,1304,1338,1890],[50,70,119,1011,1016,1020,1021,1599,1890],[50,70,119,1043,1045,1064,1067,1339,1890],[50,70,119,1011,1021,1574,1631,1890],[50,70,119,1632,1633,1890],[50,70,119,1011,1012,1014,1020,1362,1550,1576,1582,1596,1598,1631,1890],[50,70,119,1011,1890],[50,70,119,1043,1890],[50,70,119,1356,1361,1382,1890],[50,70,119,1098,1103,1122,1890],[50,70,119,1011,1029,1356,1890],[50,70,119,1043,1058,1098,1890],[50,70,119,1033,1034,1035,1036,1037,1038,1039,1040,1041,1042,1341,1342,1343,1344,1345,1346,1347,1348,1349,1359,1890],[50,70,119,1072,1073,1074,1075,1076,1077,1078,1079,1080,1081,1083,1084,1085,1086,1087,1088,1089,1090,1091,1101,1890],[50,70,119,1011,1032,1358,1599,1600,1890],[50,70,119,1043,1068,1071,1100,1339,1890],[50,70,119,1011,1358,1599,1600,1890],[50,70,119,1043,1068,1100,1339,1890],[50,70,119,1011,1020,1021,1351,1356,1357,1599,1600,1890],[50,70,119,1043,1064,1067,1068,1093,1098,1099,1339,1890],[50,70,119,1011,1020,1021,1356,1358,1599,1600,1890],[50,70,119,1043,1064,1067,1068,1098,1100,1339,1890],[50,70,119,1011,1339,1358,1599,1890],[50,70,119,1043,1100,1339,1890],[50,70,119,1011,1356,1358,1599,1600,1890],[50,70,119,1043,1068,1098,1100,1339,1890],[50,70,119,1032,1033,1034,1035,1036,1037,1038,1039,1040,1041,1042,1341,1342,1343,1344,1345,1346,1347,1348,1349,1358,1359,1890],[50,70,119,1071,1072,1073,1074,1075,1076,1077,1078,1079,1080,1081,1083,1084,1085,1086,1087,1088,1089,1090,1091,1100,1101,1890],[50,70,119,1011,1031,1358,1599,1890],[50,70,119,1043,1070,1100,1339,1890],[50,70,119,1011,1340,1358,1599,1600,1890],[50,70,119,1043,1068,1082,1100,1339,1890],[50,70,119,1011,1340,1356,1358,1599,1600,1890],[50,70,119,1043,1068,1082,1098,1100,1339,1890],[50,70,119,1011,1013,1018,1020,1021,1026,1356,1360,1361,1362,1364,1367,1368,1369,1371,1377,1378,1382,1890],[50,70,119,1043,1049,1055,1059,1063,1064,1067,1098,1102,1103,1105,1107,1108,1109,1111,1117,1118,1122,1890],[50,70,119,1011,1020,1021,1356,1360,1362,1377,1381,1382,1890],[50,70,119,1043,1049,1064,1067,1098,1102,1117,1121,1122,1890],[50,70,119,1011,1356,1360,1890],[50,70,119,1043,1098,1102,1890],[50,70,119,1030,1031,1351,1352,1353,1354,1355,1356,1357,1360,1369,1370,1371,1377,1378,1380,1381,1383,1384,1385,1890],[50,70,119,1069,1070,1093,1094,1095,1096,1097,1098,1099,1102,1109,1110,1111,1117,1118,1120,1121,1123,1124,1125,1890],[50,70,119,1011,1020,1356,1360,1890],[50,70,119,1043,1067,1098,1102,1890],[50,70,119,1011,1020,1352,1356,1890],[50,70,119,1043,1067,1094,1098,1890],[50,70,119,1011,1020,1356,1371,1890],[50,70,119,1043,1067,1098,1111,1890],[50,70,119,1011,1018,1019,1020,1356,1365,1366,1371,1378,1382,1890],[50,70,119,1043,1053,1059,1066,1067,1098,1106,1111,1118,1122,1890],[50,70,119,1372,1373,1374,1375,1376,1379,1382,1890],[50,70,119,1112,1113,1114,1115,1116,1119,1122,1890],[50,70,119,1011,1016,1018,1019,1020,1026,1351,1356,1358,1365,1366,1371,1373,1378,1379,1382,1890],[50,70,119,1043,1045,1053,1055,1059,1066,1067,1093,1098,1100,1106,1111,1113,1118,1119,1122,1890],[50,70,119,1011,1018,1020,1026,1360,1369,1376,1378,1382,1890],[50,70,119,1043,1055,1059,1067,1102,1109,1116,1118,1122,1890],[50,70,119,1011,1020,1021,1356,1362,1365,1366,1371,1378,1890],[50,70,119,1043,1049,1053,1064,1067,1098,1106,1111,1118,1890],[50,70,119,1011,1020,1363,1365,1366,1890],[50,70,119,1043,1053,1067,1104,1106,1890],[50,70,119,1011,1020,1365,1366,1371,1378,1381,1890],[50,70,119,1043,1053,1067,1106,1111,1118,1121,1890],[50,70,119,1011,1012,1018,1019,1020,1021,1026,1356,1360,1361,1365,1366,1369,1371,1378,1382,1890],[50,70,119,1043,1053,1055,1059,1062,1064,1066,1067,1098,1102,1103,1106,1109,1111,1118,1122,1890],[50,70,119,1016,1017,1018,1019,1020,1021,1026,1356,1360,1361,1371,1376,1381,1890],[50,70,119,1044,1045,1055,1059,1064,1066,1067,1098,1102,1103,1111,1116,1121,1890],[50,70,119,1011,1016,1018,1019,1020,1021,1356,1358,1361,1365,1366,1371,1378,1382,1600,1890],[50,70,119,1043,1045,1053,1059,1064,1066,1067,1068,1098,1100,1103,1106,1111,1118,1122,1890],[50,70,119,1011,1020,1031,1356,1890],[50,70,119,1043,1067,1070,1098,1890],[50,70,119,1011,1012,1013,1021,1029,1362,1363,1370,1378,1382,1890],[50,70,119,1043,1049,1058,1062,1063,1064,1104,1110,1118,1122,1890],[50,70,119,1018,1019,1020,1890],[50,70,119,1059,1066,1067,1890],[50,70,119,1011,1016,1030,1350,1351,1353,1354,1355,1357,1358,1599,1890],[50,70,119,1043,1045,1069,1092,1093,1095,1096,1097,1099,1100,1339,1890],[50,70,119,1018,1020,1030,1067,1068,1121,1126,1339,1351,1353,1354,1355,1356,1357,1360,1361,1381,1890],[50,70,119,1059,1067,1068,1069,1093,1095,1096,1097,1098,1099,1102,1103,1121,1126,1339,1890],[50,70,119,1011,1020,1890],[50,70,119,1043,1067,1890],[50,70,119,1011,1019,1020,1021,1026,1358,1361,1379,1380,1599,1890],[50,70,119,1043,1055,1064,1066,1067,1100,1103,1119,1120,1339,1890],[50,70,119,1011,1014,1016,1017,1018,1021,1029,1362,1365,1599,1600,1601,1602,1603,1890],[50,70,119,1043,1044,1045,1049,1050,1051,1052,1053,1058,1059,1060,1064,1068,1339,1890],[50,70,119,1416,1424,1437,1890],[50,70,119,1156,1164,1177,1890],[50,70,119,1011,1020,1416,1890],[50,70,119,1043,1067,1156,1890],[50,70,119,1388,1389,1390,1391,1392,1393,1394,1395,1396,1397,1398,1399,1400,1401,1402,1403,1404,1405,1407,1408,1409,1410,1411,1419,1890],[50,70,119,1128,1129,1130,1131,1132,1133,1134,1135,1136,1137,1138,1139,1140,1141,1142,1143,1144,1145,1147,1148,1149,1150,1151,1159,1890],[50,70,119,1011,1418,1599,1600,1890],[50,70,119,1043,1068,1158,1339,1890],[50,70,119,1011,1021,1418,1599,1600,1890],[50,70,119,1043,1064,1068,1158,1339,1890],[50,70,119,1011,1020,1021,1416,1417,1599,1600,1890],[50,70,119,1043,1064,1067,1068,1156,1157,1339,1890],[50,70,119,1011,1020,1021,1416,1418,1599,1600,1890],[50,70,119,1043,1064,1067,1068,1156,1158,1339,1890],[50,70,119,1011,1021,1416,1418,1599,1600,1890],[50,70,119,1043,1064,1068,1156,1158,1339,1890],[50,70,119,1388,1389,1390,1391,1392,1393,1394,1395,1396,1397,1398,1399,1400,1401,1402,1403,1404,1405,1407,1408,1409,1410,1411,1418,1419,1890],[50,70,119,1128,1129,1130,1131,1132,1133,1134,1135,1136,1137,1138,1139,1140,1141,1142,1143,1144,1145,1147,1148,1149,1150,1151,1158,1159,1890],[50,70,119,1011,1398,1418,1599,1600,1890],[50,70,119,1043,1068,1138,1158,1339,1890],[50,70,119,1011,1021,1406,1599,1600,1890],[50,70,119,1043,1064,1068,1146,1339,1890],[50,70,119,1011,1013,1018,1020,1021,1362,1416,1423,1424,1429,1430,1431,1432,1434,1437,1890],[50,70,119,1043,1049,1059,1063,1064,1067,1156,1163,1164,1169,1170,1171,1172,1174,1177,1890],[50,70,119,1011,1020,1021,1362,1416,1418,1421,1422,1427,1428,1434,1437,1890],[50,70,119,1043,1049,1064,1067,1156,1158,1161,1162,1167,1168,1174,1177,1890],[50,70,119,1011,1416,1420,1890],[50,70,119,1043,1156,1160,1890],[50,70,119,1387,1413,1414,1415,1416,1417,1420,1423,1429,1431,1433,1434,1435,1436,1438,1439,1440,1890],[50,70,119,1127,1153,1154,1155,1156,1157,1160,1163,1169,1171,1173,1174,1175,1176,1178,1179,1180,1890],[50,70,119,1011,1020,1416,1420,1890],[50,70,119,1043,1067,1156,1160,1890],[50,70,119,1011,1020,1416,1424,1434,1890],[50,70,119,1043,1067,1156,1164,1174,1890],[50,70,119,1011,1018,1020,1021,1365,1416,1418,1429,1434,1437,1890],[50,70,119,1043,1053,1059,1064,1067,1156,1158,1169,1174,1177,1890],[50,70,119,1422,1425,1426,1427,1428,1437,1890],[50,70,119,1162,1165,1166,1167,1168,1177,1890],[50,70,119,1011,1012,1016,1020,1026,1365,1366,1416,1418,1426,1427,1429,1434,1437,1890],[50,70,119,1043,1045,1053,1055,1062,1067,1106,1156,1158,1166,1167,1169,1174,1177,1890],[50,70,119,1011,1018,1423,1425,1429,1437,1890],[50,70,119,1043,1059,1163,1165,1169,1177,1890],[50,70,119,1011,1020,1021,1362,1365,1416,1429,1434,1890],[50,70,119,1043,1049,1053,1064,1067,1156,1169,1174,1890],[50,70,119,1011,1012,1018,1019,1020,1021,1026,1365,1413,1416,1420,1423,1424,1429,1434,1437,1890],[50,70,119,1043,1053,1055,1059,1062,1064,1066,1067,1153,1156,1160,1163,1164,1169,1174,1177,1890],[50,70,119,1016,1017,1018,1019,1020,1021,1026,1416,1420,1424,1425,1434,1436,1890],[50,70,119,1044,1045,1055,1059,1064,1066,1067,1156,1160,1164,1165,1174,1176,1890],[50,70,119,1011,1012,1018,1020,1021,1365,1416,1418,1429,1434,1437,1600,1890],[50,70,119,1043,1053,1059,1062,1064,1067,1068,1156,1158,1169,1174,1177,1890],[50,70,119,1011,1416,1436,1890],[50,70,119,1043,1156,1176,1890],[50,70,119,1011,1012,1013,1020,1021,1362,1429,1433,1437,1890],[50,70,119,1043,1049,1062,1063,1064,1067,1169,1173,1177,1890],[50,70,119,1018,1019,1020,1026,1426,1890],[50,70,119,1055,1059,1066,1067,1166,1890],[50,70,119,1011,1016,1387,1412,1413,1414,1415,1417,1418,1599,1890],[50,70,119,1043,1045,1127,1152,1153,1154,1155,1157,1158,1339,1890],[50,70,119,1018,1061,1181,1387,1413,1414,1415,1416,1417,1424,1425,1436,1604,1890],[50,70,119,1059,1061,1127,1153,1154,1155,1156,1157,1164,1165,1176,1181,1890],[50,70,119,1011,1019,1020,1026,1420,1424,1426,1435,1599,1890],[50,70,119,1043,1055,1066,1067,1160,1164,1166,1175,1339,1890],[50,70,119,1016,1020,1600,1890],[50,70,119,1045,1067,1068,1890],[50,70,119,1483,1489,1506,1890],[50,70,119,1223,1229,1246,1890],[50,70,119,1011,1029,1483,1890],[50,70,119,1043,1058,1223,1890],[50,70,119,1443,1444,1445,1446,1447,1449,1450,1451,1454,1455,1456,1457,1458,1459,1460,1461,1462,1463,1464,1465,1466,1467,1468,1469,1470,1471,1472,1473,1474,1475,1476,1486,1890],[50,70,119,1183,1184,1185,1186,1187,1189,1190,1191,1194,1195,1196,1197,1198,1199,1200,1201,1202,1203,1204,1205,1206,1207,1208,1209,1210,1211,1212,1213,1214,1215,1216,1226,1890],[50,70,119,1011,1453,1485,1599,1600,1890],[50,70,119,1043,1068,1193,1225,1339,1890],[50,70,119,1011,1485,1599,1600,1890],[50,70,119,1043,1068,1225,1339,1890],[50,70,119,1011,1021,1485,1599,1600,1890],[50,70,119,1043,1064,1068,1225,1339,1890],[50,70,119,1011,1020,1021,1478,1483,1484,1599,1600,1890],[50,70,119,1043,1064,1067,1068,1218,1223,1224,1339,1890],[50,70,119,1011,1020,1021,1483,1485,1599,1600,1890],[50,70,119,1043,1064,1067,1068,1223,1225,1339,1890],[50,70,119,1011,1339,1485,1599,1890],[50,70,119,1043,1225,1339,1890],[50,70,119,1011,1021,1448,1485,1599,1600,1890],[50,70,119,1043,1064,1068,1188,1225,1339,1890],[50,70,119,1011,1021,1483,1485,1599,1600,1890],[50,70,119,1043,1064,1068,1223,1225,1339,1890],[50,70,119,1443,1444,1445,1446,1447,1449,1450,1451,1453,1454,1455,1456,1457,1458,1459,1460,1461,1462,1463,1464,1465,1466,1467,1468,1469,1470,1471,1472,1473,1474,1475,1476,1485,1486,1487,1890],[50,70,119,1183,1184,1185,1186,1187,1189,1190,1191,1193,1194,1195,1196,1197,1198,1199,1200,1201,1202,1203,1204,1205,1206,1207,1208,1209,1210,1211,1212,1213,1214,1215,1216,1225,1226,1227,1890],[50,70,119,1011,1452,1485,1599,1890],[50,70,119,1043,1192,1225,1339,1890],[50,70,119,1011,1455,1485,1599,1600,1890],[50,70,119,1043,1068,1195,1225,1339,1890],[50,70,119,1011,1483,1485,1599,1600,1890],[50,70,119,1043,1068,1223,1225,1339,1890],[50,70,119,1011,1448,1455,1483,1485,1599,1600,1890],[50,70,119,1043,1068,1188,1195,1223,1225,1339,1890],[50,70,119,1011,1021,1448,1483,1485,1599,1600,1890],[50,70,119,1043,1064,1068,1188,1223,1225,1339,1890],[50,70,119,1011,1013,1018,1020,1021,1362,1483,1488,1489,1490,1491,1492,1493,1494,1496,1501,1502,1505,1506,1890],[50,70,119,1043,1049,1059,1063,1064,1067,1223,1228,1229,1230,1231,1232,1233,1234,1236,1241,1242,1245,1246,1890],[50,70,119,1011,1020,1021,1362,1421,1483,1488,1496,1501,1505,1506,1890],[50,70,119,1043,1049,1064,1067,1161,1223,1228,1236,1241,1245,1246,1890],[50,70,119,1011,1483,1488,1890],[50,70,119,1043,1223,1228,1890],[50,70,119,1442,1452,1478,1479,1480,1481,1482,1483,1484,1488,1494,1495,1496,1501,1502,1504,1505,1507,1508,1509,1511,1890],[50,70,119,1182,1192,1218,1219,1220,1221,1222,1223,1224,1228,1234,1235,1236,1241,1242,1244,1245,1247,1248,1249,1251,1890],[50,70,119,1011,1020,1483,1488,1890],[50,70,119,1043,1067,1223,1228,1890],[50,70,119,1011,1020,1479,1483,1890],[50,70,119,1043,1067,1219,1223,1890],[50,70,119,1011,1020,1021,1483,1496,1890],[50,70,119,1043,1064,1067,1223,1236,1890],[50,70,119,1011,1012,1018,1019,1020,1026,1365,1366,1483,1496,1502,1506,1890],[50,70,119,1043,1053,1055,1059,1062,1066,1067,1106,1223,1236,1242,1246,1890],[50,70,119,1493,1497,1498,1499,1500,1503,1506,1890],[50,70,119,1233,1237,1238,1239,1240,1243,1246,1890],[50,70,119,1011,1012,1016,1018,1019,1020,1026,1365,1366,1478,1483,1485,1496,1498,1502,1503,1506,1890],[50,70,119,1043,1045,1053,1055,1059,1062,1066,1067,1106,1218,1223,1225,1236,1238,1242,1243,1246,1890],[50,70,119,1011,1018,1020,1488,1494,1500,1502,1506,1890],[50,70,119,1043,1059,1067,1228,1234,1240,1242,1246,1890],[50,70,119,1011,1020,1021,1362,1365,1366,1483,1496,1502,1890],[50,70,119,1043,1049,1053,1064,1067,1106,1223,1236,1242,1890],[50,70,119,1011,1020,1365,1366,1496,1502,1505,1890],[50,70,119,1043,1053,1067,1106,1236,1242,1245,1890],[50,70,119,1011,1012,1018,1019,1020,1021,1026,1365,1366,1483,1488,1489,1494,1496,1502,1506,1890],[50,70,119,1043,1053,1055,1059,1062,1064,1066,1067,1106,1223,1228,1229,1234,1236,1242,1246,1890],[50,70,119,1016,1017,1018,1019,1020,1021,1026,1483,1488,1489,1496,1500,1505,1890],[50,70,119,1044,1045,1055,1059,1064,1066,1067,1223,1228,1229,1236,1240,1245,1890],[50,70,119,1011,1012,1016,1018,1019,1020,1021,1026,1365,1366,1483,1485,1489,1496,1502,1506,1600,1890],[50,70,119,1043,1045,1053,1055,1059,1062,1064,1066,1067,1068,1106,1223,1225,1229,1236,1242,1246,1890],[50,70,119,1011,1020,1021,1452,1483,1487,1505,1890],[50,70,119,1043,1064,1067,1192,1223,1227,1245,1890],[50,70,119,1011,1012,1013,1021,1029,1362,1363,1495,1502,1506,1890],[50,70,119,1043,1049,1058,1062,1063,1064,1104,1235,1242,1246,1890],[50,70,119,1018,1019,1020,1026,1503,1890],[50,70,119,1055,1059,1066,1067,1243,1890],[50,70,119,1011,1016,1442,1477,1478,1480,1481,1482,1484,1485,1599,1890],[50,70,119,1043,1045,1182,1217,1218,1220,1221,1222,1224,1225,1339,1890],[50,70,119,1018,1020,1067,1068,1245,1252,1339,1442,1478,1480,1481,1482,1483,1484,1488,1489,1505,1890],[50,70,119,1059,1067,1068,1182,1218,1220,1221,1222,1223,1224,1228,1229,1245,1252,1339,1890],[50,70,119,1510,1890],[50,70,119,1250,1890],[50,70,119,1011,1019,1020,1021,1026,1485,1489,1503,1504,1599,1890],[50,70,119,1043,1055,1064,1066,1067,1225,1229,1243,1244,1339,1890],[50,70,119,1011,1029,1890],[50,70,119,1043,1058,1890],[50,70,119,1016,1017,1018,1020,1021,1599,1600,1890],[50,70,119,1044,1045,1059,1064,1067,1068,1339,1890],[50,70,119,1011,1016,1020,1021,1024,1061,1600,1890],[50,70,119,1043,1045,1048,1061,1064,1067,1068,1890],[50,70,119,1599,1890],[50,70,119,1339,1890],[50,70,119,1604,1890],[50,70,119,1061,1890],[50,70,119,1542,1560,1890],[50,70,119,1282,1300,1890],[50,70,119,1513,1514,1515,1516,1517,1518,1519,1520,1521,1522,1523,1524,1525,1526,1527,1528,1529,1530,1532,1533,1534,1535,1536,1537,1544,1890],[50,70,119,1253,1254,1255,1256,1257,1258,1259,1260,1261,1262,1263,1264,1265,1266,1267,1268,1269,1270,1272,1273,1274,1275,1276,1277,1284,1890],[50,70,119,1011,1543,1599,1600,1890],[50,70,119,1043,1068,1283,1339,1890],[50,70,119,1011,1021,1543,1599,1600,1890],[50,70,119,1043,1064,1068,1283,1339,1890],[50,70,119,1011,1021,1542,1599,1600,1890],[50,70,119,1043,1064,1068,1282,1339,1890],[50,70,119,1011,1020,1021,1542,1543,1599,1600,1890],[50,70,119,1043,1064,1067,1068,1282,1283,1339,1890],[50,70,119,1011,1021,1542,1543,1599,1600,1890],[50,70,119,1043,1064,1068,1282,1283,1339,1890],[50,70,119,1011,1021,1029,1543,1599,1600,1890],[50,70,119,1043,1058,1064,1068,1283,1339,1890],[50,70,119,1513,1514,1515,1516,1517,1518,1519,1520,1521,1522,1523,1524,1525,1526,1527,1528,1529,1530,1532,1533,1534,1535,1536,1537,1543,1544,1890],[50,70,119,1253,1254,1255,1256,1257,1258,1259,1260,1261,1262,1263,1264,1265,1266,1267,1268,1269,1270,1272,1273,1274,1275,1276,1277,1283,1284,1890],[50,70,119,1011,1523,1543,1599,1600,1890],[50,70,119,1043,1068,1263,1283,1339,1890],[50,70,119,1011,1021,1339,1531,1599,1600,1890],[50,70,119,1043,1064,1068,1271,1339,1890],[50,70,119,1011,1013,1018,1020,1362,1542,1549,1552,1553,1554,1557,1559,1560,1890],[50,70,119,1043,1049,1059,1063,1067,1282,1289,1292,1293,1294,1297,1299,1300,1890],[50,70,119,1011,1020,1021,1362,1421,1542,1543,1546,1547,1548,1559,1560,1890],[50,70,119,1043,1049,1064,1067,1161,1282,1283,1286,1287,1288,1299,1300,1890],[50,70,119,1539,1540,1541,1542,1545,1549,1554,1557,1558,1559,1561,1562,1563,1890],[50,70,119,1279,1280,1281,1282,1285,1289,1294,1297,1298,1299,1301,1302,1303,1890],[50,70,119,1011,1020,1542,1545,1890],[50,70,119,1043,1067,1282,1285,1890],[50,70,119,1011,1542,1545,1890],[50,70,119,1043,1282,1285,1890],[50,70,119,1011,1020,1542,1559,1890],[50,70,119,1043,1067,1282,1299,1890],[50,70,119,1011,1018,1020,1021,1365,1542,1543,1549,1559,1560,1890],[50,70,119,1043,1053,1059,1064,1067,1282,1283,1289,1299,1300,1890],[50,70,119,1546,1547,1548,1555,1556,1560,1890],[50,70,119,1286,1287,1288,1295,1296,1300,1890],[50,70,119,1011,1016,1020,1365,1366,1542,1543,1547,1549,1559,1560,1890],[50,70,119,1043,1045,1053,1067,1106,1282,1283,1287,1289,1299,1300,1890],[50,70,119,1011,1018,1549,1554,1555,1560,1890],[50,70,119,1043,1059,1289,1294,1295,1300,1890],[50,70,119,1011,1012,1018,1019,1020,1021,1026,1365,1542,1545,1549,1554,1559,1560,1890],[50,70,119,1043,1053,1055,1059,1062,1064,1066,1067,1282,1285,1289,1294,1299,1300,1890],[50,70,119,1016,1017,1018,1019,1020,1021,1026,1542,1545,1555,1559,1890],[50,70,119,1044,1045,1055,1059,1064,1066,1067,1282,1285,1295,1299,1890],[50,70,119,1011,1018,1020,1021,1365,1542,1543,1549,1559,1560,1600,1890],[50,70,119,1043,1053,1059,1064,1067,1068,1282,1283,1289,1299,1300,1890],[50,70,119,1011,1542,1890],[50,70,119,1043,1282,1890],[50,70,119,1011,1012,1013,1020,1021,1362,1549,1558,1560,1890],[50,70,119,1043,1049,1062,1063,1064,1067,1289,1298,1300,1890],[50,70,119,1018,1019,1020,1026,1556,1890],[50,70,119,1055,1059,1066,1067,1296,1890],[50,70,119,1011,1016,1538,1539,1540,1541,1543,1599,1890],[50,70,119,1043,1045,1278,1279,1280,1281,1283,1339,1890],[50,70,119,1018,1020,1068,1304,1339,1539,1540,1541,1542,1890],[50,70,119,1059,1067,1068,1279,1280,1281,1282,1304,1339,1890],[50,70,119,1011,1013,1014,1021,1362,1549,1551,1558,1890],[50,70,119,1043,1049,1052,1063,1064,1289,1291,1298,1890],[50,70,119,1011,1012,1014,1020,1021,1362,1549,1550,1559,1560,1890],[50,70,119,1043,1049,1052,1062,1064,1067,1289,1290,1299,1300,1890],[50,70,119,1020,1600,1890],[50,70,119,1067,1068,1890],[50,70,119,1022,1023,1890],[50,70,119,1046,1047,1890],[50,70,119,1025,1027,1890],[50,70,119,1054,1056,1890],[50,70,119,1020,1026,1600,1890],[50,70,119,1055,1067,1068,1890],[50,70,119,1020,1024,1028,1890],[50,70,119,1048,1057,1067,1890],[50,70,119,1011,1015,1016,1018,1019,1021,1600,1890],[50,70,119,1043,1045,1059,1064,1065,1066,1068,1890],[50,70,119,1570,1591,1596,1890],[50,70,119,1310,1331,1336,1890],[50,70,119,1011,1020,1591,1890],[50,70,119,1043,1067,1331,1890],[50,70,119,1566,1586,1587,1588,1589,1594,1890],[50,70,119,1306,1326,1327,1328,1329,1334,1890],[50,70,119,1011,1021,1593,1599,1600,1890],[50,70,119,1043,1064,1068,1333,1339,1890],[50,70,119,1011,1020,1021,1591,1592,1599,1600,1890],[50,70,119,1043,1064,1067,1068,1331,1332,1339,1890],[50,70,119,1011,1020,1021,1591,1593,1599,1600,1890],[50,70,119,1043,1064,1067,1068,1331,1333,1339,1890],[50,70,119,1566,1586,1587,1588,1589,1593,1594,1890],[50,70,119,1306,1326,1327,1328,1329,1333,1334,1890],[50,70,119,1011,1021,1585,1591,1593,1599,1600,1890],[50,70,119,1043,1064,1068,1325,1331,1333,1339,1890],[50,70,119,1011,1593,1599,1600,1890],[50,70,119,1043,1068,1333,1339,1890],[50,70,119,1011,1021,1591,1593,1599,1600,1890],[50,70,119,1043,1064,1068,1331,1333,1339,1890],[50,70,119,1011,1013,1018,1020,1021,1362,1570,1571,1572,1573,1576,1581,1582,1591,1596,1890],[50,70,119,1043,1049,1059,1063,1064,1067,1310,1311,1312,1313,1316,1321,1322,1331,1336,1890],[50,70,119,1011,1020,1021,1362,1421,1576,1581,1591,1595,1596,1890],[50,70,119,1043,1049,1064,1067,1161,1316,1321,1331,1335,1336,1890],[50,70,119,1011,1591,1595,1890],[50,70,119,1043,1331,1335,1890],[50,70,119,1565,1567,1568,1569,1573,1574,1576,1581,1582,1584,1585,1591,1592,1595,1597,1890],[50,70,119,1305,1307,1308,1309,1313,1314,1316,1321,1322,1324,1325,1331,1332,1335,1337,1890],[50,70,119,1011,1020,1591,1595,1890],[50,70,119,1043,1067,1331,1335,1890],[50,70,119,1011,1020,1576,1584,1591,1890],[50,70,119,1043,1067,1316,1324,1331,1890],[50,70,119,1011,1018,1019,1020,1021,1365,1366,1576,1582,1591,1593,1596,1890],[50,70,119,1043,1053,1059,1064,1066,1067,1106,1316,1322,1331,1333,1336,1890],[50,70,119,1577,1578,1579,1580,1583,1596,1890],[50,70,119,1317,1318,1319,1320,1323,1336,1890],[50,70,119,1011,1018,1019,1020,1021,1026,1365,1366,1567,1576,1578,1582,1583,1591,1593,1596,1890],[50,70,119,1043,1053,1055,1059,1064,1066,1067,1106,1307,1316,1318,1322,1323,1331,1333,1336,1890],[50,70,119,1011,1018,1573,1580,1582,1596,1890],[50,70,119,1043,1059,1313,1320,1322,1336,1890],[50,70,119,1011,1020,1021,1362,1365,1366,1576,1582,1591,1890],[50,70,119,1043,1049,1053,1064,1067,1106,1316,1322,1331,1890],[50,70,119,1011,1020,1067,1363,1365,1366,1582,1890],[50,70,119,1043,1053,1067,1104,1106,1322,1890],[50,70,119,1011,1012,1018,1019,1020,1021,1026,1365,1366,1570,1573,1576,1582,1591,1595,1596,1890],[50,70,119,1043,1053,1055,1059,1062,1064,1066,1067,1106,1310,1313,1316,1322,1331,1335,1336,1890],[50,70,119,1016,1017,1018,1019,1020,1021,1026,1570,1576,1580,1584,1591,1595,1890],[50,70,119,1044,1045,1055,1059,1064,1066,1067,1310,1316,1320,1324,1331,1335,1890],[50,70,119,1011,1018,1019,1020,1021,1365,1366,1570,1576,1582,1591,1593,1596,1600,1890],[50,70,119,1043,1053,1059,1064,1066,1067,1068,1106,1310,1316,1322,1331,1333,1336,1890],[50,70,119,1011,1012,1013,1020,1362,1363,1365,1574,1575,1582,1596,1890],[50,70,119,1043,1049,1053,1062,1063,1067,1104,1314,1315,1322,1336,1890],[50,70,119,1018,1019,1020,1026,1583,1890],[50,70,119,1055,1059,1066,1067,1323,1890],[50,70,119,1011,1016,1565,1567,1568,1569,1590,1592,1593,1599,1890],[50,70,119,1043,1045,1305,1307,1308,1309,1330,1332,1333,1339,1890],[50,70,119,1011,1591,1593,1890],[50,70,119,1043,1331,1333,1890],[50,70,119,1018,1020,1067,1338,1565,1567,1568,1569,1570,1584,1591,1592,1890],[50,70,119,1059,1067,1305,1307,1308,1309,1310,1324,1331,1332,1338,1890],[50,70,119,1011,1019,1020,1026,1570,1583,1593,1599,1890],[50,70,119,1043,1055,1066,1067,1310,1323,1333,1339,1890],[50,70,119,1011,1017,1020,1021,1600,1890],[50,70,119,1043,1044,1064,1067,1068,1890],[50,70,119,1013,1014,1016,1020,1600,1890],[50,70,119,1045,1052,1063,1067,1068,1890],[50,70,119,243,244,1890],[50,70,119,243,244,245,246,1890],[50,70,119,243,245,1890],[50,70,119,243,1890],[50,70,119,732,733,1890],[50,70,119,133,150,168,1890],[50,70,119,1612,1619,1620,1890],[50,70,119,1620,1621,1623,1890],[50,70,119,1611,1612,1613,1618,1619,1890],[50,70,119,1611,1620,1622,1890],[50,70,119,1609,1610,1611,1612,1613,1615,1616,1890],[50,70,119,1613,1618,1619,1890],[50,70,119,1609,1613,1617,1890],[50,70,119,1613,1618,1890],[50,70,119,1611,1890],[50,70,119,1613,1615,1617,1619,1624,1890],[50,70,119,1613,1617,1890],[50,70,119,1625,1799,1890],[50,70,119,1613,1617,1798,1890],[50,70,119,1608,1609,1610,1612,1613,1614,1890],[50,70,119,1610,1611,1612,1617,1618,1890],[50,70,119,1615,1890],[50,70,119,1648,1649,1650,1651,1652,1653,1654,1655,1656,1657,1658,1659,1660,1661,1662,1663,1664,1665,1666,1667,1668,1669,1670,1671,1672,1673,1674,1675,1676,1677,1678,1679,1890],[50,70,119,1648,1890],[50,70,119,1648,1658,1890],[50,70,119,953,954,955,956,961,964,1890],[50,70,119,952,953,954,956,961,964,1890],[50,70,119,952,953,956,961,964,1890],[50,70,119,988,989,993,1890],[50,70,119,956,988,990,993,1890],[50,70,119,956,988,990,992,1890],[50,70,119,952,956,988,990,991,993,1890],[50,70,119,990,993,994,1890],[50,70,119,956,988,990,993,995,1890],[50,70,119,966,967,987,1890],[50,70,119,952,988,990,993,1890],[50,70,119,952,1890],[50,70,119,968,969,970,971,972,973,974,975,976,977,978,979,980,981,982,983,984,985,986,1890],[50,70,119,942,952,1890],[50,70,119,998,1890],[50,70,119,953,956,959,960,964,1890],[50,70,119,953,956,961,964,1890],[50,70,119,953,956,961,962,963,1890],[50,70,119,133,168,731,734,1890],[50,70,119,826,828,831,910,1890],[50,70,119,685,737,740,819,1890],[50,70,119,826,827,828,831,832,833,836,837,840,842,856,862,863,864,865,866,867,868,869,873,883,886,888,892,900,901,903,905,909,912,914,1890],[50,70,119,685,736,737,740,741,742,745,746,749,751,765,771,772,773,774,775,776,777,778,782,792,795,797,801,809,810,812,814,818,821,823,1890],[50,70,119,827,835,910,1890],[50,70,119,736,744,819,1890],[50,70,119,831,835,836,910,1890],[50,70,119,740,744,745,819,1890],[50,70,119,910,1890],[50,70,119,819,1890],[50,70,119,829,910,1890],[50,70,119,738,819,1890],[50,70,119,838,839,1890],[50,70,119,747,748,1890],[50,70,119,833,1890],[50,70,119,742,1890],[50,70,119,495,852,856,857,914,1890],[50,70,119,833,836,837,840,846,910,1890],[50,70,119,742,745,746,749,755,819,1890],[50,70,119,831,834,910,1890],[50,70,119,740,743,819,1890],[50,70,119,826,827,828,830,1890],[50,70,119,685,736,737,739,1890],[50,70,119,826,1890],[50,70,119,685,1890],[50,70,112,119,727,730,735,1890],[50,70,119,826,831,910,1890],[50,70,119,685,740,819,1890],[50,70,119,831,910,1890],[50,70,119,740,819,1890],[50,70,119,831,845,847,849,858,860,861,863,1890],[50,70,119,740,754,756,758,767,769,770,772,1890],[50,70,119,829,831,849,874,875,877,878,879,1890],[50,70,119,738,740,758,783,784,786,787,788,1890],[50,70,119,845,847,850,857,860,1890],[50,70,119,754,756,759,766,769,1890],[50,70,119,829,831,845,847,850,862,1890],[50,70,119,738,740,754,756,759,771,1890],[50,70,119,829,845,847,850,851,857,860,1890],[50,70,119,738,754,756,759,760,766,769,1890],[50,70,119,848,1890],[50,70,119,757,1890],[50,70,119,841,845,856,1890],[50,70,119,750,754,765,1890],[50,70,119,856,1890],[50,70,119,765,1890],[50,70,119,831,847,849,852,853,856,1890],[50,70,119,740,756,758,761,762,765,1890],[50,70,119,845,856,857,1890],[50,70,119,754,765,766,1890],[50,70,119,858,859,861,1890],[50,70,119,767,768,770,1890],[50,70,119,837,1890],[50,70,119,746,1890],[50,70,119,914,1890],[50,70,119,823,1890],[50,70,119,870,871,872,911,1890],[50,70,119,779,780,781,820,1890],[50,70,119,831,836,911,1890],[50,70,119,740,745,820,1890],[50,70,119,830,831,836,840,871,873,911,1890],[50,70,119,739,740,745,749,780,782,820,1890],[50,70,119,831,836,840,871,873,911,1890],[50,70,119,740,745,749,780,782,820,1890],[50,70,119,831,836,837,841,842,911,1890],[50,70,119,740,745,746,750,751,820,1890],[50,70,119,831,836,837,841,874,875,876,877,878,911,1890],[50,70,119,740,745,746,750,783,784,785,786,787,820,1890],[50,70,119,878,879,882,911,1890],[50,70,119,787,788,791,820,1890],[50,70,119,841,880,881,882,911,1890],[50,70,119,750,789,790,791,820,1890],[50,70,119,831,836,837,841,879,911,1890],[50,70,119,740,745,746,750,788,820,1890],[50,70,119,830,831,836,837,841,874,875,876,877,878,879,911,1890],[50,70,119,739,740,745,746,750,783,784,785,786,787,788,820,1890],[50,70,119,831,836,837,841,875,911,1890],[50,70,119,740,745,746,750,784,820,1890],[50,70,119,830,831,836,841,874,876,877,878,879,911,1890],[50,70,119,739,740,745,750,783,785,786,787,788,820,1890],[50,70,119,841,862,911,1890],[50,70,119,750,771,820,1890],[50,70,119,844,1890],[50,70,119,753,1890],[50,70,119,830,831,836,837,841,843,850,851,857,858,860,861,862,863,911,1890],[50,70,119,739,740,745,746,750,752,759,760,766,767,769,770,771,772,820,1890],[50,70,119,843,862,1890],[50,70,119,752,771,1890],[50,70,119,831,837,862,911,1890],[50,70,119,740,746,771,820,1890],[50,70,119,844,912,1890],[50,70,119,753,821,1890],[50,70,119,830,831,836,862,863,911,1890],[50,70,119,739,740,745,771,772,820,1890],[50,70,119,831,836,837,885,911,1890],[50,70,119,740,745,746,794,820,1890],[50,70,119,831,836,837,840,884,911,1890],[50,70,119,740,745,746,749,793,820,1890],[50,70,119,831,836,841,856,887,911,1890],[50,70,119,740,745,750,765,796,820,1890],[50,70,119,831,836,837,856,888,911,1890],[50,70,119,740,745,746,765,797,820,1890],[50,70,119,831,836,837,841,856,889,891,911,1890],[50,70,119,740,745,746,750,765,798,800,820,1890],[50,70,119,831,836,837,891,911,1890],[50,70,119,740,745,746,800,820,1890],[50,70,119,831,836,837,841,856,862,890,911,1890],[50,70,119,740,745,746,750,765,771,799,820,1890],[50,70,119,831,836,837,840,911,1890],[50,70,119,740,745,746,749,820,1890],[50,70,119,894,911,1890],[50,70,119,803,820,1890],[50,70,119,831,836,889,911,1890],[50,70,119,740,745,798,820,1890],[50,70,119,896,911,1890],[50,70,119,805,820,1890],[50,70,119,831,836,837,911,1890],[50,70,119,740,745,746,820,1890],[50,70,119,893,895,897,899,911,1890],[50,70,119,802,804,806,808,820,1890],[50,70,119,831,837,911,1890],[50,70,119,740,746,820,1890],[50,70,119,831,836,837,841,893,898,911,1890],[50,70,119,740,745,746,750,802,807,820,1890],[50,70,119,889,911,1890],[50,70,119,798,820,1890],[50,70,119,841,856,911,1890],[50,70,119,750,765,820,1890],[50,70,119,830,831,836,840,866,911,1890],[50,70,119,739,740,745,749,775,820,1890],[50,70,119,841,842,856,863,864,865,866,867,868,869,873,883,886,888,892,900,901,903,905,909,913,1890],[50,70,119,750,751,765,772,773,774,775,776,777,778,782,792,795,797,801,809,810,812,814,818,822,1890],[50,70,119,831,836,856,902,903,911,1890],[50,70,119,740,745,765,811,812,820,1890],[50,70,119,841,856,902,903,911,1890],[50,70,119,750,765,811,812,820,1890],[50,70,119,831,837,856,911,1890],[50,70,119,740,746,765,820,1890],[50,70,119,830,831,836,837,841,852,854,855,856,911,1890],[50,70,119,739,740,745,746,750,761,763,764,765,820,1890],[50,70,119,831,836,840,911,1890],[50,70,119,740,745,749,820,1890],[50,70,119,831,836,865,904,911,1890],[50,70,119,740,745,774,813,820,1890],[50,70,119,831,836,837,906,907,909,911,1890],[50,70,119,740,745,746,815,816,818,820,1890],[50,70,119,831,836,837,906,909,911,1890],[50,70,119,740,745,746,815,818,820,1890],[50,70,119,831,836,837,841,907,908,911,1890],[50,70,119,740,745,746,750,816,817,820,1890],[50,70,119,828,911,1890],[50,70,119,737,820,1890],[50,70,119,739,1890],[50,70,119,840,1890],[50,70,119,749,1890],[50,70,119,201,1890],[50,70,119,199,201,1890],[50,70,119,190,198,199,200,202,204,1890],[50,70,119,188,1890],[50,70,119,191,196,201,204,1890],[50,70,119,187,204,1890],[50,70,119,191,192,195,196,197,204,1890],[50,70,119,191,192,193,195,196,204,1890],[50,70,119,188,189,190,191,192,196,197,198,200,201,202,204,1890],[50,70,119,204,1890],[50,70,119,186,188,189,190,191,192,193,195,196,197,198,199,200,201,202,203,1890],[50,70,119,186,204,1890],[50,70,119,191,193,194,196,197,204,1890],[50,70,119,195,204,1890],[50,70,119,196,197,201,204,1890],[50,70,119,189,199,1890],[50,70,119,965,995,996,1890],[50,70,119,997,1890],[50,70,119,951,952,953,956,957,958,961,964,993,1890],[50,70,119,946,951,952,956,958,993,1890],[50,54,70,119,1890],[50,70,119,948,1890],[50,70,84,88,119,161,1890],[50,70,84,119,150,161,1890],[50,70,79,119,1890],[50,70,81,84,119,158,161,1890],[50,70,119,138,158,1890],[50,70,119,168,1890],[50,70,79,119,168,1890],[50,70,81,84,119,138,161,1890],[50,70,76,77,80,83,119,130,150,161,1890],[50,70,84,91,119,1890],[50,70,76,82,119,1890],[50,70,84,105,106,119,1890],[50,70,80,84,119,153,161,168,1890],[50,70,105,119,168,1890],[50,70,78,79,119,168,1890],[50,70,84,119,1890],[50,70,78,79,80,81,82,83,84,85,86,88,89,90,91,92,93,94,95,96,97,98,99,100,101,102,103,104,106,107,108,109,110,111,119,1890],[50,70,84,99,119,1890],[50,70,84,91,92,119,1890],[50,70,82,84,92,93,119,1890],[50,70,83,119,1890],[50,70,76,79,84,119,1890],[50,70,84,88,92,93,119,1890],[50,70,88,119,1890],[50,70,82,84,87,119,161,1890],[50,70,76,81,84,91,119,1890],[50,70,119,150,1890],[50,70,79,84,105,119,166,168,1890],[50,70,119,726,1890],[50,70,119,161,692,695,698,699,1890],[50,70,119,150,161,695,1890],[50,70,119,161,695,699,1890],[50,70,119,689,1890],[50,70,119,693,1890],[50,70,119,161,691,692,695,1890],[50,70,119,168,689,1890],[50,70,119,138,161,691,695,1890],[50,70,119,130,150,161,686,687,688,690,694,1890],[50,70,119,695,703,711,1890],[50,70,119,687,693,1890],[50,70,119,695,720,721,1890],[50,70,119,153,161,168,687,690,695,1890],[50,70,119,695,1890],[50,70,119,161,691,695,1890],[50,70,119,686,1890],[50,70,119,689,690,691,693,694,695,696,697,699,700,701,702,703,704,705,706,707,708,709,710,711,712,713,714,715,716,717,718,719,721,722,723,724,725,1890],[50,70,119,127,695,713,716,1890],[50,70,119,695,703,704,705,1890],[50,70,119,693,695,704,706,1890],[50,70,119,694,1890],[50,70,119,687,689,695,1890],[50,70,119,695,699,704,706,1890],[50,70,119,699,1890],[50,70,119,161,693,695,698,1890],[50,70,119,687,691,695,703,1890],[50,70,119,695,713,1890],[50,70,119,706,1890],[50,70,119,153,166,168,689,695,720,1890],[50,70,119,946,950,1890],[50,70,119,942,946,947,949,951,958,1890],[50,70,119,943,1890],[50,70,119,944,945,1890],[50,70,119,942,944,946,1890],[50,70,119,218,219,1890],[50,70,119,218,1890],[50,62,70,119,229,230,239,1890],[50,51,59,62,70,119,223,224,239,1890],[50,70,119,232,1890],[50,63,70,119,1890],[50,51,62,64,70,119,223,231,238,239,1890],[50,70,119,216,1890],[50,51,56,59,62,64,70,119,122,131,150,213,216,217,220,223,225,226,228,231,233,234,239,240,1890],[50,62,70,119,229,230,231,239,1890],[50,70,119,213,235,240,1890],[50,62,64,70,119,220,223,225,239,1890],[50,70,119,166,226,1890],[50,51,56,59,62,63,64,70,119,122,131,150,166,213,216,217,220,223,224,225,226,228,229,230,231,232,233,234,235,236,237,238,239,240,241,242,247,1890],[50,70,119,248,1890],[50,70,119,130,131,133,134,135,138,150,158,161,167,168,169,170,171,176,177,178,179,181,183,184,185,205,209,210,211,212,213,1890],[50,70,119,169,170,171,180,1890],[50,70,119,169,1890],[50,70,119,206,207,1890],[50,70,119,173,175,1890],[50,70,119,173,174,175,1890],[50,70,119,172,173,1890],[50,70,119,172,1890],[50,70,119,172,173,174,1890],[50,70,119,171,1890],[50,70,119,182,1890],[50,70,119,208,1890],[50,70,119,176,184,213,1890],[50,70,119,176,213,1890],[50,70,119,494,1890],[50,70,119,485,486,1890],[50,70,119,482,483,485,487,488,493,1890],[50,70,119,483,485,1890],[50,70,119,493,1890],[50,70,119,485,1890],[50,70,119,482,483,485,488,489,490,491,492,1890],[50,70,119,482,483,484,1890],[50,70,119,565,1890],[50,70,119,565,568,1890],[50,70,119,558,565,566,567,568,569,570,571,572,1890],[50,70,119,573,1890],[50,70,119,565,566,1890],[50,70,119,565,567,1890],[50,70,119,511,513,514,515,516,1890],[50,70,119,511,513,515,516,1890],[50,70,119,511,513,515,1890],[50,70,119,511,513,514,516,1890],[50,70,119,511,513,516,1890],[50,70,119,511,512,513,514,515,516,517,518,558,559,560,561,562,563,564,1890],[50,70,119,513,516,1890],[50,70,119,510,511,512,514,515,516,1890],[50,70,119,513,559,563,1890],[50,70,119,513,514,515,516,1890],[50,70,119,574,1890],[50,70,119,515,1890],[50,70,119,519,520,521,522,523,524,525,526,527,528,529,530,531,532,533,534,535,536,537,538,539,540,541,542,543,544,545,546,547,548,549,550,551,552,553,554,555,556,557,1890],[70,119,1890],[50,70,119,249,1890],[50,70,119,249,258,264,1890],[50,70,119,1858,1890],[50,70,119,825,916,1890],[50,70,119,480,825,916,917,1006,1009,1644,1705,1707,1708,1717,1729,1730,1731,1890],[50,70,119,480,635,636,825,916,1003,1006,1717,1731,1890],[50,70,119,480,635,636,825,916,1005,1006,1644,1700,1701,1717,1730,1731,1890],[50,70,119,916,938,1890],[50,70,119,480,634,635,636,678,684,825,916,917,918,936,937,938,939,940,941,1003,1644,1645,1647,1703,1705,1706,1707,1708,1718,1732,1751,1752,1765,1779,1781,1782,1783,1785,1788,1789,1790,1791,1792,1793,1890],[50,70,119,917,918,1794,1890],[50,70,119,635,825,916,1890],[50,70,119,261,480,917,1790,1890],[50,70,119,635,636,825,916,917,1890],[50,70,119,480,634,938,939,940,1794,1890],[50,70,119,480,1890],[50,70,119,480,635,636,1701,1890],[50,70,119,480,635,636,917,1699,1702,1890],[50,70,119,636,918,1890],[50,70,119,480,636,679,680,1890],[50,70,119,635,679,1748,1786,1890],[50,70,119,680,681,1786,1787,1890],[50,70,119,261,480,634,635,636,916,917,940,1776,1795,1814,1890],[50,70,119,824,1890],[50,70,119,916,1890],[50,70,119,915,1890],[50,70,119,495,756,825,915,916,939,1000,1007,1008,1009,1629,1698,1729,1890],[50,70,119,480,495,825,915,916,1000,1009,1644,1730,1890],[50,70,119,480,495,951,952,958,997,999,1890],[50,70,119,480,825,916,1005,1006,1703,1705,1890],[50,70,119,635,1706,1780,1890],[50,70,119,635,825,918,937,1006,1644,1706,1731,1890],[50,70,119,635,825,918,937,1000,1001,1004,1005,1006,1702,1706,1731,1780,1890],[50,70,119,635,636,825,1004,1005,1006,1706,1731,1890],[50,70,119,635,825,918,1006,1706,1731,1784,1890],[50,70,119,480,635,824,825,938,939,1005,1006,1706,1707,1729,1730,1731,1890],[50,70,119,1002,1700,1890],[50,70,119,1700,1890],[50,70,119,249,1002,1890],[50,70,119,635,1890],[50,70,119,249,1001,1004,1890],[50,70,119,635,1001,1002,1003,1890],[50,70,119,1865,1890],[50,70,119,635,1001,1890],[50,70,119,480,495,635,636,825,916,1000,1006,1731,1890],[50,70,119,480,635,636,825,916,940,1731,1890],[50,70,119,495,635,636,917,937,1000,1005,1890],[50,70,119,480,1749,1750,1755,1890],[50,70,119,1704,1890],[50,70,119,261,635,636,1753,1754,1755,1756,1778,1890],[50,70,119,635,636,1702,1748,1749,1750,1890],[50,70,119,917,1750,1890],[50,70,119,635,636,938,1890],[50,70,119,635,917,1890],[50,70,119,480,1749,1750,1890],[50,70,119,917,1890],[50,70,119,480,1009,1708,1709,1710,1711,1712,1713,1714,1715,1716,1718,1719,1720,1721,1722,1723,1724,1725,1726,1727,1728,1890],[50,70,119,480,1009,1872,1877,1890],[50,70,119,480,1009,1890],[50,70,119,478,1009,1890],[50,70,119,1009,1890],[50,70,119,635,1004,1890],[50,70,119,1770,1890],[50,70,119,261,480,916,917,939,1647,1698,1804,1807,1808,1815,1842,1843,1890],[50,70,119,636,940,1890],[50,70,119,480,1804,1807,1808,1825,1826,1827,1890],[50,70,119,1825,1890],[50,70,119,480,1635,1640,1641,1804,1807,1808,1812,1890],[50,70,119,1605,1635,1890],[50,70,119,480,918,1641,1681,1804,1807,1808,1815,1816,1890],[50,70,119,918,1635,1890],[50,70,119,495,1802,1890],[50,70,119,254,480,1607,1639,1682,1689,1690,1801,1803,1804,1805,1808,1890],[50,70,119,480,1606,1690,1692,1806,1807,1890],[50,70,119,480,1641,1804,1808,1815,1838,1839,1890],[50,70,119,916,1642,1643,1830,1890],[50,70,119,480,495,916,1643,1644,1645,1646,1804,1807,1808,1830,1831,1890],[50,70,119,916,1605,1635,1890],[50,70,119,480,495,1643,1804,1807,1808,1834,1835,1890],[50,70,119,1605,1807,1890],[50,70,119,480,1804,1807,1808,1890],[50,70,119,1642,1643,1804,1807,1808,1879,1890],[50,70,119,1635,1642,1890],[50,70,119,1804,1808,1890],[50,70,119,480,1638,1804,1807,1808,1822,1890],[50,70,119,1635,1890],[50,70,119,1804,1807,1808,1850,1890],[50,70,119,1692,1890],[50,70,119,258,264,480,1804,1807,1808,1890],[50,70,119,480,1635,1639,1641,1804,1807,1808,1819,1890],[50,70,119,124,636,680,1890],[50,70,119,480,681,1641,1681,1815,1856,1890],[50,70,119,1625,1693,1694,1800,1804,1808,1890],[50,70,119,1691,1890],[50,70,119,1625,1693,1694,1800,1810,1828,1890],[50,70,119,1625,1693,1694,1800,1810,1813,1817,1890],[50,70,119,1625,1693,1694,1800,1809,1810,1890],[50,70,119,1625,1693,1694,1800,1810,1844,1890],[50,70,119,1625,1693,1694,1800,1810,1840,1890],[50,70,119,1625,1693,1694,1800,1810,1846,1890],[50,70,119,1625,1694,1800,1811,1818,1821,1824,1829,1833,1837,1841,1845,1847,1849,1852,1890],[50,70,119,1625,1693,1694,1800,1810,1832,1890],[50,70,119,1625,1693,1694,1800,1810,1836,1890],[50,70,119,1625,1693,1694,1800,1810,1880,1890],[50,70,119,1625,1693,1694,1800,1810,1848,1890],[50,70,119,1625,1693,1694,1800,1810,1823,1890],[50,70,119,1625,1693,1694,1800,1810,1851,1890],[50,70,119,1625,1693,1694,1800,1810,1820,1890],[50,70,119,1625,1693,1694,1800,1810,1881,1890],[50,70,119,1606,1629,1890],[50,70,119,635,636,825,917,936,937,1890],[50,70,119,1625,1628,1629,1693,1694,1698,1797,1800,1805,1853,1890],[50,70,119,480,1628,1890],[50,70,119,1010,1625,1627,1800,1890],[50,70,119,478,1605,1634,1635,1890],[50,70,119,1636,1637,1638,1639,1641,1643,1645,1646,1890],[50,70,119,1598,1604,1890],[50,70,119,1604,1605,1635,1637,1890],[50,70,119,261,480,1604,1605,1637,1890],[50,70,119,261,1604,1605,1635,1637,1640,1890],[50,70,119,254,261,480,1604,1605,1606,1607,1637,1681,1682,1683,1684,1685,1686,1688,1890],[50,70,119,480,1604,1636,1890],[50,70,119,261,915,916,1604,1605,1635,1637,1644,1890],[50,70,119,261,1604,1605,1637,1890],[50,70,119,825,916,1635,1637,1730,1890],[50,70,119,257,1604,1605,1635,1637,1642,1890],[50,70,119,261,480,1604,1605,1606,1607,1637,1681,1890],[50,70,119,916,1605,1890],[50,70,119,264,480,1628,1696,1754,1775,1776,1795,1796,1854,1855,1857,1890],[50,70,119,266,478,1890],[50,70,119,266,479,1890],[50,70,119,480,1606,1607,1689,1890],[50,70,119,478,480,1606,1625,1630,1647,1690,1692,1694,1698,1800,1890],[50,70,119,478,1625,1626,1694,1800,1890],[50,70,119,1604,1605,1634,1680,1698,1730,1890],[50,70,119,480,1825,1890],[50,70,119,1804,1808,1885,1890],[50,70,119,636,919,920,924,925,929,1890],[50,70,119,480,636,919,920,924,925,927,929,1890],[50,70,119,480,636,919,920,924,925,926,927,928,929,1890],[50,70,119,480,636,919,920,924,925,926,929,1890],[50,70,119,480,636,919,920,924,925,926,927,929,1890],[50,70,119,636,920,924,925,926,927,928,930,931,932,933,934,935,1890],[50,70,119,636,919,1890],[50,70,119,480,919,920,921,922,923,1890],[50,70,119,636,919,920,925,927,1890],[50,70,119,480,919,920,924,1890],[50,70,119,920,925,926,1890],[50,70,119,920,924,925,1890],[50,70,119,919,920,924,925,1890],[50,70,119,254,480,1607,1628,1695,1890],[50,70,119,1766,1767,1890],[50,70,119,1766,1767,1769,1770,1890],[50,70,119,480,1766,1767,1768,1890],[50,70,119,480,636,677,678,679,680,681,682,683,1890],[50,70,119,678,684,1890],[50,70,119,677,1890],[50,70,119,480,1606,1890],[50,70,119,480,1606,1687,1688,1890],[50,70,119,480,1606,1685,1687,1890],[50,70,119,480,1606,1685,1890],[50,70,119,1010,1890],[50,70,119,480,1010,1696,1890],[50,70,119,480,1010,1606,1607,1695,1697,1890],[50,70,119,480,636,1763,1764,1890],[50,70,119,1765,1776,1777,1890],[50,70,119,636,1890],[50,70,119,495,636,1765,1890],[50,70,119,480,1760,1761,1890],[50,70,119,261,480,636,1761,1764,1765,1767,1771,1772,1773,1774,1775,1890],[50,70,119,636,1762,1890],[50,70,119,254,258,261,1890],[50,70,119,253,255,257,258,1890],[50,70,119,253,254,1890],[50,70,119,253,255,258,259,262,263,1890],[50,70,119,1606,1629,1693,1890],[50,70,119,1605,1890],[50,70,119,1605,1606,1890],[50,70,119,480,1692,1890],[50,70,119,260,1890],[50,70,119,1775,1890],[50,70,119,480,495,1683,1890],[50,70,119,480,1606,1680,1890],[50,70,119,254,480,1606,1683,1890],[50,70,119,495,1606,1890]],"fileInfos":[{"version":"a7297ff837fcdf174a9524925966429eb8e5feecc2cc55cc06574e6b092c1eaa","signature":false,"impliedFormat":1},{"version":"c430d44666289dae81f30fa7b2edebf186ecc91a2d4c71266ea6ae76388792e1","signature":false,"affectsGlobalScope":true,"impliedFormat":1},{"version":"45b7ab580deca34ae9729e97c13cfd999df04416a79116c3bfb483804f85ded4","signature":false,"impliedFormat":1},{"version":"3facaf05f0c5fc569c5649dd359892c98a85557e3e0c847964caeb67076f4d75","signature":false,"impliedFormat":1},{"version":"e44bb8bbac7f10ecc786703fe0a6a4b952189f908707980ba8f3c8975a760962","signature":false,"impliedFormat":1},{"version":"5e1c4c362065a6b95ff952c0eab010f04dcd2c3494e813b493ecfd4fcb9fc0d8","signature":false,"impliedFormat":1},{"version":"68d73b4a11549f9c0b7d352d10e91e5dca8faa3322bfb77b661839c42b1ddec7","signature":false,"impliedFormat":1},{"version":"5efce4fc3c29ea84e8928f97adec086e3dc876365e0982cc8479a07954a3efd4","signature":false,"impliedFormat":1},{"version":"080941d9f9ff9307f7e27a83bcd888b7c8270716c39af943532438932ec1d0b9","signature":false,"affectsGlobalScope":true,"impliedFormat":1},{"version":"80e18897e5884b6723488d4f5652167e7bb5024f946743134ecc4aa4ee731f89","signature":false,"affectsGlobalScope":true,"impliedFormat":1},{"version":"cd034f499c6cdca722b60c04b5b1b78e058487a7085a8e0d6fb50809947ee573","signature":false,"affectsGlobalScope":true,"impliedFormat":1},{"version":"c57796738e7f83dbc4b8e65132f11a377649c00dd3eee333f672b8f0a6bea671","signature":false,"affectsGlobalScope":true,"impliedFormat":1},{"version":"dc2df20b1bcdc8c2d34af4926e2c3ab15ffe1160a63e58b7e09833f616efff44","signature":false,"affectsGlobalScope":true,"impliedFormat":1},{"version":"515d0b7b9bea2e31ea4ec968e9edd2c39d3eebf4a2d5cbd04e88639819ae3b71","signature":false,"affectsGlobalScope":true,"impliedFormat":1},{"version":"0559b1f683ac7505ae451f9a96ce4c3c92bdc71411651ca6ddb0e88baaaad6a3","signature":false,"affectsGlobalScope":true,"impliedFormat":1},{"version":"0dc1e7ceda9b8b9b455c3a2d67b0412feab00bd2f66656cd8850e8831b08b537","signature":false,"affectsGlobalScope":true,"impliedFormat":1},{"version":"ce691fb9e5c64efb9547083e4a34091bcbe5bdb41027e310ebba8f7d96a98671","signature":false,"affectsGlobalScope":true,"impliedFormat":1},{"version":"8d697a2a929a5fcb38b7a65594020fcef05ec1630804a33748829c5ff53640d0","signature":false,"affectsGlobalScope":true,"impliedFormat":1},{"version":"4ff2a353abf8a80ee399af572debb8faab2d33ad38c4b4474cff7f26e7653b8d","signature":false,"affectsGlobalScope":true,"impliedFormat":1},{"version":"fb0f136d372979348d59b3f5020b4cdb81b5504192b1cacff5d1fbba29378aa1","signature":false,"affectsGlobalScope":true,"impliedFormat":1},{"version":"d15bea3d62cbbdb9797079416b8ac375ae99162a7fba5de2c6c505446486ac0a","signature":false,"affectsGlobalScope":true,"impliedFormat":1},{"version":"68d18b664c9d32a7336a70235958b8997ebc1c3b8505f4f1ae2b7e7753b87618","signature":false,"affectsGlobalScope":true,"impliedFormat":1},{"version":"eb3d66c8327153d8fa7dd03f9c58d351107fe824c79e9b56b462935176cdf12a","signature":false,"affectsGlobalScope":true,"impliedFormat":1},{"version":"38f0219c9e23c915ef9790ab1d680440d95419ad264816fa15009a8851e79119","signature":false,"affectsGlobalScope":true,"impliedFormat":1},{"version":"69ab18c3b76cd9b1be3d188eaf8bba06112ebbe2f47f6c322b5105a6fbc45a2e","signature":false,"affectsGlobalScope":true,"impliedFormat":1},{"version":"a680117f487a4d2f30ea46f1b4b7f58bef1480456e18ba53ee85c2746eeca012","signature":false,"affectsGlobalScope":true,"impliedFormat":1},{"version":"2f11ff796926e0832f9ae148008138ad583bd181899ab7dd768a2666700b1893","signature":false,"affectsGlobalScope":true,"impliedFormat":1},{"version":"4de680d5bb41c17f7f68e0419412ca23c98d5749dcaaea1896172f06435891fc","signature":false,"affectsGlobalScope":true,"impliedFormat":1},{"version":"954296b30da6d508a104a3a0b5d96b76495c709785c1d11610908e63481ee667","signature":false,"affectsGlobalScope":true,"impliedFormat":1},{"version":"ac9538681b19688c8eae65811b329d3744af679e0bdfa5d842d0e32524c73e1c","signature":false,"affectsGlobalScope":true,"impliedFormat":1},{"version":"0a969edff4bd52585473d24995c5ef223f6652d6ef46193309b3921d65dd4376","signature":false,"affectsGlobalScope":true,"impliedFormat":1},{"version":"9e9fbd7030c440b33d021da145d3232984c8bb7916f277e8ffd3dc2e3eae2bdb","signature":false,"affectsGlobalScope":true,"impliedFormat":1},{"version":"811ec78f7fefcabbda4bfa93b3eb67d9ae166ef95f9bff989d964061cbf81a0c","signature":false,"affectsGlobalScope":true,"impliedFormat":1},{"version":"717937616a17072082152a2ef351cb51f98802fb4b2fdabd32399843875974ca","signature":false,"affectsGlobalScope":true,"impliedFormat":1},{"version":"d7e7d9b7b50e5f22c915b525acc5a49a7a6584cf8f62d0569e557c5cfc4b2ac2","signature":false,"affectsGlobalScope":true,"impliedFormat":1},{"version":"71c37f4c9543f31dfced6c7840e068c5a5aacb7b89111a4364b1d5276b852557","signature":false,"affectsGlobalScope":true,"impliedFormat":1},{"version":"576711e016cf4f1804676043e6a0a5414252560eb57de9faceee34d79798c850","signature":false,"affectsGlobalScope":true,"impliedFormat":1},{"version":"89c1b1281ba7b8a96efc676b11b264de7a8374c5ea1e6617f11880a13fc56dc6","signature":false,"affectsGlobalScope":true,"impliedFormat":1},{"version":"74f7fa2d027d5b33eb0471c8e82a6c87216223181ec31247c357a3e8e2fddc5b","signature":false,"affectsGlobalScope":true,"impliedFormat":1},{"version":"d6d7ae4d1f1f3772e2a3cde568ed08991a8ae34a080ff1151af28b7f798e22ca","signature":false,"affectsGlobalScope":true,"impliedFormat":1},{"version":"063600664504610fe3e99b717a1223f8b1900087fab0b4cad1496a114744f8df","signature":false,"affectsGlobalScope":true,"impliedFormat":1},{"version":"934019d7e3c81950f9a8426d093458b65d5aff2c7c1511233c0fd5b941e608ab","signature":false,"affectsGlobalScope":true,"impliedFormat":1},{"version":"52ada8e0b6e0482b728070b7639ee42e83a9b1c22d205992756fe020fd9f4a47","signature":false,"affectsGlobalScope":true,"impliedFormat":1},{"version":"3bdefe1bfd4d6dee0e26f928f93ccc128f1b64d5d501ff4a8cf3c6371200e5e6","signature":false,"affectsGlobalScope":true,"impliedFormat":1},{"version":"59fb2c069260b4ba00b5643b907ef5d5341b167e7d1dbf58dfd895658bda2867","signature":false,"affectsGlobalScope":true,"impliedFormat":1},{"version":"639e512c0dfc3fad96a84caad71b8834d66329a1f28dc95e3946c9b58176c73a","signature":false,"affectsGlobalScope":true,"impliedFormat":1},{"version":"368af93f74c9c932edd84c58883e736c9e3d53cec1fe24c0b0ff451f529ceab1","signature":false,"affectsGlobalScope":true,"impliedFormat":1},{"version":"8e7f8264d0fb4c5339605a15daadb037bf238c10b654bb3eee14208f860a32ea","signature":false,"affectsGlobalScope":true,"impliedFormat":1},{"version":"782dec38049b92d4e85c1585fbea5474a219c6984a35b004963b00beb1aab538","signature":false,"affectsGlobalScope":true,"impliedFormat":1},{"version":"518bfcdde92e83aa10d17ab61f727ded7fc362f13afbdde05b1fd92305eac606","signature":false},{"version":"5c54a34e3d91727f7ae840bfe4d5d1c9a2f93c54cb7b6063d06ee4a6c3322656","signature":false,"impliedFormat":99},{"version":"db4da53b03596668cf6cc9484834e5de3833b9e7e64620cf08399fe069cd398d","signature":false,"impliedFormat":99},{"version":"ac7c28f153820c10850457994db1462d8c8e462f253b828ad942a979f726f2f9","signature":false,"impliedFormat":99},{"version":"f9b028d3c3891dd817e24d53102132b8f696269309605e6ed4f0db2c113bbd82","signature":false,"impliedFormat":99},{"version":"fb7c8d90e52e2884509166f96f3d591020c7b7977ab473b746954b0c8d100960","signature":false,"impliedFormat":99},{"version":"0bff51d6ed0c9093f6955b9d8258ce152ddb273359d50a897d8baabcb34de2c4","signature":false,"impliedFormat":99},{"version":"45cec9a1ba6549060552eead8959d47226048e0b71c7d0702ae58b7e16a28912","signature":false,"impliedFormat":99},{"version":"ef13c73d6157a32933c612d476c1524dd674cf5b9a88571d7d6a0d147544d529","signature":false,"impliedFormat":99},{"version":"13918e2b81c4288695f9b1f3dcc2468caf0f848d5c1f3dc00071c619d34ff63a","signature":false,"impliedFormat":99},{"version":"6907b09850f86610e7a528348c15484c1e1c09a18a9c1e98861399dfe4b18b46","signature":false,"impliedFormat":99},{"version":"12deea8eaa7a4fc1a2908e67da99831e5c5a6b46ad4f4f948fd4759314ea2b80","signature":false,"impliedFormat":99},{"version":"f0a8b376568a18f9a4976ecb0855187672b16b96c4df1c183a7e52dc1b5d98e8","signature":false,"impliedFormat":99},{"version":"8124828a11be7db984fcdab052fd4ff756b18edcfa8d71118b55388176210923","signature":false,"impliedFormat":99},{"version":"092944a8c05f9b96579161e88c6f211d5304a76bd2c47f8d4c30053269146bc8","signature":false,"impliedFormat":99},{"version":"6c7176368037af28cb72f2392010fa1cef295d6d6744bca8cfb54985f3a18c3e","signature":false,"affectsGlobalScope":true,"impliedFormat":1},{"version":"ab41ef1f2cdafb8df48be20cd969d875602483859dc194e9c97c8a576892c052","signature":false,"affectsGlobalScope":true,"impliedFormat":1},{"version":"437e20f2ba32abaeb7985e0afe0002de1917bc74e949ba585e49feba65da6ca1","signature":false,"affectsGlobalScope":true,"impliedFormat":1},{"version":"21d819c173c0cf7cc3ce57c3276e77fd9a8a01d35a06ad87158781515c9a438a","signature":false,"impliedFormat":1},{"version":"98cffbf06d6bab333473c70a893770dbe990783904002c4f1a960447b4b53dca","signature":false,"affectsGlobalScope":true,"impliedFormat":1},{"version":"3af97acf03cc97de58a3a4bc91f8f616408099bc4233f6d0852e72a8ffb91ac9","signature":false,"affectsGlobalScope":true,"impliedFormat":1},{"version":"808069bba06b6768b62fd22429b53362e7af342da4a236ed2d2e1c89fcca3b4a","signature":false,"affectsGlobalScope":true,"impliedFormat":1},{"version":"1db0b7dca579049ca4193d034d835f6bfe73096c73663e5ef9a0b5779939f3d0","signature":false,"affectsGlobalScope":true,"impliedFormat":1},{"version":"9798340ffb0d067d69b1ae5b32faa17ab31b82466a3fc00d8f2f2df0c8554aaa","signature":false,"affectsGlobalScope":true,"impliedFormat":1},{"version":"f26b11d8d8e4b8028f1c7d618b22274c892e4b0ef5b3678a8ccbad85419aef43","signature":false,"affectsGlobalScope":true,"impliedFormat":1},{"version":"8e9c23ba78aabc2e0a27033f18737a6df754067731e69dc5f52823957d60a4b6","signature":false,"impliedFormat":1},{"version":"5929864ce17fba74232584d90cb721a89b7ad277220627cc97054ba15a98ea8f","signature":false,"impliedFormat":1},{"version":"763fe0f42b3d79b440a9b6e51e9ba3f3f91352469c1e4b3b67bfa4ff6352f3f4","signature":false,"impliedFormat":1},{"version":"25c8056edf4314820382a5fdb4bb7816999acdcb929c8f75e3f39473b87e85bc","signature":false,"impliedFormat":1},{"version":"c464d66b20788266e5353b48dc4aa6bc0dc4a707276df1e7152ab0c9ae21fad8","signature":false,"impliedFormat":1},{"version":"78d0d27c130d35c60b5e5566c9f1e5be77caf39804636bc1a40133919a949f21","signature":false,"impliedFormat":1},{"version":"c6fd2c5a395f2432786c9cb8deb870b9b0e8ff7e22c029954fabdd692bff6195","signature":false,"impliedFormat":1},{"version":"1d6e127068ea8e104a912e42fc0a110e2aa5a66a356a917a163e8cf9a65e4a75","signature":false,"impliedFormat":1},{"version":"5ded6427296cdf3b9542de4471d2aa8d3983671d4cac0f4bf9c637208d1ced43","signature":false,"impliedFormat":1},{"version":"7f182617db458e98fc18dfb272d40aa2fff3a353c44a89b2c0ccb3937709bfb5","signature":false,"impliedFormat":1},{"version":"cadc8aced301244057c4e7e73fbcae534b0f5b12a37b150d80e5a45aa4bebcbd","signature":false,"impliedFormat":1},{"version":"385aab901643aa54e1c36f5ef3107913b10d1b5bb8cbcd933d4263b80a0d7f20","signature":false,"impliedFormat":1},{"version":"9670d44354bab9d9982eca21945686b5c24a3f893db73c0dae0fd74217a4c219","signature":false,"impliedFormat":1},{"version":"0b8a9268adaf4da35e7fa830c8981cfa22adbbe5b3f6f5ab91f6658899e657a7","signature":false,"impliedFormat":1},{"version":"11396ed8a44c02ab9798b7dca436009f866e8dae3c9c25e8c1fbc396880bf1bb","signature":false,"impliedFormat":1},{"version":"ba7bc87d01492633cb5a0e5da8a4a42a1c86270e7b3d2dea5d156828a84e4882","signature":false,"impliedFormat":1},{"version":"4893a895ea92c85345017a04ed427cbd6a1710453338df26881a6019432febdd","signature":false,"impliedFormat":1},{"version":"c21dc52e277bcfc75fac0436ccb75c204f9e1b3fa5e12729670910639f27343e","signature":false,"impliedFormat":1},{"version":"13f6f39e12b1518c6650bbb220c8985999020fe0f21d818e28f512b7771d00f9","signature":false,"impliedFormat":1},{"version":"9b5369969f6e7175740bf51223112ff209f94ba43ecd3bb09eefff9fd675624a","signature":false,"impliedFormat":1},{"version":"4fe9e626e7164748e8769bbf74b538e09607f07ed17c2f20af8d680ee49fc1da","signature":false,"impliedFormat":1},{"version":"24515859bc0b836719105bb6cc3d68255042a9f02a6022b3187948b204946bd2","signature":false,"impliedFormat":1},{"version":"ea0148f897b45a76544ae179784c95af1bd6721b8610af9ffa467a518a086a43","signature":false,"impliedFormat":1},{"version":"24c6a117721e606c9984335f71711877293a9651e44f59f3d21c1ea0856f9cc9","signature":false,"impliedFormat":1},{"version":"dd3273ead9fbde62a72949c97dbec2247ea08e0c6952e701a483d74ef92d6a17","signature":false,"impliedFormat":1},{"version":"405822be75ad3e4d162e07439bac80c6bcc6dbae1929e179cf467ec0b9ee4e2e","signature":false,"impliedFormat":1},{"version":"0db18c6e78ea846316c012478888f33c11ffadab9efd1cc8bcc12daded7a60b6","signature":false,"impliedFormat":1},{"version":"e61be3f894b41b7baa1fbd6a66893f2579bfad01d208b4ff61daef21493ef0a8","signature":false,"impliedFormat":1},{"version":"bd0532fd6556073727d28da0edfd1736417a3f9f394877b6d5ef6ad88fba1d1a","signature":false,"impliedFormat":1},{"version":"89167d696a849fce5ca508032aabfe901c0868f833a8625d5a9c6e861ef935d2","signature":false,"impliedFormat":1},{"version":"615ba88d0128ed16bf83ef8ccbb6aff05c3ee2db1cc0f89ab50a4939bfc1943f","signature":false,"impliedFormat":1},{"version":"a4d551dbf8746780194d550c88f26cf937caf8d56f102969a110cfaed4b06656","signature":false,"impliedFormat":1},{"version":"8bd86b8e8f6a6aa6c49b71e14c4ffe1211a0e97c80f08d2c8cc98838006e4b88","signature":false,"impliedFormat":1},{"version":"317e63deeb21ac07f3992f5b50cdca8338f10acd4fbb7257ebf56735bf52ab00","signature":false,"impliedFormat":1},{"version":"4732aec92b20fb28c5fe9ad99521fb59974289ed1e45aecb282616202184064f","signature":false,"impliedFormat":1},{"version":"2e85db9e6fd73cfa3d7f28e0ab6b55417ea18931423bd47b409a96e4a169e8e6","signature":false,"impliedFormat":1},{"version":"c46e079fe54c76f95c67fb89081b3e399da2c7d109e7dca8e4b58d83e332e605","signature":false,"impliedFormat":1},{"version":"bf67d53d168abc1298888693338cb82854bdb2e69ef83f8a0092093c2d562107","signature":false,"impliedFormat":1},{"version":"2cbe0621042e2a68c7cbce5dfed3906a1862a16a7d496010636cdbdb91341c0f","signature":false,"affectsGlobalScope":true,"impliedFormat":1},{"version":"f9501cc13ce624c72b61f12b3963e84fad210fbdf0ffbc4590e08460a3f04eba","signature":false,"affectsGlobalScope":true,"impliedFormat":1},{"version":"e7721c4f69f93c91360c26a0a84ee885997d748237ef78ef665b153e622b36c1","signature":false,"affectsGlobalScope":true,"impliedFormat":1},{"version":"df48adbf5b82b79ed989ec3bef2979d988b94978907fd86b4f30ba2b668e49de","signature":false,"impliedFormat":1},{"version":"7394959e5a741b185456e1ef5d64599c36c60a323207450991e7a42e08911419","signature":false,"impliedFormat":1},{"version":"2b06b93fd01bcd49d1a6bd1f9b65ddcae6480b9a86e9061634d6f8e354c1468f","signature":false,"impliedFormat":1},{"version":"6a0cd27e5dc2cfbe039e731cf879d12b0e2dded06d1b1dedad07f7712de0d7f4","signature":false,"affectsGlobalScope":true,"impliedFormat":1},{"version":"13f5c844119c43e51ce777c509267f14d6aaf31eafb2c2b002ca35584cd13b29","signature":false,"impliedFormat":1},{"version":"e60477649d6ad21542bd2dc7e3d9ff6853d0797ba9f689ba2f6653818999c264","signature":false,"impliedFormat":1},{"version":"c2510f124c0293ab80b1777c44d80f812b75612f297b9857406468c0f4dafe29","signature":false,"affectsGlobalScope":true,"impliedFormat":1},{"version":"5524481e56c48ff486f42926778c0a3cce1cc85dc46683b92b1271865bcf015a","signature":false,"impliedFormat":1},{"version":"4c829ab315f57c5442c6667b53769975acbf92003a66aef19bce151987675bd1","signature":false,"affectsGlobalScope":true,"impliedFormat":1},{"version":"b2ade7657e2db96d18315694789eff2ddd3d8aea7215b181f8a0b303277cc579","signature":false,"impliedFormat":1},{"version":"9855e02d837744303391e5623a531734443a5f8e6e8755e018c41d63ad797db2","signature":false,"impliedFormat":1},{"version":"6851b67b164a1e84add721ea67ac52696b5aee426b800f68283c6a13046f95ec","signature":false,"impliedFormat":1},{"version":"836a356aae992ff3c28a0212e3eabcb76dd4b0cc06bcb9607aeef560661b860d","signature":false,"impliedFormat":1},{"version":"1e0d1f8b0adfa0b0330e028c7941b5a98c08b600efe7f14d2d2a00854fb2f393","signature":false,"impliedFormat":1},{"version":"41670ee38943d9cbb4924e436f56fc19ee94232bc96108562de1a734af20dc2c","signature":false,"affectsGlobalScope":true,"impliedFormat":1},{"version":"c906fb15bd2aabc9ed1e3f44eb6a8661199d6c320b3aa196b826121552cb3695","signature":false,"impliedFormat":1},{"version":"22295e8103f1d6d8ea4b5d6211e43421fe4564e34d0dd8e09e520e452d89e659","signature":false,"impliedFormat":1},{"version":"a0c4ff5309f0108772562412d15aaa15b32f5db3326288a4490fd461f66a95c8","signature":false,"impliedFormat":1},{"version":"6b4e081d55ac24fc8a4631d5dd77fe249fa25900abd7d046abb87d90e3b45645","signature":false,"impliedFormat":1},{"version":"a10f0e1854f3316d7ee437b79649e5a6ae3ae14ffe6322b02d4987071a95362e","signature":false,"impliedFormat":1},{"version":"ed58b9974bb3114f39806c9c2c6258c4ffa6a255921976a7c53dfa94bf178f42","signature":false,"impliedFormat":1},{"version":"e6fa9ad47c5f71ff733744a029d1dc472c618de53804eae08ffc243b936f87ff","signature":false,"affectsGlobalScope":true,"impliedFormat":1},{"version":"b57f8f7247d878e1bb5c329acbd4c1ad8efb073f4ffa6dc120d52924b1e30e40","signature":false,"impliedFormat":1},{"version":"24826ed94a78d5c64bd857570fdbd96229ad41b5cb654c08d75a9845e3ab7dde","signature":false,"impliedFormat":1},{"version":"45875bcae57270aeb3ebc73a5e3fb4c7b9d91d6b045f107c1d8513c28ece71c0","signature":false,"impliedFormat":1},{"version":"928af3d90454bf656a52a48679f199f64c1435247d6189d1caf4c68f2eaf921f","signature":false,"affectsGlobalScope":true,"impliedFormat":1},{"version":"6fac322c7864146db8daa23389f979fdb9fb97f63f212a9424a302f01c2a40d1","signature":false,"affectsGlobalScope":true,"impliedFormat":1},{"version":"3f16a7e4deafa527ed9995a772bb380eb7d3c2c0fd4ae178c5263ed18394db2c","signature":false,"impliedFormat":1},{"version":"933921f0bb0ec12ef45d1062a1fc0f27635318f4d294e4d99de9a5493e618ca2","signature":false,"impliedFormat":1},{"version":"71a0f3ad612c123b57239a7749770017ecfe6b66411488000aba83e4546fde25","signature":false,"impliedFormat":1},{"version":"77fbe5eecb6fac4b6242bbf6eebfc43e98ce5ccba8fa44e0ef6a95c945ff4d98","signature":false,"impliedFormat":1},{"version":"4f9d8ca0c417b67b69eeb54c7ca1bedd7b56034bb9bfd27c5d4f3bc4692daca7","signature":false,"impliedFormat":1},{"version":"814118df420c4e38fe5ae1b9a3bafb6e9c2aa40838e528cde908381867be6466","signature":false,"impliedFormat":1},{"version":"248bc21b92f51ce0b8a67140f2e55887c5f598095e9a790a05fdd2729b531e7a","signature":false,"impliedFormat":1},{"version":"f27524f4bef4b6519c604bdb23bf4465bddcccbf3f003abb901acbd0d7404d99","signature":false,"impliedFormat":1},{"version":"37ba7b45141a45ce6e80e66f2a96c8a5ab1bcef0fc2d0f56bb58df96ec67e972","signature":false,"impliedFormat":1},{"version":"45650f47bfb376c8a8ed39d4bcda5902ab899a3150029684ee4c10676d9fbaee","signature":false,"impliedFormat":1},{"version":"dba28a419aec76ed864ef43e5f577a5c99a010c32e5949fe4e17a4d57c58dd11","signature":false,"affectsGlobalScope":true,"impliedFormat":1},{"version":"18fd40412d102c5564136f29735e5d1c3b455b8a37f920da79561f1fde068208","signature":false,"impliedFormat":1},{"version":"c959a391a75be9789b43c8468f71e3fa06488b4d691d5729dde1416dcd38225b","signature":false,"impliedFormat":1},{"version":"f0be1b8078cd549d91f37c30c222c2a187ac1cf981d994fb476a1adc61387b14","signature":false,"affectsGlobalScope":true,"impliedFormat":1},{"version":"0aaed1d72199b01234152f7a60046bc947f1f37d78d182e9ae09c4289e06a592","signature":false,"impliedFormat":1},{"version":"8c66347a2f5b28e579a306672633dd900751e72bb5c3150ceb10b1fcfcf3d12d","signature":false,"impliedFormat":1},{"version":"66ba1b2c3e3a3644a1011cd530fb444a96b1b2dfe2f5e837a002d41a1a799e60","signature":false,"impliedFormat":1},{"version":"7e514f5b852fdbc166b539fdd1f4e9114f29911592a5eb10a94bb3a13ccac3c4","signature":false,"impliedFormat":1},{"version":"ea2e8e586844e2ebda7986fd859c4c7b283dc90198cd485250498a5412db27a0","signature":false,"affectsGlobalScope":true,"impliedFormat":1},{"version":"4bf07b8f59b43670a28f14d0d5668a5f4abfe106d481fad660f8a1010529609a","signature":false,"affectsGlobalScope":true,"impliedFormat":1},{"version":"ea08a0345023ade2b47fbff5a76d0d0ed8bff10bc9d22b83f40858a8e941501c","signature":false,"impliedFormat":1},{"version":"47613031a5a31510831304405af561b0ffaedb734437c595256bb61a90f9311b","signature":false,"impliedFormat":1},{"version":"ae062ce7d9510060c5d7e7952ae379224fb3f8f2dd74e88959878af2057c143b","signature":false,"impliedFormat":1},{"version":"71122b94871f11a2be216426470523b679a318b08b34dab23e5e4ba9bdf54c23","signature":false,"affectsGlobalScope":true,"impliedFormat":1},{"version":"02aa5feb7aaa41b25b86c7a873839a799d4c6beee4f7d1789aa338905554e495","signature":false,"impliedFormat":1},{"version":"bdf1feb266c87edbee61f12ceaaef60ab0e2e5dba70ca19360b6448911c53d52","signature":false,"impliedFormat":1},{"version":"a7ca8df4f2931bef2aa4118078584d84a0b16539598eaadf7dce9104dfaa381c","signature":false,"impliedFormat":1},{"version":"5c31dea483b64cbb341ea8a7073c457720d1574f87837e71cccb70ce91196211","signature":false,"impliedFormat":99},{"version":"11443a1dcfaaa404c68d53368b5b818712b95dd19f188cab1669c39bee8b84b3","signature":false,"impliedFormat":1},{"version":"a9d8a840e9268e7bb100f08eb7c38d1c55512c39cada74f5c0b89ea0525b8d9a","signature":false,"impliedFormat":99},{"version":"47c850c6d7d750991b41409b931081b971c8f956d016852460f6d924f688007b","signature":false,"impliedFormat":99},{"version":"b114e8c1498a3ef05dfc0a66b88cf589d44046260f8cc6e9de1cd51c5eca5ae4","signature":false,"impliedFormat":99},{"version":"780bd7607046495470d2fd6d594cb4890f5a732f4297f07d781d8112d240a3c5","signature":false,"impliedFormat":99},{"version":"f9a7a9caa2937116a8ab615ee0f34a959a8735fdb636a1576ba5f58e0159a365","signature":false,"impliedFormat":99},{"version":"7d3e062a778b8f5ea4f0cac7e925e31f88e6739812ebc5f827474324a4048f14","signature":false,"impliedFormat":99},{"version":"9caf760458d172ffe6fc32d57b24b9cca9cc295e214761c1c72132d88ec4ff52","signature":false,"impliedFormat":99},{"version":"53c0c6686d096d028cd106861a5ec64e6a8e051d2510caf6679b5d61affb9b1e","signature":false,"impliedFormat":99},{"version":"36977c14a7f7bfc8c0426ae4343875689949fb699f3f84ecbe5b300ebf9a2c55","signature":false,"impliedFormat":1},{"version":"d5c87103a3fcead5092b17d518890c88c543938b1f0363e965a90ee89195e2b5","signature":false,"impliedFormat":99},{"version":"161c8e0690c46021506e32fda85956d785b70f309ae97011fd27374c065cac9b","signature":false,"affectsGlobalScope":true,"impliedFormat":1},{"version":"e0864480ea083087d705f9405bd6bf59b795e8474c3447f0d6413b2bce535a09","signature":false,"impliedFormat":1},{"version":"fc02c40bbd5198d0db6a3a85b3181dd95a183f6b5d6f23860c73858a8cdea3ca","signature":false,"impliedFormat":99},{"version":"f582b0fcbf1eea9b318ab92fb89ea9ab2ebb84f9b60af89328a91155e1afce72","signature":false,"impliedFormat":1},{"version":"402e5c534fb2b85fa771170595db3ac0dd532112c8fa44fc23f233bc6967488b","signature":false,"impliedFormat":1},{"version":"8885cf05f3e2abf117590bbb951dcf6359e3e5ac462af1c901cfd24c6a6472e2","signature":false,"impliedFormat":1},{"version":"333caa2bfff7f06017f114de738050dd99a765c7eb16571c6d25a38c0d5365dc","signature":false,"impliedFormat":1},{"version":"e61df3640a38d535fd4bc9f4a53aef17c296b58dc4b6394fd576b808dd2fe5e6","signature":false,"impliedFormat":1},{"version":"459920181700cec8cbdf2a5faca127f3f17fd8dd9d9e577ed3f5f3af5d12a2e4","signature":false,"impliedFormat":1},{"version":"4719c209b9c00b579553859407a7e5dcfaa1c472994bd62aa5dd3cc0757eb077","signature":false,"impliedFormat":1},{"version":"7ec359bbc29b69d4063fe7dad0baaf35f1856f914db16b3f4f6e3e1bca4099fa","signature":false,"impliedFormat":1},{"version":"70790a7f0040993ca66ab8a07a059a0f8256e7bb57d968ae945f696cbff4ac7a","signature":false,"impliedFormat":1},{"version":"d1b9a81e99a0050ca7f2d98d7eedc6cda768f0eb9fa90b602e7107433e64c04c","signature":false,"impliedFormat":1},{"version":"a022503e75d6953d0e82c2c564508a5c7f8556fad5d7f971372d2d40479e4034","signature":false,"impliedFormat":1},{"version":"b215c4f0096f108020f666ffcc1f072c81e9f2f95464e894a5d5f34c5ea2a8b1","signature":false,"impliedFormat":1},{"version":"644491cde678bd462bb922c1d0cfab8f17d626b195ccb7f008612dc31f445d2d","signature":false,"impliedFormat":1},{"version":"dfe54dab1fa4961a6bcfba68c4ca955f8b5bbeb5f2ab3c915aa7adaa2eabc03a","signature":false,"impliedFormat":1},{"version":"1251d53755b03cde02466064260bb88fd83c30006a46395b7d9167340bc59b73","signature":false,"impliedFormat":1},{"version":"47865c5e695a382a916b1eedda1b6523145426e48a2eae4647e96b3b5e52024f","signature":false,"impliedFormat":1},{"version":"4cdf27e29feae6c7826cdd5c91751cc35559125e8304f9e7aed8faef97dcf572","signature":false,"impliedFormat":1},{"version":"331b8f71bfae1df25d564f5ea9ee65a0d847c4a94baa45925b6f38c55c7039bf","signature":false,"impliedFormat":1},{"version":"2a771d907aebf9391ac1f50e4ad37952943515eeea0dcc7e78aa08f508294668","signature":false,"impliedFormat":1},{"version":"0146fd6262c3fd3da51cb0254bb6b9a4e42931eb2f56329edd4c199cb9aaf804","signature":false,"impliedFormat":1},{"version":"183f480885db5caa5a8acb833c2be04f98056bdcc5fb29e969ff86e07efe57ab","signature":false,"impliedFormat":99},{"version":"f7eebe1b25040d805aefe8971310b805cd49b8602ec206d25b38dc48c542f165","signature":false,"impliedFormat":1},{"version":"a18642ddf216f162052a16cba0944892c4c4c977d3306a87cb673d46abbb0cbf","signature":false,"impliedFormat":1},{"version":"509f8efdfc5f9f6b52284170e8d7413552f02d79518d1db691ee15acc0088676","signature":false,"impliedFormat":1},{"version":"4ec16d7a4e366c06a4573d299e15fe6207fc080f41beac5da06f4af33ea9761e","signature":false,"impliedFormat":1},{"version":"960bd764c62ac43edc24eaa2af958a4b4f1fa5d27df5237e176d0143b36a39c6","signature":false,"affectsGlobalScope":true,"impliedFormat":1},{"version":"9e7fd95667e39804dcde85a2a53921ad142ac81530d9f3bcb6dfd5e799a61f38","signature":false,"impliedFormat":99},{"version":"59f8dc89b9e724a6a667f52cdf4b90b6816ae6c9842ce176d38fcc973669009e","signature":false,"affectsGlobalScope":true,"impliedFormat":1},{"version":"4e526d3b0c6e34bb4bfe2de2eaa501ef03976cad32f64f7667def34036f85a2f","signature":false,"impliedFormat":99},{"version":"b34b5f6b506abb206b1ea73c6a332b9ee9c8c98be0f6d17cdbda9430ecc1efab","signature":false,"impliedFormat":99},{"version":"75d4c746c3d16af0df61e7b0afe9606475a23335d9f34fcc525d388c21e9058b","signature":false,"impliedFormat":99},{"version":"fa959bf357232201c32566f45d97e70538c75a093c940af594865d12f31d4912","signature":false,"impliedFormat":99},{"version":"d2c52abd76259fc39a30dfae70a2e5ce77fd23144457a7ff1b64b03de6e3aec7","signature":false,"impliedFormat":99},{"version":"e6233e1c976265e85aa8ad76c3881febe6264cb06ae3136f0257e1eab4a6cc5a","signature":false,"impliedFormat":99},{"version":"f73e2335e568014e279927321770da6fe26facd4ac96cdc22a56687f1ecbb58e","signature":false,"impliedFormat":99},{"version":"317878f156f976d487e21fd1d58ad0461ee0a09185d5b0a43eedf2a56eb7e4ea","signature":false,"impliedFormat":99},{"version":"324ac98294dab54fbd580c7d0e707d94506d7b2c3d5efe981a8495f02cf9ad96","signature":false,"impliedFormat":99},{"version":"9ec72eb493ff209b470467e24264116b6a8616484bca438091433a545dfba17e","signature":false,"impliedFormat":99},{"version":"d6ee22aba183d5fc0c7b8617f77ee82ecadc2c14359cc51271c135e23f6ed51f","signature":false,"impliedFormat":99},{"version":"49747416f08b3ba50500a215e7a55d75268b84e31e896a40313c8053e8dec908","signature":false,"impliedFormat":99},{"version":"81e634f1c5e1ca309e7e3dc69e2732eea932ef07b8b34517d452e5a3e9a36fa3","signature":false,"impliedFormat":99},{"version":"34f39f75f2b5aa9c84a9f8157abbf8322e6831430e402badeaf58dd284f9b9a6","signature":false,"impliedFormat":99},{"version":"427fe2004642504828c1476d0af4270e6ad4db6de78c0b5da3e4c5ca95052a99","signature":false,"impliedFormat":1},{"version":"c8905dbea83f3220676a669366cd8c1acef56af4d9d72a8b2241b1d044bb4302","signature":false,"affectsGlobalScope":true,"impliedFormat":99},{"version":"891694d3694abd66f0b8872997b85fd8e52bc51632ce0f8128c96962b443189f","signature":false,"impliedFormat":99},{"version":"69bf2422313487956e4dacf049f30cb91b34968912058d244cb19e4baa24da97","signature":false,"impliedFormat":99},{"version":"971a2c327ff166c770c5fb35699575ba2d13bba1f6d2757309c9be4b30036c8e","signature":false,"impliedFormat":99},{"version":"4f45e8effab83434a78d17123b01124259fbd1e335732135c213955d85222234","signature":false,"impliedFormat":99},{"version":"7bd51996fb7717941cbe094b05adc0d80b9503b350a77b789bbb0fc786f28053","signature":false,"impliedFormat":99},{"version":"b62006bbc815fe8190c7aee262aad6bff993e3f9ade70d7057dfceab6de79d2f","signature":false,"impliedFormat":99},{"version":"13497c0d73306e27f70634c424cd2f3b472187164f36140b504b3756b0ff476d","signature":false,"impliedFormat":99},{"version":"bf7a2d0f6d9e72d59044079d61000c38da50328ccdff28c47528a1a139c610ec","signature":false,"impliedFormat":99},{"version":"04471dc55f802c29791cc75edda8c4dd2a121f71c2401059da61eff83099e8ab","signature":false,"impliedFormat":99},{"version":"120a80aa556732f684db3ed61aeff1d6671e1655bd6cba0aa88b22b88ac9a6b1","signature":false,"affectsGlobalScope":true,"impliedFormat":99},{"version":"e58c0b5226aff07b63be6ac6e1bec9d55bc3d2bda3b11b9b68cccea8c24ae839","signature":false,"affectsGlobalScope":true,"impliedFormat":99},{"version":"a23a08b626aa4d4a1924957bd8c4d38a7ffc032e21407bbd2c97413e1d8c3dbd","signature":false,"impliedFormat":99},{"version":"5a88655bf852c8cc007d6bc874ab61d1d63fba97063020458177173c454e9b4a","signature":false,"impliedFormat":99},{"version":"7e4dfae2da12ec71ffd9f55f4641a6e05610ce0d6784838659490e259e4eb13c","signature":false,"impliedFormat":99},{"version":"c30a41267fc04c6518b17e55dcb2b810f267af4314b0b6d7df1c33a76ce1b330","signature":false,"impliedFormat":1},{"version":"72422d0bac4076912385d0c10911b82e4694fc106e2d70added091f88f0824ba","signature":false,"impliedFormat":1},{"version":"da251b82c25bee1d93f9fd80c5a61d945da4f708ca21285541d7aff83ecb8200","signature":false,"impliedFormat":1},{"version":"4c8ca51077f382498f47074cf304d654aba5d362416d4f809dfdd5d4f6b3aaca","signature":false,"impliedFormat":1},{"version":"98b94085c9f78eba36d3d2314affe973e8994f99864b8708122750788825c771","signature":false,"impliedFormat":1},{"version":"13573a613314e40482386fe9c7934f9d86f3e06f19b840466c75391fb833b99b","signature":false,"impliedFormat":99},{"version":"db8e26b83e6708b250200435440c326d84dd9f07114c72b33775569486bebd0b","signature":false,"impliedFormat":1},{"version":"846e9152907a7cc89c143e5185e44f93ec2cf923d9a218b8407e2d8a9ee5f2c6","signature":false},{"version":"61804d97c01b5d9757ddf8d5f162150a1f6ce5d18af606428920ffcb47c3c86e","signature":false},{"version":"853ac8085f0bb2eb51f94f6917543fbc7793505641d569134257eff35f3927ff","signature":false},{"version":"90a5bf3ed766993e5acff4bdf673d236f9d5eab61f7378513df1e22ecb47542f","signature":false},{"version":"6457e93bf201f4f50cd6d58557b6ddc12ad51bdc35cfa7ae3ffd14787fd5db97","signature":false},{"version":"ea0f5cb5fd99142e29859ec3d5fc85214cac23a5834a9f7d4beeaf03421fd7e8","signature":false},{"version":"d0bc6215139a7953105ca72f282cac725495494ee3f287ad668dcff2b5f4dd86","signature":false,"impliedFormat":1},{"version":"57765bf96d5d5010756485e0c264526a8204dee375ff90d6fa0ab57c646c72f0","signature":false,"impliedFormat":1},{"version":"e41919db53be31b2b99c31e3fb2f7696f81a23fe30b648d76add8c57e71a88c6","signature":false},{"version":"a1228b3556689bbff73b0f0244b99c186f92649991530a10202db4a118887ab9","signature":false},{"version":"fa4f7a50d9bf0f0848a6606ded81436678f64b3b7977a3a806ac5386573c7c88","signature":false,"impliedFormat":99},{"version":"7f0354fe344db2b484b3b63d850c7daa44b0da0afdf6498073452998252197fb","signature":false},{"version":"e894b7abbf70621f223e6217e5b1ddc00790a87f41b4543ceddb1d80a714c2c6","signature":false},{"version":"7b0e350a74528cc7ae69526de378f36b5347e06f1d2ea39a0d67f54007c0487a","signature":false,"impliedFormat":1},{"version":"ac03d9dd0b14b1a8be417b41aad55fe78c6be6207b379c14dad813ff41d3b3ab","signature":false},{"version":"4464014a2fa414fa82e3a8a9084aefa9b667f6999d2d4fe44519e5d0f151d152","signature":false},{"version":"4e649ac6798a40b20d57c8dc32b106c877236ce5dfb72aed0d03d3e9457d7063","signature":false},{"version":"e76f888e1511e2b699b9d10bb972a4e34a2ffd5d1fb0f6ec08e2e50804ee2970","signature":false,"impliedFormat":1},{"version":"9db0e2142e4b3a896af68ff9e973bd941e03ff6f25e0033353dc5e3af9d648c6","signature":false,"impliedFormat":1},{"version":"7a3f38519a1807335b26c3557dd7600e11355aef6af0f4e2bf03d8b74ec7b0ca","signature":false,"impliedFormat":1},{"version":"c8ec757be6c03d17766ebce65802bd41703c7501f395be6f2d3283442fbe37f3","signature":false,"impliedFormat":1},{"version":"467743fe014ba642d20c5bf9e682284edd096567f62107aa64331f90650cbcec","signature":false,"impliedFormat":1},{"version":"fd6d64a541a847e5ae59f78103cc0e6a856bd86819453c8a47704c5eaf557d04","signature":false,"impliedFormat":1},{"version":"84be7d50ab02318f3e458d72a7b6b91296ed0d724892ae6d718df3bacb91d7c6","signature":false,"impliedFormat":1},{"version":"a4e6b39ed57ead478c84677b2c90769b9fe096912320f7c7f65774e550d0ad9e","signature":false,"impliedFormat":1},{"version":"c6253a9320428ee8f8ec66246157de38533682b870bcbe259c634b905e00c06c","signature":false,"impliedFormat":1},{"version":"f1aeccd71b66219f5e0071732e7d836043b37f658e61d05c3a646e0244f73e7e","signature":false,"impliedFormat":1},{"version":"e8935dc2e290becf8a37c6880341700e83687cbd74f565cbd9cfc91232ff8cc6","signature":false,"impliedFormat":1},{"version":"f22a4854da501581589462ab8ab67d1ffe7d40a1eef961f12cf50f04f024773d","signature":false,"impliedFormat":1},{"version":"cf840ecf6d5e70ac184ed2db77b76ddcc90a2671a10e445009dcf46bbf2d3b62","signature":false,"impliedFormat":1},{"version":"e0c33120f2909ec13da5623c940351896b7599c151b36652a59d582ac4a60228","signature":false,"impliedFormat":1},{"version":"edd1555324ca186dfa924a41c7121a892854e22cc50269435a81421b76183ac6","signature":false,"impliedFormat":1},{"version":"2a4315b8b6710449f9c6d6edc89cfbb92656b506041892b378c6c8fc3b7aa400","signature":false,"impliedFormat":1},{"version":"99ca75ffd830a8b51bea29a7be0927e9b7f998d1b33835b6d5aef8b9621763d0","signature":false,"impliedFormat":1},{"version":"d49a2811b9782d2bbb51f3828dbff29a266d0375422ffd2008290f8a8dbcefb0","signature":false,"impliedFormat":1},{"version":"7d194ef85fc529c41556658bb2132d059b901cf2d784669a2de5142665841e1e","signature":false,"impliedFormat":1},{"version":"758462bfdd5286521a86b89657bc1b22495f39507560a7c4859fd5321b90873a","signature":false,"impliedFormat":1},{"version":"666a19079e45916f373b3aee42f3016692109bda253e3aa533628c7984626969","signature":false,"impliedFormat":1},{"version":"e96782e7f451e6d44eaaf3f4f5a52442ee21911740d5c758e78149aa7ee00c07","signature":false,"impliedFormat":1},{"version":"6f4577c261a33c7cda23c31ebe96abfb752b84875107d887fb45b689aaab591f","signature":false,"impliedFormat":1},{"version":"6985210d8335a62d0e45b74dbcb11e75b0d879afe3657e685e5a50e38d11ead2","signature":false,"impliedFormat":1},{"version":"a6fa56092df29c5c213a06ce91840f242dd3d6233d7b21e90aa91b7727892cf4","signature":false,"impliedFormat":1},{"version":"a3ac5c28c6638c006c8c08a3970e54717f556424dea72b48c780c3a7654dc8c3","signature":false,"impliedFormat":1},{"version":"ad72b15d9d6413bb7d851d3ad096862dcc20521e2c8260b49fece30acad0e891","signature":false,"impliedFormat":1},{"version":"e56977119e43b2cc059bac9568b6133e61049c6f9222d7db36b03c5aa21f03f5","signature":false,"impliedFormat":1},{"version":"beb5edf34b7c9201bb35f3c9c123035d0f72d80f251285e9e01b8d002dc0df75","signature":false,"impliedFormat":1},{"version":"52124f927dfdf1e5da9071c34c3d9a324788ba08925368a149e5213546dccfd4","signature":false,"impliedFormat":1},{"version":"d01fa7e8b57175358ee691e2b29be1bd716c72f4460e0ce0f8e1583e205738cc","signature":false,"impliedFormat":1},{"version":"e552130d7d49731d16365b4d0b52bc3490c280e946b702403648e3c4d4ebfa3b","signature":false,"impliedFormat":1},{"version":"af7ddd1cc6649a936fe4ccd4cbab19be4e6f200891b21a85a8a83184645b2c97","signature":false,"impliedFormat":1},{"version":"9ad6c4be6e417e58362cb18f2c6a07cc9f3ee14fb178afb0ad92354ab369a94c","signature":false,"impliedFormat":1},{"version":"7dcf8d015bc99e7e456a9e33d069bb5653f57fe19fe8375536705bff5e370393","signature":false,"impliedFormat":1},{"version":"4b3c3eecbd6a202196657da67f8d63fb300b1f4cfc3120609c28e59fc8b4427e","signature":false,"impliedFormat":1},{"version":"0c5c15c6fa329c0c3020d2b9bfd4626a372baedb0f943c5f8b5731fab802da4e","signature":false,"impliedFormat":1},{"version":"810ea75f2be951600569b38299a57fdf6013721fc9e40d8588b12d3bde57adf2","signature":false,"impliedFormat":1},{"version":"c9de0460155763182925f8bae41738dc0e263a70df0c17ea91874bd427dbe6ea","signature":false,"impliedFormat":1},{"version":"6a1e9ca07648a8ef6dbb611e1e93923c2155d91e2be3f31984f74c0098e1cda2","signature":false,"impliedFormat":1},{"version":"c03f6401f9fc9bd9038c1127377cbef25697116a3b95c0f28ec296076cd0fed5","signature":false,"impliedFormat":1},{"version":"6a786d3e7f5f9d50ac5c774f440cbbe974e6c66e4a953648af3c0ad463178223","signature":false,"impliedFormat":1},{"version":"e4a86483f52f3d08dfe69c231a051b6c1044e79e7193f80b52bccd11d7f252f0","signature":false,"impliedFormat":1},{"version":"89f00e35a09d867885264b24039e4e390e9a616c2b1ba73aead49f0645170167","signature":false,"impliedFormat":1},{"version":"96ff9deaf52b679a21490b2375b6023f21f01c5daa415112862c3c886f6d0632","signature":false,"impliedFormat":1},{"version":"3fc69c9224905fdfb62fec652d796673504444402e84efd48882297c5602ad8f","signature":false,"impliedFormat":1},{"version":"b6e0277eb6f7f764a3ea00b9b3c650b5ebb69aae6849c322b5b627e5f926a216","signature":false,"impliedFormat":1},{"version":"41682402ed20d243a756012f952c399fcb60870acd17652521a4298fd4507343","signature":false,"impliedFormat":1},{"version":"744966884196e5bcc2d46ff63bbdd0809e2c18ad95081cd06501d59e428ddabc","signature":false,"impliedFormat":1},{"version":"9fb19a10372c04bb5f9e694544f0a6d0e0373f62a1dcba28a72b1d4aa7ea9005","signature":false,"impliedFormat":1},{"version":"325060545391e0ee693b2a972b374a55c9abf18eff6277ad42e7a29b9022e5a2","signature":false,"impliedFormat":1},{"version":"0f0f3c13ce0a8d041422919e0089910bf5e7def9bbcdcf0d4d10311a2b2787d7","signature":false,"impliedFormat":1},{"version":"5991cd90fac6cb67cfaf069248767c212c5e5b82d73a0452d0513dd04c0ec482","signature":false,"impliedFormat":1},{"version":"eb65e93c3597e597892b805275aa60c7158734d58c4407c9c2d384e08eca3739","signature":false,"impliedFormat":1},{"version":"e54d57f1e648299fcb77ede901ffef62b6fd47c28659fb6e06009f64b134b2dd","signature":false,"impliedFormat":1},{"version":"d176cf2c1237243105e40bd06bee14acb9bbda3fd7a9e3f0d7770084e4326158","signature":false,"impliedFormat":1},{"version":"7150b7b4375cc347daa65b2abde328bafb9fe3e0f11843ff560458be69a2327f","signature":false,"impliedFormat":1},{"version":"7126c1da2df14d50e69a6028c0152c431530a00ce0fec1b5785ddc434666e4d3","signature":false,"impliedFormat":1},{"version":"202095d68ca89dc725f1ba44b3b576ea7f82870fbe06233984adca309b288698","signature":false,"impliedFormat":1},{"version":"5c5b20707f157894a4cf7339560fe1caa0717ca5a39c97fc7ed29103926bf345","signature":false,"impliedFormat":1},{"version":"68aafaf52b5490e853da2c167e5077e9404e511c5ce7773c43ebabdc26f890f2","signature":false,"impliedFormat":1},{"version":"d48617c56f0232564df9d556a3f416d43d418d03e8998465294c0b63c5927c02","signature":false,"impliedFormat":1},{"version":"a89c6aca351cab815887f5af8f59c9aa311e15d5ac21cb41dd4a8291dce8cee7","signature":false,"impliedFormat":1},{"version":"3444353044f5e04f9283a4d9690898626ee34d0e4568774e8dfd8cbb205b2166","signature":false,"impliedFormat":1},{"version":"b33ba1f439377dee2342535c4ac55a7189f27b29da86a4b47eed6c1f1f37f9f0","signature":false,"impliedFormat":1},{"version":"c70d66e2188d5e934baa895db1e014e240671db256b8b4567aefbae171599ba8","signature":false,"impliedFormat":1},{"version":"d619dd4fd8e1a72f2d447c26b9d054c6e0cac0f5d11347d50229759fe0b051e3","signature":false,"impliedFormat":1},{"version":"aa370a6fc6d9ff67202409250764237a38b81cc04df31890cb553ade8848d5be","signature":false,"impliedFormat":1},{"version":"0dd7804b4fd9c5479c0350c764e7b234a6fc50841e9e9d37e6925f19b1986d61","signature":false,"impliedFormat":1},{"version":"8832f6dfbcf8ef36a4fdc8c464824b60d80e915495cd19e08be6f22862901883","signature":false,"impliedFormat":1},{"version":"6daa06e5a06bd24095d6de71a47c92ef0a6a1bf5b32ddc9f2b933f35d054c857","signature":false,"impliedFormat":1},{"version":"c14767dd60d02d8c7d92b2c09721d0cc04daffe1f5ad74bb2a0ed102b2237d84","signature":false,"impliedFormat":1},{"version":"1544f5696c2da2fb3657cea416de05f911df8b309b2ba95279af570d1368a4dd","signature":false,"impliedFormat":1},{"version":"1be9d12a91cd95a91ef1b793dbc11b70ca80ab66238a900e51286ca0fb2fea6c","signature":false,"impliedFormat":1},{"version":"7fc6c82eae4a0a3e0425b85c8d4e89f7a558cc9481a6945d6e1c53b41c249e67","signature":false,"impliedFormat":1},{"version":"4258d8fb8279d064ca8b8c02adb9493ce546d90419ba4632ae58eb14a7cb7fb6","signature":false,"impliedFormat":1},{"version":"1dfc02f19f27692bd4b6cc234935d15a32c60a93f34830726450ff15e7fc8d50","signature":false,"impliedFormat":1},{"version":"e2578d703fc6f157315109dc0a8d5ba2253cdb358d558c00002a22898aa81e4b","signature":false,"impliedFormat":1},{"version":"40e925cb2f28b2cee51ac61834975fcb61142ca2b730cbf81c87b8d5aa111c48","signature":false,"impliedFormat":1},{"version":"8876ab57fb4b272ca5059a6e229cb1798dfe20566d1a631914e7b2e5364c5529","signature":false,"impliedFormat":1},{"version":"63797cde2043f6d8d0dd426819ef25da796561a12c7fe0fcb6bcc97742bb7716","signature":false,"impliedFormat":1},{"version":"9712400fef20f493586708a85c291ac9bdd6f0d29c05b2b401cb92208f2710e9","signature":false,"impliedFormat":1},{"version":"601331538f73dbbbdf865d5508dffcf172d3a345fa2731b2a327b7d9b37e9813","signature":false,"impliedFormat":1},{"version":"3ffa083da88679f94bce7234c673fcbd67c0001b0856c9b760042b2e1add5f08","signature":false,"impliedFormat":1},{"version":"c61bec1d381d3a94537e8ac67c7d894aa96e2a9641e7b6c6ec7b24254c7336b1","signature":false,"impliedFormat":1},{"version":"4c6f94efb7f9d4f34d9e7a2151d80e2b79963a30bac07352cb4e2a610b93c463","signature":false,"impliedFormat":1},{"version":"f197a72c55d3d0019c92c2eff78b2f3aab143d023f0831aaf06b4a528ac734b8","signature":false,"impliedFormat":1},{"version":"fb888c5a5956550e39e7bcaaf1fe5aad043593df897f00f37cdba580393003f7","signature":false,"impliedFormat":1},{"version":"3ac5d50f1f1c95405eb72a4230b1bc83cc743474a78e336669200479c03b414e","signature":false,"impliedFormat":1},{"version":"174834865f27ee63be116cf7252c67b42f1144343efccf96ddc38b3254ffdd60","signature":false,"impliedFormat":1},{"version":"b29bdf363cb3c7457d5d3f7fe8158a84016a63f7dc7c54893799843d869ae808","signature":false,"impliedFormat":1},{"version":"b6c86566dc5985bfc85e7c9d2186e95e557f04fcbfdaa4305b1a5b05d52a63af","signature":false,"impliedFormat":1},{"version":"469f145eafac81b725762804e5115079e925432a1cee7ca6474afb1eaeae957f","signature":false,"impliedFormat":1},{"version":"d8d80cee8a0304e13a1e10c82c59e6c58601e1795a962c15ff8a70005036a65e","signature":false,"impliedFormat":1},{"version":"6a37d31e829363e42d2c9ea33992e5f72d7132cbe69d3999ebb0ec276a3f220d","signature":false,"impliedFormat":1},{"version":"bad1a84baedfd6e34353db65f9e8dcf62c1dab6974bb7e7cbf3175b71181e68c","signature":false,"impliedFormat":1},{"version":"06c9ff76d57f08ee25dcb3d17da952c32645de6578753b1eadf7bcf38c865482","signature":false,"impliedFormat":1},{"version":"dfbbd2888718ed9322cb11ffa93dfa112ae04b9049e7a88ea90bb191eceaedc6","signature":false,"impliedFormat":1},{"version":"5a3d42d4cde9d8f72910df5f64eb479b7e6ceac3541ecba6e599fbd3d0682f4f","signature":false,"impliedFormat":1},{"version":"fa4b2b13eaedb94b33fac8b8aec5176d7d2060bd1d953a651c187fd1f75e94e5","signature":false,"impliedFormat":1},{"version":"88536d645d9532b2def693ae1d73507d99bcca5d474df07351ae0ad3805e40dc","signature":false,"impliedFormat":1},{"version":"b3e0e511a59924e0d89df3d6b36c8faf157ddfc5aacc2a1b28cd6b6259b2f505","signature":false,"impliedFormat":1},{"version":"e523455e1d8b4e6e19da3493e696206d69d50643307e22f90e1325a3d49c2b94","signature":false,"impliedFormat":1},{"version":"8ead91946edf502d55fd5f1584c15386a70e5241d3fb4a800baa1f43cf51bfc2","signature":false,"impliedFormat":1},{"version":"0e61ab0c786c3e3825af3c359208f682aab24f72294497d92afea0bd6652ac35","signature":false,"impliedFormat":1},{"version":"d68f20525ae9abe3a085826a692bcfecd5ff5342adef9f559cce686ca41b6f45","signature":false,"impliedFormat":1},{"version":"c6e45ae278e661a4228e2a94339d0b4b9af462ee9720ed6f784b3a77337286ad","signature":false,"impliedFormat":1},{"version":"12d5a54442b46359ffb1df0134bc4c6d8480e951cf1078e1c449e0e36550f512","signature":false,"impliedFormat":1},{"version":"ab608346618d26d52776b98bf0cb4617d30f8cec7dff6f503cdb3dd462701942","signature":false,"impliedFormat":1},{"version":"bbf86228e87839ea81a8bac74f54885255ed9d1c510465fadca55a7a6a3283ae","signature":false,"impliedFormat":1},{"version":"df71667fe8e6b3276ea5fe16a7457a9d18a3a3b30e0766d259bb8029de2a4ec8","signature":false,"impliedFormat":1},{"version":"b34ed5ec21dac2e66e304775b46334bf6fb481f450783a309e53f75c24dbc765","signature":false,"impliedFormat":1},{"version":"71fe886db8cb12e11376512b6efdabb8cd96e4c2f4ad8ded5f56f69e8b4ae26b","signature":false,"impliedFormat":1},{"version":"78b0a989532cb9b1016dea7b266d61a9ff5df7588e21f546bf142bbadcab4b3f","signature":false,"impliedFormat":1},{"version":"e5383048a7261fbc6d6a92a813f71b5dbce2c9888d8488de9dcb937290ad3fea","signature":false,"impliedFormat":1},{"version":"cbf296365f5dda152e06d25d3a1a602ca6dfb88985b539e5b7c22582af21f080","signature":false,"impliedFormat":1},{"version":"cc842002527d85469442ac0bb86ca87f8b06638c3dd302113f0dd1e2246d85ff","signature":false,"impliedFormat":1},{"version":"adccb317950f68bce5a862a570ea00c754f65b806e9908cd7ac79aafc8a7bff8","signature":false,"impliedFormat":1},{"version":"a4257472201f865c9e110646cd23183bc5e9646067ab5a4c7a299ef61472e1e7","signature":false,"impliedFormat":1},{"version":"f67c33db397851720be7dd5486dcd0440186fd62e3f9bc8df992249a86bba18a","signature":false,"impliedFormat":1},{"version":"e8193b31aef5ac0ded76bdbdb2492e46a712c562c7f117be5394dfb655a87918","signature":false,"impliedFormat":1},{"version":"44ed745d493f40340bef9e6c5602214f62165aabc49ae9ca1f1d9be848ec994b","signature":false,"impliedFormat":1},{"version":"366a02de58af1cd7cd081e97fdc6a64d44a741120e470712f98f5cdbc2558ea3","signature":false,"impliedFormat":1},{"version":"22133c0cfa2e5f9001b9b46ae4e98aa48adaa7e298bd5f1a3757d27c8ebe0a7f","signature":false,"impliedFormat":1},{"version":"14b4e105e6ba5fcf378fe97f7be956d95d3ae9c3f21f65833d20050a679955a5","signature":false,"impliedFormat":1},{"version":"c7b2399d36ef76eba067eeebec5725406778b85e515a3b7cee34f38775ba0e95","signature":false,"impliedFormat":1},{"version":"3cf52ea2d2f71287918b36daccc13f8bb3255f6de0a92980e3028a15bae83443","signature":false,"impliedFormat":1},{"version":"a8ffecbac87229515fa19630409bbd78bf2c2abc2f83ca38f11d281b4c0db40d","signature":false,"impliedFormat":1},{"version":"5941d9fa8c42318679bb5dcf7d4304acde6cf96c6947bc045f424eb1b190d6e8","signature":false,"impliedFormat":1},{"version":"f1539a941db422140ba02fed80db5f03f2efe4d6c9edc7473302b7df3f9e3035","signature":false,"impliedFormat":1},{"version":"bc747047f10b1f0228452f2ba0e77d641aeeb80104251bd6fe597893180208bd","signature":false,"impliedFormat":1},{"version":"81c396584c226e26bb9233346c41bf324c0a580d9600a219445588d2ce47d242","signature":false,"impliedFormat":1},{"version":"26580d84e069bc7e09ff8191a2e23ace3c62acc04d41cbc15a1435921af3617d","signature":false,"impliedFormat":1},{"version":"e5dacae40e8df290a74adb0468b4df1e5424646ede269afcc86cbff819598744","signature":false,"impliedFormat":1},{"version":"fdc7c80234f3514e6684ba92d76eb8a3f7f421d7afed8c8c5a4e38ac5c09dece","signature":false,"impliedFormat":1},{"version":"ba99a89f5645bf0dd9017734d3522dde3604d3d616ab92f13c429bee6047885a","signature":false,"impliedFormat":1},{"version":"981a45764f10658057ce2e063f323db3abafe64ea9ab3b6da4d6db3d5be2ab30","signature":false,"impliedFormat":1},{"version":"42cc526e9e8ed1a036d270823d647084597a53fa131ae6cad4553e89252739cd","signature":false,"impliedFormat":1},{"version":"fcb479b75cc2633ead6bc979dece4e0e9a31c9070352a0645671fd65762ad8d1","signature":false,"impliedFormat":1},{"version":"6ba01c5f3fbefad3c5fc491091f5be9efdb24b40e520f71571e027f404620f99","signature":false,"impliedFormat":1},{"version":"88287b61d5b7b1196d92e47c3748d094ab50a37ace67207f9a4cde73ed33d713","signature":false,"impliedFormat":1},{"version":"1455d4cc7e25a7a9abb85df11fa9545b64da27647f0b5d615816895b58d08ba8","signature":false,"impliedFormat":1},{"version":"fec0e7056aea3e3ceed3f02ac0591d5c45589e19ebd517b9a1cf342678be5721","signature":false,"impliedFormat":1},{"version":"7394d433c1f3307951f6e0a247fc645ef3760d9cec4a38a9fab68765dde74796","signature":false,"impliedFormat":1},{"version":"d6c7209dff6b430c2f8730281dcf06b1a738f60d9b9968fdefa282ace986da92","signature":false,"impliedFormat":1},{"version":"5dcf68b529709161444768647090f94d19dd50310cd937f3732865d83164dc2f","signature":false,"impliedFormat":1},{"version":"6d3f190b87149ee8867343b2277810e682f53c4544bf263813973623962f3a6a","signature":false,"impliedFormat":1},{"version":"edab1807a237e21867a9ee7a64308fd6d37f75fabb228805873ecd7a39d3b2a1","signature":false,"impliedFormat":1},{"version":"d2f25b7bf88a2031886183815236d9d05a5b2d32d5cc74636090445c7f6e9626","signature":false,"impliedFormat":1},{"version":"f59869ad0db7e49bfd5021fec738031bcd4386623ada5666cf80facc0357c700","signature":false,"impliedFormat":1},{"version":"76439253e23d96777dde88a1a8fc86a0d364b5406f642f14f6cf4a3d91bd3575","signature":false,"impliedFormat":1},{"version":"e16c9ed120424bb53ad690047f8b96e49623943e42901428445b776ccaff3975","signature":false,"impliedFormat":1},{"version":"c16b36187b90962c7c50228305257490d519768f4f117bbcea79c11eafc89540","signature":false,"impliedFormat":1},{"version":"debdc7421eaed9084f90c4149f094bb832bf3f833ae5f084cdb7596428cf1512","signature":false,"impliedFormat":1},{"version":"7c5c1fbc3746048910537b16f0244c772a2e1b5764ccbee64ca44c224aca0958","signature":false,"impliedFormat":1},{"version":"54097f6c2cf04a44a8928b82a96b11c8e6b14f2c39262f223b69b325d3fa8aa4","signature":false,"impliedFormat":1},{"version":"c91142cf2edcfa66df568dd16dae1dd2e1d2b23b3c68c0ef0dc6aa7290b3e824","signature":false,"impliedFormat":1},{"version":"7258729034dd466294076442c084ca2794e5bf6a18881696b11f9befcdd1146e","signature":false,"impliedFormat":1},{"version":"68d9cd14aed809c49cedde16011dc9a0e243bfc526e7140b254c27f90f2620d2","signature":false,"impliedFormat":1},{"version":"5fc26d080486b85ef079179870b541136e212412dd432f0dd1a752c5f2eeb109","signature":false,"impliedFormat":1},{"version":"e7f734a2094ecfbc3f9c40c4567239f42e2180d7c1d0274a8c373093a5b267c1","signature":false,"impliedFormat":1},{"version":"1ab3b857ad816e17897010a7abaf69a873219e8cf495350701b5688d97562696","signature":false,"impliedFormat":1},{"version":"00edee5f99654b9387949790be7db3713365fd7a6a681419d7b5bd65b2ad84b2","signature":false,"impliedFormat":1},{"version":"dac560a21f43a47a4d5d09a3b534be9a6ed8dcc8b0fb56cbcbd6f6ed163e0638","signature":false,"impliedFormat":1},{"version":"4e0cd765b1da5dcedde856a357f2301e88bd0e7bd96f0fcf518cda918b99063e","signature":false,"impliedFormat":1},{"version":"4ac2c2dada287d88fb886e6e846026d531b8921e25c84de8882b6822b28e6db8","signature":false,"impliedFormat":1},{"version":"baeb5b10d303c1a423431fbb13227a9a7697e68ee3c26988d602a3fb21d52cdd","signature":false,"impliedFormat":1},{"version":"ae013d9668e5b179ae6d18c2fdc1d979d36048e1e14a301344ff1fba04c5b56c","signature":false,"impliedFormat":1},{"version":"32afc6399293b6f02842c4d4adba5bae6bab865bba3c68bfb10df06f11132e96","signature":false,"impliedFormat":1},{"version":"bd87a5ca2da958ed091a2790078a4113795999df57855bbc715b0653f79cc297","signature":false,"impliedFormat":1},{"version":"a3c1beee2c7c8b30a8968ff9a7ea7fcc7ab9af665df1e1d50e36e51f57bec4ea","signature":false,"impliedFormat":1},{"version":"270aac161eda482cf3d0a324d0e56719a0ee898d110e3afd0418d989fb025c41","signature":false,"impliedFormat":1},{"version":"061c489268c2c1050fea2bda080d9f342f2a5b4562e20ef86698c0a65c2e26a7","signature":false,"impliedFormat":1},{"version":"f3e7892784b7d862ec0a3534c7c87048b9c1ec30aed3cd6255f817b528b38691","signature":false,"impliedFormat":1},{"version":"d5faadcd0a2133574e4f6f19400dbb2474fc35e158832f0f14bf26b220290e7e","signature":false,"impliedFormat":1},{"version":"2aff3c969f006ea2fa84da1525ac184a84fe2e4eda593cee8847f764555141a3","signature":false,"impliedFormat":1},{"version":"69792d8faea92295395ad1b8c98adc90dde979c7e4cfa98e2c617fe5eaa6400a","signature":false,"impliedFormat":1},{"version":"a044eb1be8fc48a259a7f988c44bd23eaceb6dc65a84782f32e9db77c22793d0","signature":false,"impliedFormat":1},{"version":"0b815def1afe22980cbde6c2fc814b80c70d85a3c162901c193529e68212ac62","signature":false,"impliedFormat":1},{"version":"a2ac1778dbcd36c5660067e2bb53cb9642dd1bab0fc1b3eea20c3b5e704abdb7","signature":false,"impliedFormat":1},{"version":"c43ec0afd07a8c933fbc3228333a40ec653d6feae74561e0409c1a6838cd1bc3","signature":false,"impliedFormat":1},{"version":"c6b58be9ad789430aff7533750701d1bf7de69743c97443ad0eb2e34ac021aea","signature":false,"impliedFormat":1},{"version":"76eb4512fc61c43a5be09f3451b5499601f9323e53af82d3ede0072ed8664b1f","signature":false,"impliedFormat":1},{"version":"60b51f9e2afff9b795704412503e85143631a7e2a5077fe4a36edf67f742348a","signature":false,"impliedFormat":1},{"version":"04c1f616c16ab14f485f00b8a9061edb49a7cb48d3dfdf24a9c257ae25df2023","signature":false,"impliedFormat":1},{"version":"b22ce67d8165eb963e4562d04e8f2d2b14eeb2a1149d39147a3be9f8ef083ac3","signature":false,"impliedFormat":1},{"version":"791e53f4962819a309432e2f1a863e68d9de8193567371495c573b121d69b315","signature":false,"impliedFormat":1},{"version":"85de5c3f7ad942fbb268b84d4e4ca916495f9b3e497171736e6361d3bf54f486","signature":false,"impliedFormat":1},{"version":"edade900693968f37006614c76b04573ac5f6c01c1adda98b8584f51956ea534","signature":false,"impliedFormat":1},{"version":"7f3b0ddd51e4fb9af38d5db58657724e497510110a13d80efc788ec2b57bba49","signature":false,"impliedFormat":1},{"version":"1c1318673407a1820e91992fbd8712639db55085753a517e915987083b8dec8e","signature":false,"impliedFormat":1},{"version":"13876cb9c05af8df22376541ade85c77c568469dfe6ca2dfa100c3269b5d391a","signature":false,"impliedFormat":1},{"version":"017524481107a062d0d25510ee37db024c4007f9718c1e8ebfc462e1f3e6546b","signature":false,"impliedFormat":1},{"version":"f8f2c5fb7c00b1f8c1e4ce73b1c709038b5a636cc1f932b60f274232fde84bc7","signature":false,"impliedFormat":1},{"version":"d6e5c561fa71c7917382bf802b810ab4d36f22d6b881ec9501bfb67b6ef46134","signature":false,"impliedFormat":1},{"version":"777c10dd534ae2067ed951fb7d24ae652ef8126c032a3d22b28d8affa326e3e5","signature":false,"impliedFormat":1},{"version":"b4c7e187c949e6101a96d5b70652f46ab80856cf8f11998bfe514a7ff4a292ab","signature":false,"impliedFormat":1},{"version":"a803a980fd506c0b826e7e5cd951fb3e9240c48b4dff31ad6322d43415713971","signature":false,"impliedFormat":1},{"version":"7488242f1a13d6ab44fe89d213e22104c719c5ddbafa7a48cd8887e10116835d","signature":false,"impliedFormat":1},{"version":"5c4d8c1b3358c4620a0f511d728209755d803383ac9c9988d96c6409edbd4407","signature":false,"impliedFormat":1},{"version":"caa3abba08ceae9039c77b1b59361d6f70bdc7bfa91fe4345902189de58d8ba5","signature":false,"impliedFormat":1},{"version":"86a4febd13c5b2d5a3882be0e1219647622b7806309f8074ea46d1dc0ad10616","signature":false,"impliedFormat":1},{"version":"b25b38149d98241cace0f1a6ae6b7a9b15b92f6ac413f73ed32f1da89f09b22a","signature":false,"impliedFormat":1},{"version":"a7d4468ef7b5c65d5c92a59c61f7335ec81b17ebbe535eb1a9586ccb4027d001","signature":false,"impliedFormat":1},{"version":"3443676fd3b09155af8c77b439ef7d580f468affab60d348f5767039b7f6b790","signature":false,"impliedFormat":1},{"version":"6218980c3c38ca6478374f5612bef0e81aac260b58b88a61629230c87fc561ca","signature":false,"impliedFormat":1},{"version":"d104a855e65ff9c63118a842af3f4b9387145b527b93cb97858ae54a2383cc21","signature":false,"impliedFormat":1},{"version":"c4a48f07b1f9aa2488694a71b20ff0a210d4241bbc891d90cce6080cb55723f6","signature":false,"impliedFormat":1},{"version":"9766f11f0ddd5075cd1600df300bfe523b075497b734c0bf93dab282a1e9f54d","signature":false,"impliedFormat":1},{"version":"8b567a4728ed7c5c18728c60139b85ced174bde151d8b7389f6be38130328cdb","signature":false,"impliedFormat":1},{"version":"79963c52505492bb0be1009cb654304eeda489de48a57c32f2ccc57ba21a5d0f","signature":false,"impliedFormat":1},{"version":"c987e5e8abf1800f7d088c8b1def7d7468147a56c01fefe6f60604a1f0ca604e","signature":false,"impliedFormat":1},{"version":"b7c873fd5222a2f2b756c77bd398d60d86cc9d9687761af60b6fe895fd5cf18f","signature":false},{"version":"a4f3db3ff5b980e69cacc43167288bda6d4bb2228d49a7a81ed3c57c115cf338","signature":false},{"version":"c90a0210820c936af5065cd66f7f927c5fa29a1248e8314d8f299a434a9ead3b","signature":false,"impliedFormat":99},{"version":"d3cfde44f8089768ebb08098c96d01ca260b88bccf238d55eee93f1c620ff5a5","signature":false,"impliedFormat":1},{"version":"293eadad9dead44c6fd1db6de552663c33f215c55a1bfa2802a1bceed88ff0ec","signature":false,"impliedFormat":1},{"version":"833e92c058d033cde3f29a6c7603f517001d1ddd8020bc94d2067a3bc69b2a8e","signature":false,"impliedFormat":1},{"version":"08b2fae7b0f553ad9f79faec864b179fc58bc172e295a70943e8585dd85f600c","signature":false,"impliedFormat":1},{"version":"f12edf1672a94c578eca32216839604f1e1c16b40a1896198deabf99c882b340","signature":false,"impliedFormat":1},{"version":"e3498cf5e428e6c6b9e97bd88736f26d6cf147dedbfa5a8ad3ed8e05e059af8a","signature":false,"impliedFormat":1},{"version":"dba3f34531fd9b1b6e072928b6f885aa4d28dd6789cbd0e93563d43f4b62da53","signature":false,"impliedFormat":1},{"version":"f672c876c1a04a223cf2023b3d91e8a52bb1544c576b81bf64a8fec82be9969c","signature":false,"impliedFormat":1},{"version":"e4b03ddcf8563b1c0aee782a185286ed85a255ce8a30df8453aade2188bbc904","signature":false,"impliedFormat":1},{"version":"2329d90062487e1eaca87b5e06abcbbeeecf80a82f65f949fd332cfcf824b87b","signature":false,"impliedFormat":1},{"version":"25b3f581e12ede11e5739f57a86e8668fbc0124f6649506def306cad2c59d262","signature":false,"impliedFormat":1},{"version":"4fdb529707247a1a917a4626bfb6a293d52cd8ee57ccf03830ec91d39d606d6d","signature":false,"impliedFormat":1},{"version":"a9ebb67d6bbead6044b43714b50dcb77b8f7541ffe803046fdec1714c1eba206","signature":false,"impliedFormat":1},{"version":"5780b706cece027f0d4444fbb4e1af62dc51e19da7c3d3719f67b22b033859b9","signature":false,"impliedFormat":1},{"version":"049a505f6e3afa40848056cee27e66562e31a8d287f1a3312ea8007f51e7755c","signature":false,"impliedFormat":99},{"version":"419834b7cbefad357b0a82dcde9288c9dbc0e4f756bd1fd4aacff366e347fc62","signature":false,"impliedFormat":99},{"version":"f17ed72d1b1882ab6dc66d45e699f757d15bba0807af2fc9c3ec98fe367611c1","signature":false,"impliedFormat":99},{"version":"3f4248944c380b995618847b254e64c4fad48e31650c692bb01424df48618a86","signature":false,"impliedFormat":99},{"version":"6ca0b2845c6e95e75e42fe99026c7545c8b4cfd9bc1750bb5421b0699ef89c35","signature":false,"impliedFormat":99},{"version":"86cfdab4c4aa1f2826cf8599128e6558ca86976b29445882f9b0f8e30004c381","signature":false,"impliedFormat":99},{"version":"4415501cd1ecf32ecb97b5671689b1c20bafc63cda794dacb9f483c4f2bd1fa0","signature":false,"impliedFormat":99},{"version":"b03cab886d1ea68398cec813d86857b97f7100fcc17ad8eabdb033dd6251953f","signature":false,"impliedFormat":99},{"version":"9dcb107d4bd0227f0b407099ed8da673e06e034f540cb70f3c7bbb82c27e19a5","signature":false,"impliedFormat":99},{"version":"7ae48a41eb14b67618693cd9a9565c932c5685be8ce991372190894ea2ebcd48","signature":false,"impliedFormat":99},{"version":"446b866091c8b61cdd9e03d16a33f977f425d1ca14f1cc445e18fb08a9d76d6b","signature":false,"impliedFormat":99},{"version":"39357c09c8037c0bf284e65ff7e7bf8068b7d9f6c547e32df0eb74d254eb9e33","signature":false,"impliedFormat":99},{"version":"f3d8c757e148ad968f0d98697987db363070abada5f503da3c06aefd9d4248c1","signature":false,"impliedFormat":1},{"version":"3e8b97f70a096dd3ce1757d460810e58e4a7de0d3d0ddfe430d02dc27295b3f4","signature":false,"impliedFormat":1},{"version":"309ebd217636d68cf8784cbc3272c16fb94fb8e969e18b6fe88c35200340aef1","signature":false,"impliedFormat":1},{"version":"91cf9887208be8641244827c18e620166edf7e1c53114930b54eaeaab588a5be","signature":false,"impliedFormat":1},{"version":"ef9b6279acc69002a779d0172916ef22e8be5de2d2469ff2f4bb019a21e89de2","signature":false,"impliedFormat":1},{"version":"71623b889c23a332292c85f9bf41469c3f2efa47f81f12c73e14edbcffa270d3","signature":false,"affectsGlobalScope":true,"impliedFormat":1},{"version":"88863d76039cc550f8b7688a213dd051ae80d94a883eb99389d6bc4ce21c8688","signature":false,"impliedFormat":1},{"version":"e9ce511dae7201b833936d13618dff01815a9db2e6c2cc28646e21520c452d6c","signature":false,"impliedFormat":1},{"version":"243649afb10d950e7e83ee4d53bd2fbd615bb579a74cf6c1ce10e64402cdf9bb","signature":false,"impliedFormat":1},{"version":"35575179030368798cbcd50da928a275234445c9a0df32d4a2c694b2b3d20439","signature":false,"impliedFormat":1},{"version":"c939cb12cb000b4ec9c3eca3fe7dee1fe373ccb801237631d9252bad10206d61","signature":false,"impliedFormat":1},{"version":"b42d3651103a532f7492e719a828647af97306b2356ae757ebb7f17f4a8c41e5","signature":false,"impliedFormat":1},{"version":"b42d3651103a532f7492e719a828647af97306b2356ae757ebb7f17f4a8c41e5","signature":false,"impliedFormat":1},{"version":"b42d3651103a532f7492e719a828647af97306b2356ae757ebb7f17f4a8c41e5","signature":false,"impliedFormat":1},{"version":"b42d3651103a532f7492e719a828647af97306b2356ae757ebb7f17f4a8c41e5","signature":false,"impliedFormat":1},{"version":"b42d3651103a532f7492e719a828647af97306b2356ae757ebb7f17f4a8c41e5","signature":false,"impliedFormat":1},{"version":"b42d3651103a532f7492e719a828647af97306b2356ae757ebb7f17f4a8c41e5","signature":false,"impliedFormat":1},{"version":"26384fb401f582cae1234213c3dc75fdc80e3d728a0a1c55b405be8a0c6dddbe","signature":false,"impliedFormat":1},{"version":"26384fb401f582cae1234213c3dc75fdc80e3d728a0a1c55b405be8a0c6dddbe","signature":false,"impliedFormat":1},{"version":"b42d3651103a532f7492e719a828647af97306b2356ae757ebb7f17f4a8c41e5","signature":false,"impliedFormat":1},{"version":"b42d3651103a532f7492e719a828647af97306b2356ae757ebb7f17f4a8c41e5","signature":false,"impliedFormat":1},{"version":"b42d3651103a532f7492e719a828647af97306b2356ae757ebb7f17f4a8c41e5","signature":false,"impliedFormat":1},{"version":"b42d3651103a532f7492e719a828647af97306b2356ae757ebb7f17f4a8c41e5","signature":false,"impliedFormat":1},{"version":"b42d3651103a532f7492e719a828647af97306b2356ae757ebb7f17f4a8c41e5","signature":false,"impliedFormat":1},{"version":"b42d3651103a532f7492e719a828647af97306b2356ae757ebb7f17f4a8c41e5","signature":false,"impliedFormat":1},{"version":"b42d3651103a532f7492e719a828647af97306b2356ae757ebb7f17f4a8c41e5","signature":false,"impliedFormat":1},{"version":"b42d3651103a532f7492e719a828647af97306b2356ae757ebb7f17f4a8c41e5","signature":false,"impliedFormat":1},{"version":"b42d3651103a532f7492e719a828647af97306b2356ae757ebb7f17f4a8c41e5","signature":false,"impliedFormat":1},{"version":"b42d3651103a532f7492e719a828647af97306b2356ae757ebb7f17f4a8c41e5","signature":false,"impliedFormat":1},{"version":"b42d3651103a532f7492e719a828647af97306b2356ae757ebb7f17f4a8c41e5","signature":false,"impliedFormat":1},{"version":"b42d3651103a532f7492e719a828647af97306b2356ae757ebb7f17f4a8c41e5","signature":false,"impliedFormat":1},{"version":"b42d3651103a532f7492e719a828647af97306b2356ae757ebb7f17f4a8c41e5","signature":false,"impliedFormat":1},{"version":"b42d3651103a532f7492e719a828647af97306b2356ae757ebb7f17f4a8c41e5","signature":false,"impliedFormat":1},{"version":"b42d3651103a532f7492e719a828647af97306b2356ae757ebb7f17f4a8c41e5","signature":false,"impliedFormat":1},{"version":"b42d3651103a532f7492e719a828647af97306b2356ae757ebb7f17f4a8c41e5","signature":false,"impliedFormat":1},{"version":"b42d3651103a532f7492e719a828647af97306b2356ae757ebb7f17f4a8c41e5","signature":false,"impliedFormat":1},{"version":"b42d3651103a532f7492e719a828647af97306b2356ae757ebb7f17f4a8c41e5","signature":false,"impliedFormat":1},{"version":"b42d3651103a532f7492e719a828647af97306b2356ae757ebb7f17f4a8c41e5","signature":false,"impliedFormat":1},{"version":"b42d3651103a532f7492e719a828647af97306b2356ae757ebb7f17f4a8c41e5","signature":false,"impliedFormat":1},{"version":"b42d3651103a532f7492e719a828647af97306b2356ae757ebb7f17f4a8c41e5","signature":false,"impliedFormat":1},{"version":"b42d3651103a532f7492e719a828647af97306b2356ae757ebb7f17f4a8c41e5","signature":false,"impliedFormat":1},{"version":"b42d3651103a532f7492e719a828647af97306b2356ae757ebb7f17f4a8c41e5","signature":false,"impliedFormat":1},{"version":"b42d3651103a532f7492e719a828647af97306b2356ae757ebb7f17f4a8c41e5","signature":false,"impliedFormat":1},{"version":"b42d3651103a532f7492e719a828647af97306b2356ae757ebb7f17f4a8c41e5","signature":false,"impliedFormat":1},{"version":"26384fb401f582cae1234213c3dc75fdc80e3d728a0a1c55b405be8a0c6dddbe","signature":false,"impliedFormat":1},{"version":"b42d3651103a532f7492e719a828647af97306b2356ae757ebb7f17f4a8c41e5","signature":false,"impliedFormat":1},{"version":"b42d3651103a532f7492e719a828647af97306b2356ae757ebb7f17f4a8c41e5","signature":false,"impliedFormat":1},{"version":"b42d3651103a532f7492e719a828647af97306b2356ae757ebb7f17f4a8c41e5","signature":false,"impliedFormat":1},{"version":"b42d3651103a532f7492e719a828647af97306b2356ae757ebb7f17f4a8c41e5","signature":false,"impliedFormat":1},{"version":"b42d3651103a532f7492e719a828647af97306b2356ae757ebb7f17f4a8c41e5","signature":false,"impliedFormat":1},{"version":"03268b4d02371bdf514f513797ed3c9eb0840b0724ff6778bda0ef74c35273be","signature":false,"impliedFormat":1},{"version":"3511847babb822e10715a18348d1cbb0dae73c4e4c0a1bcf7cbc12771b310d45","signature":false,"impliedFormat":1},{"version":"80e653fbbec818eecfe95d182dc65a1d107b343d970159a71922ac4491caa0af","signature":false,"impliedFormat":1},{"version":"53f00dc83ccceb8fad22eb3aade64e4bcdb082115f230c8ba3d40f79c835c30e","signature":false,"impliedFormat":1},{"version":"35475931e8b55c4d33bfe3abc79f5673924a0bd4224c7c6108a4e08f3521643c","signature":false,"impliedFormat":1},{"version":"9078205849121a5d37a642949d687565498da922508eacb0e5a0c3de427f0ae5","signature":false,"impliedFormat":1},{"version":"e8f8f095f137e96dc64b56e59556c02f3c31db4b354801d6ae3b90dceae60240","signature":false,"impliedFormat":1},{"version":"451abef2a26cebb6f54236e68de3c33691e3b47b548fd4c8fa05fd84ab2238ff","signature":false,"impliedFormat":1},{"version":"6042774c61ece4ba77b3bf375f15942eb054675b7957882a00c22c0e4fe5865c","signature":false,"impliedFormat":1},{"version":"41f185713d78f7af0253a339927dc04b485f46210d6bc0691cf908e3e8ded2a1","signature":false,"impliedFormat":1},{"version":"23ee410c645f68bd99717527de1586e3eb826f166d654b74250ad92b27311fde","signature":false,"impliedFormat":1},{"version":"ffc3e1064146c1cafda1b0686ae9679ba1fb706b2f415e057be01614bf918dba","signature":false,"impliedFormat":1},{"version":"995869b1ddf66bbcfdb417f7446f610198dcce3280a0ae5c8b332ed985c01855","signature":false,"impliedFormat":1},{"version":"58d65a2803c3b6629b0e18c8bf1bc883a686fcf0333230dd0151ab6e85b74307","signature":false,"impliedFormat":1},{"version":"e818471014c77c103330aee11f00a7a00b37b35500b53ea6f337aefacd6174c9","signature":false,"impliedFormat":1},{"version":"dca963a986285211cfa75b9bb57914538de29585d34217d03b538e6473ac4c44","signature":false,"impliedFormat":1},{"version":"d8bc0c5487582c6d887c32c92d8b4ffb23310146fcb1d82adf4b15c77f57c4ac","signature":false,"impliedFormat":1},{"version":"8cb31102790372bebfd78dd56d6752913b0f3e2cefbeb08375acd9f5ba737155","signature":false,"impliedFormat":1},{"version":"76af14c3cce62da183aaf30375e3a4613109d16c7f16d30702f16d625a95e62c","signature":false,"impliedFormat":1},{"version":"56e0775830b68d13c3d7f4ec75df7d016db6b879ef9676affb5233a9a289c192","signature":false,"impliedFormat":1},{"version":"644c772f6b1dbcbd9c8a90b8fdbfcd29553a4216b6005d4a83d31c552781ceb8","signature":false,"impliedFormat":1},{"version":"ecbb532729c538c14a3822e4f387a2332f5fb4c3912ed4b32c088d2a51bace82","signature":false,"impliedFormat":1},{"version":"a4e9e0d92dcad2cb387a5f1bdffe621569052f2d80186e11973aa7080260d296","signature":false,"impliedFormat":1},{"version":"f6380cc36fc3efc70084d288d0a05d0a2e09da012ee3853f9d62431e7216f129","signature":false,"impliedFormat":1},{"version":"497c3e541b4acf6c5d5ba75b03569cfe5fe25c8a87e6c87f1af98da6a3e7b918","signature":false,"impliedFormat":1},{"version":"d9429b81edf2fb2abf1e81e9c2e92615f596ed3166673d9b69b84c369b15fdc0","signature":false,"impliedFormat":1},{"version":"7e22943ae4e474854ca0695ab750a8026f55bb94278331fda02a4fb42efce063","signature":false,"impliedFormat":1},{"version":"7da9ff3d9a7e62ddca6393a23e67296ab88f2fcb94ee5f7fb977fa8e478852ac","signature":false,"impliedFormat":1},{"version":"e1b45cc21ea200308cbc8abae2fb0cfd014cb5b0e1d1643bcc50afa5959b6d83","signature":false,"impliedFormat":1},{"version":"c9740b0ce7533ce6ba21a7d424e38d2736acdddeab2b1a814c00396e62cc2f10","signature":false,"impliedFormat":1},{"version":"b3c1f6a3fdbb04c6b244de6d5772ffdd9e962a2faea1440e410049c13e874b87","signature":false,"impliedFormat":1},{"version":"dcaa872d9b52b9409979170734bdfd38f846c32114d05b70640fd05140b171bb","signature":false,"impliedFormat":1},{"version":"6c434d20da381fcd2e8b924a3ec9b8653cf8bed8e0da648e91f4c984bd2a5a91","signature":false,"impliedFormat":1},{"version":"992419d044caf6b14946fa7b9463819ab2eeb7af7c04919cc2087ce354c92266","signature":false,"impliedFormat":1},{"version":"fa9815e9ce1330289a5c0192e2e91eb6178c0caa83c19fe0c6a9f67013fe795c","signature":false,"impliedFormat":1},{"version":"06384a1a73fcf4524952ecd0d6b63171c5d41dd23573907a91ef0a687ddb4a8c","signature":false,"impliedFormat":1},{"version":"34b1594ecf1c84bcc7a04d9f583afa6345a6fea27a52cf2685f802629219de45","signature":false,"impliedFormat":1},{"version":"d82c9ca830d7b94b7530a2c5819064d8255b93dfeddc5b2ebb8a09316f002c89","signature":false,"impliedFormat":1},{"version":"7e046b9634add57e512412a7881efbc14d44d1c65eadd35432412aa564537975","signature":false,"impliedFormat":1},{"version":"aac9079b9e2b5180036f27ab37cb3cf4fd19955be48ccc82eab3f092ee3d4026","signature":false,"impliedFormat":1},{"version":"3d9c38933bc69e0a885da20f019de441a3b5433ce041ba5b9d3a541db4b568cb","signature":false,"impliedFormat":1},{"version":"606aa2b74372221b0f79ca8ae3568629f444cc454aa59b032e4cb602308dec94","signature":false,"impliedFormat":1},{"version":"50474eaea72bfda85cc37ae6cd29f0556965c0849495d96c8c04c940ef3d2f44","signature":false,"impliedFormat":1},{"version":"b4874382f863cf7dc82b3d15aed1e1372ac3fede462065d5bfc8510c0d8f7b19","signature":false,"impliedFormat":1},{"version":"df10b4f781871afb72b2d648d497671190b16b679bf7533b744cc10b3c6bf7ea","signature":false,"impliedFormat":1},{"version":"1fdc28754c77e852c92087c789a1461aa6eed19c335dc92ce6b16a188e7ba305","signature":false,"impliedFormat":1},{"version":"a656dab1d502d4ddc845b66d8735c484bfebbf0b1eda5fb29729222675759884","signature":false,"impliedFormat":1},{"version":"465a79505258d251068dc0047a67a3605dd26e6b15e9ad2cec297442cbb58820","signature":false,"impliedFormat":1},{"version":"ddae22d9329db28ce3d80a2a53f99eaed66959c1c9cd719c9b744e5470579d2f","signature":false,"impliedFormat":1},{"version":"d0e25feadef054c6fc6a7f55ccc3b27b7216142106b9ff50f5e7b19d85c62ca7","signature":false,"impliedFormat":1},{"version":"111214009193320cacbae104e8281f6cb37788b52a6a84d259f9822c8c71f6ca","signature":false,"impliedFormat":1},{"version":"01c8e2c8984c96b9b48be20ee396bd3689a3a3e6add8d50fe8229a7d4e62ff45","signature":false,"impliedFormat":1},{"version":"a4a0800b592e533897b4967b00fb00f7cd48af9714d300767cc231271aa100af","signature":false,"impliedFormat":1},{"version":"20aa818c3e16e40586f2fa26327ea17242c8873fe3412a69ec68846017219314","signature":false,"impliedFormat":1},{"version":"f498532f53d54f831851990cb4bcd96063d73e302906fa07e2df24aa5935c7d1","signature":false,"impliedFormat":1},{"version":"5fd19dfde8de7a0b91df6a9bbdc44b648fd1f245cae9e8b8cf210d83ee06f106","signature":false,"impliedFormat":1},{"version":"3b8d6638c32e63ea0679eb26d1eb78534f4cc02c27b80f1c0a19f348774f5571","signature":false,"impliedFormat":1},{"version":"ce0da52e69bc3d82a7b5bc40da6baad08d3790de13ad35e89148a88055b46809","signature":false,"impliedFormat":1},{"version":"9e01233da81bfed887f8d9a70d1a26bf11b8ddff165806cc586c84980bf8fc24","signature":false,"impliedFormat":1},{"version":"214a6afbab8b285fc97eb3cece36cae65ea2fca3cbd0c017a96159b14050d202","signature":false,"impliedFormat":1},{"version":"14beeca2944b75b229c0549e0996dc4b7863e07257e0d359d63a7be49a6b86a4","signature":false,"impliedFormat":1},{"version":"f7bb9adb1daa749208b47d1313a46837e4d27687f85a3af7777fc1c9b3dc06b1","signature":false,"impliedFormat":1},{"version":"c549fe2f52101ffe47f58107c702af7cdcd42da8c80afd79f707d1c5d77d4b6e","signature":false,"impliedFormat":1},{"version":"3966ea9e1c1a5f6e636606785999734988e135541b79adc6b5d00abdc0f4bf05","signature":false,"impliedFormat":1},{"version":"0b60b69c957adb27f990fbc27ea4ac1064249400262d7c4c1b0a1687506b3406","signature":false,"impliedFormat":1},{"version":"12c26e5d1befc0ded725cee4c2316f276013e6f2eb545966562ae9a0c1931357","signature":false,"impliedFormat":1},{"version":"27b247363f1376c12310f73ebac6debcde009c0b95b65a8207e4fa90e132b30a","signature":false,"impliedFormat":1},{"version":"05bd302e2249da923048c09dc684d1d74cb205551a87f22fb8badc09ec532a08","signature":false,"impliedFormat":1},{"version":"fe930ec064571ab3b698b13bddf60a29abf9d2f36d51ab1ca0083b087b061f3a","signature":false,"impliedFormat":1},{"version":"6b85c4198e4b62b0056d55135ad95909adf1b95c9a86cdbed2c0f4cc1a902d53","signature":false,"impliedFormat":1},{"version":"c24f9f0740bd3bc39dd8248252c36521f7f7421c9dbdaae14a643579828019c2","signature":false,"affectsGlobalScope":true,"impliedFormat":1},{"version":"ad81781a377aefdea8b82d9ca0f02d9ef42262dc17502c0c07c8a38baf75de6b","signature":false,"impliedFormat":99},{"version":"cc74bade183e557d1356d2e413e3a29f46c6d3b95cbd7805c716e24e67e51b57","signature":false,"impliedFormat":99},{"version":"84a21dc3c5189172f9d21c41d3c19be302c2c57ca01948b8be9d07094a626628","signature":false,"impliedFormat":99},{"version":"38ccbce150916ac89e20c2c87fa9ccc9bf93751020534fc60f673baa5e240d05","signature":false,"impliedFormat":99},{"version":"3d5d5fbc67d0a005d31d1d5ed849e1580494564c9896c510f9b5b4d7e597f9dd","signature":false,"impliedFormat":99},{"version":"8969f37d35b583be07591686d2eed81724c762d2a61cc68ab527c13e6d4fadd8","signature":false,"impliedFormat":99},{"version":"75f358008685955fd0685ac2316d38779b510cf8de29a6907dc62bdd2c994959","signature":false},{"version":"4c1b6eb5b67e4e930083f4d46c691a7183c0e968ef568f4a1a80a9dfde60a9c9","signature":false},{"version":"fb1853fc6e52955d4b8abad35a2de9929c6721ce9134a93880af9818ca2ae691","signature":false,"impliedFormat":99},{"version":"1257ee54981d320653568ebc2bd84cf1ef6ccd42c6fb301a76b1faf87a54dbd5","signature":false,"impliedFormat":1},{"version":"9ab0a0c34faa1a3dd97f2f3350be4ecf195d0e8a41b92e534f6d9c910557a2e6","signature":false,"impliedFormat":1},{"version":"45d8db9ee4ddbc94861cf9192b30305ba7d72aea6a593961b17e7152c5916bd0","signature":false,"impliedFormat":1},{"version":"669f17243c14fdba947356e6fe78c6ad4230fb7342a78054102fe2badb4cc78e","signature":false,"impliedFormat":1},{"version":"d764a9e8ead572f6d8105bc0c0598a473e76d6ba1af29e4201641711cb9f185c","signature":false,"impliedFormat":1},{"version":"dc83ee46e715dd6b992556d1fa24fd89d5a7a6d0319180e7db46f69ce46525f7","signature":false,"impliedFormat":1},{"version":"bc2b16f630894b1dadc05c6374b53bd4fa8c01451cd356881607e78f45931f31","signature":false,"impliedFormat":1},{"version":"15a804ec22020d2ca86842807cb6c18277c72fbc9d1a374c217d191d12cfa691","signature":false,"impliedFormat":1},{"version":"a6b5dea55f228fa87c3f316f8c91af07d01a2080a437eba452f1d1ea1be8abff","signature":false,"impliedFormat":1},{"version":"3f6404f453b4e74246ecd5149d2b502e5d2fcd964a00d3e42ec581b247e984cf","signature":false,"impliedFormat":1},{"version":"a6724f6446d94a9283a44b467a6d5fecf8e4730a2dec6ecdca858a4038339c63","signature":false,"impliedFormat":1},{"version":"5180a1a33602d0eb1ff18a8370eab0bc98f81060f4c64dcbbfab9d8db0075379","signature":false,"impliedFormat":1},{"version":"5ea3c3448d2922206d87fe5898f2dbaf1fd98a80826aef19695697c7468fe58f","signature":false,"impliedFormat":1},{"version":"b96fafd59befcd4f8682ce1e4b0a7eede23b225574b2173ee4c05cb23ac379b9","signature":false,"impliedFormat":1},{"version":"4de92032a7a8b82b794e14062f09bcc28f0ec56fb9904eb2bc1770d0400367ec","signature":false,"impliedFormat":1},{"version":"1e5935ce49f6c2f108f23f18e1609dbf3b29d6d4d4efdb6bbae7315ea4fc4462","signature":false,"impliedFormat":1},{"version":"c884d560430256ab7765cdad72f9e466e9e65db61a245c2310490b5ced3abe76","signature":false,"impliedFormat":1},{"version":"3925651610dbede7cbdbeb71e1a61e8457b3c87697e18080b23f7c17c48e4920","signature":false,"impliedFormat":1},{"version":"1c34c2ca74699b26ac7025304600240c5ab570acf6d4cad4519c8c306164ada9","signature":false,"impliedFormat":1},{"version":"40f0d07b2b368f8142694fec17d5fd53b82348c1626d559149be9e725542554e","signature":false,"impliedFormat":1},{"version":"a4c07340daf98bb36410874a47a9c6f8de19fa54b015505f173bffb802fd110a","signature":false,"impliedFormat":1},{"version":"e9af2804e0d79776e63796d14bcb32804d7d7fb4d043d70df74288eb42a1f4eb","signature":false,"impliedFormat":1},{"version":"758e92a92871b11a9aede1787106be4764ae6a32f6c76bb29f072bfa28d9f69a","signature":false,"impliedFormat":99},{"version":"1694f761640dd96d805157f64c826748860207f375b0a4ccf255cb672daf0f83","signature":false,"impliedFormat":99},{"version":"2fea489e3c5f8d4134f54efc5bda5ec68e419e7ec3d190161f78bac4b8396c0b","signature":false,"impliedFormat":99},{"version":"b2eadc9b2db171f930beddf847a4e064a2985b83bf344beb44d65a8f016f08aa","signature":false,"impliedFormat":99},{"version":"1ead895650e6ca37ea8abcc05e9a9752b73e8008a7985d73a5e3816f4a1df3a6","signature":false,"impliedFormat":99},{"version":"929288672d6b91a25b82e047ee87bf37e03f38d3602aaf3a4fba53e028675264","signature":false,"impliedFormat":99},{"version":"c80c5fa57f74841b3c266b12ac1b3e479f40fd9946df1bda6d467c81a57a996e","signature":false,"impliedFormat":99},{"version":"64369f418f9b248b960b5b7c0e98001488e029b2b3a70add5439e0886d0694b5","signature":false,"impliedFormat":99},{"version":"b82e754f9866ae6d8e4c4d0f3a2754818a30f60cffb4b8bf63c4898c3f43d509","signature":false,"impliedFormat":99},{"version":"446354125e9c0d91ddce893d3314a896f43c7b1ec86a2df5c9d2da9e79fcbae1","signature":false,"impliedFormat":99},{"version":"c2bbbdad520259f1b029852cf29d8a19c886c4b9a965ead205e354678a4a222b","signature":false,"impliedFormat":99},{"version":"7812a1bb9b5475ab4216005fdb6332d5b57c5c96696dec1eddeafe87d04b69de","signature":false,"impliedFormat":99},{"version":"e91d958316d91eca21850be2d86d01995e6ee5071ca51483bbd9bd61692a22b8","signature":false,"impliedFormat":99},{"version":"3a4729e996e265f62d42f109caba40371d0dc97694f06b1f025f4886e5f4f55f","signature":false,"impliedFormat":99},{"version":"6ca4f054710eeaddaea89786af58b4b4834ed510e9921bf9295fd05ea0bd7c5c","signature":false,"impliedFormat":99},{"version":"62accaae04a3db14c5ef4033231408edb801d983c8a355c5e03f56c90bec8648","signature":false,"impliedFormat":99},{"version":"78b64de15366b18545ec6a3dcc3e78078f47d7d4adaf5cdc39b5960c1f93a19c","signature":false,"impliedFormat":99},{"version":"3b210aa55ec4b8a3a740e8426f79cd8e177777d528750f1da11cd611f36f3e44","signature":false,"impliedFormat":99},{"version":"346682a9f0fc647b721fd2cd24a82775a52819b1a0893ab63cb27728c3660a5c","signature":false},{"version":"08f41d6e355fe1ee53b1460268c84e4b4caf44be8b913fc269d3fb4c55514285","signature":false,"impliedFormat":99},{"version":"cde48366dadb74ef206c27ba80af2c4ec007ad05ff3ef46998229561cc4cd3ea","signature":false},{"version":"9886eb46db5c89c8b52cbef9789f1c59636627a58d87696432677066ebe4e765","signature":false},{"version":"c62a4785b0b516b6d878ca447cfc5803702b2e8eeb2c5a3be19048783dae55ee","signature":false,"impliedFormat":1},{"version":"17928b0ab263972dc8e1b523c9bc69447f3b40e9b326cfe906ef28d3bdcefd72","signature":false},{"version":"468d3a1204c11267f3995e8bc6ae6b29c89c5308f623ff0a4501ba7732482161","signature":false},{"version":"86d4ff8ba66b5ea1df375fe6092d2b167682ccd5dd0d9b003a7d30d95a0cda32","signature":false,"impliedFormat":1},{"version":"cdcf9ea426ad970f96ac930cd176d5c69c6c24eebd9fc580e1572d6c6a88f62c","signature":false,"impliedFormat":1},{"version":"23cd712e2ce083d68afe69224587438e5914b457b8acf87073c22494d706a3d0","signature":false,"impliedFormat":1},{"version":"487b694c3de27ddf4ad107d4007ad304d29effccf9800c8ae23c2093638d906a","signature":false,"impliedFormat":1},{"version":"3a80bc85f38526ca3b08007ee80712e7bb0601df178b23fbf0bf87036fce40ce","signature":false,"impliedFormat":1},{"version":"ccf4552357ce3c159ef75f0f0114e80401702228f1898bdc9402214c9499e8c0","signature":false,"impliedFormat":1},{"version":"c6fd2c5a395f2432786c9cb8deb870b9b0e8ff7e22c029954fabdd692bff6195","signature":false,"impliedFormat":1},{"version":"68834d631c8838c715f225509cfc3927913b9cc7a4870460b5b60c8dbdb99baf","signature":false,"impliedFormat":1},{"version":"2931540c47ee0ff8a62860e61782eb17b155615db61e36986e54645ec67f67c2","signature":false,"impliedFormat":1},{"version":"3c8e93af4d6ce21eb4c8d005ad6dc02e7b5e6781f429d52a35290210f495a674","signature":false,"impliedFormat":1},{"version":"f6faf5f74e4c4cc309a6c6a6c4da02dbb840be5d3e92905a23dcd7b2b0bd1986","signature":false,"impliedFormat":1},{"version":"ea6bc8de8b59f90a7a3960005fd01988f98fd0784e14bc6922dde2e93305ec7d","signature":false,"impliedFormat":1},{"version":"36107995674b29284a115e21a0618c4c2751b32a8766dd4cb3ba740308b16d59","signature":false,"impliedFormat":1},{"version":"914a0ae30d96d71915fc519ccb4efbf2b62c0ddfb3a3fc6129151076bc01dc60","signature":false,"impliedFormat":1},{"version":"33e981bf6376e939f99bd7f89abec757c64897d33c005036b9a10d9587d80187","signature":false,"impliedFormat":1},{"version":"7fd1b31fd35876b0aa650811c25ec2c97a3c6387e5473eb18004bed86cdd76b6","signature":false,"impliedFormat":1},{"version":"b41767d372275c154c7ea6c9d5449d9a741b8ce080f640155cc88ba1763e35b3","signature":false,"impliedFormat":1},{"version":"3bacf516d686d08682751a3bd2519ea3b8041a164bfb4f1d35728993e70a2426","signature":false,"impliedFormat":1},{"version":"00b21ef538da5a2bbe419e2144f3be50661768e1e039ef2b57bb89f96aff9b18","signature":false,"impliedFormat":1},{"version":"0a60a292b89ca7218b8616f78e5bbd1c96b87e048849469cccb4355e98af959a","signature":false,"impliedFormat":1},{"version":"0b6e25234b4eec6ed96ab138d96eb70b135690d7dd01f3dd8a8ab291c35a683a","signature":false,"impliedFormat":1},{"version":"9666f2f84b985b62400d2e5ab0adae9ff44de9b2a34803c2c5bd3c8325b17dc0","signature":false,"impliedFormat":1},{"version":"40cd35c95e9cf22cfa5bd84e96408b6fcbca55295f4ff822390abb11afbc3dca","signature":false,"impliedFormat":1},{"version":"b1616b8959bf557feb16369c6124a97a0e74ed6f49d1df73bb4b9ddf68acf3f3","signature":false,"impliedFormat":1},{"version":"e843e840f484f7e59b2ef9488501a301e3300a8e3e56aa84a02ddf915c7ce07d","signature":false,"impliedFormat":1},{"version":"40b463c6766ca1b689bfcc46d26b5e295954f32ad43e37ee6953c0a677e4ae2b","signature":false,"impliedFormat":1},{"version":"249b9cab7f5d628b71308c7d9bb0a808b50b091e640ba3ed6e2d0516f4a8d91d","signature":false,"impliedFormat":1},{"version":"80aae6afc67faa5ac0b32b5b8bc8cc9f7fa299cff15cf09cc2e11fd28c6ae29e","signature":false,"impliedFormat":1},{"version":"f473cd2288991ff3221165dcf73cd5d24da30391f87e85b3dd4d0450c787a391","signature":false,"impliedFormat":1},{"version":"499e5b055a5aba1e1998f7311a6c441a369831c70905cc565ceac93c28083d53","signature":false,"impliedFormat":1},{"version":"54c3e2371e3d016469ad959697fd257e5621e16296fa67082c2575d0bf8eced0","signature":false,"impliedFormat":1},{"version":"beb8233b2c220cfa0feea31fbe9218d89fa02faa81ef744be8dce5acb89bb1fd","signature":false,"impliedFormat":1},{"version":"78b29846349d4dfdd88bd6650cc5d2baaa67f2e89dc8a80c8e26ef7995386583","signature":false,"impliedFormat":1},{"version":"5d0375ca7310efb77e3ef18d068d53784faf62705e0ad04569597ae0e755c401","signature":false,"impliedFormat":1},{"version":"59af37caec41ecf7b2e76059c9672a49e682c1a2aa6f9d7dc78878f53aa284d6","signature":false,"impliedFormat":1},{"version":"addf417b9eb3f938fddf8d81e96393a165e4be0d4a8b6402292f9c634b1cb00d","signature":false,"impliedFormat":1},{"version":"48cc3ec153b50985fb95153258a710782b25975b10dd4ac8a4f3920632d10790","signature":false,"impliedFormat":1},{"version":"adf27937dba6af9f08a68c5b1d3fce0ca7d4b960c57e6d6c844e7d1a8e53adae","signature":false,"impliedFormat":1},{"version":"18f8cfbb14ba9405e67d30968ae67b8d19133867d13ebc49c8ed37ec64ce9bdb","signature":false,"impliedFormat":1},{"version":"2e85db9e6fd73cfa3d7f28e0ab6b55417ea18931423bd47b409a96e4a169e8e6","signature":false,"impliedFormat":1},{"version":"c46e079fe54c76f95c67fb89081b3e399da2c7d109e7dca8e4b58d83e332e605","signature":false,"impliedFormat":1},{"version":"866078923a56d026e39243b4392e282c1c63159723996fa89243140e1388a98d","signature":false,"impliedFormat":1},{"version":"b3fb72492a07a76f7bfa29ecadd029eea081df11512e4dfe6f930a5a9cb1fb75","signature":false,"impliedFormat":1},{"version":"736097ddbb2903bef918bb3b5811ef1c9c5656f2a73bd39b22a91b9cc2525e50","signature":false,"impliedFormat":1},{"version":"4340936f4e937c452ae783514e7c7bbb7fc06d0c97993ff4865370d0962bb9cf","signature":false,"impliedFormat":1},{"version":"b70c7ea83a7d0de17a791d9b5283f664033a96362c42cc4d2b2e0bdaa65ef7d1","signature":false,"impliedFormat":1},{"version":"d782e571cb7d6ec0f0645957ed843d00e3f8577e08cc2940f400c931bc47a8df","signature":false,"impliedFormat":99},{"version":"9167246623f181441e6116605221268d94e33a1ebd88075e2dc80133c928ae7e","signature":false,"impliedFormat":99},{"version":"dc1a838d8a514b6de9fbce3bd5e6feb9ccfe56311e9338bb908eb4d0d966ecaf","signature":false,"impliedFormat":99},{"version":"186f09ed4b1bc1d5a5af5b1d9f42e2d798f776418e82599b3de16423a349d184","signature":false,"impliedFormat":99},{"version":"d692ae73951775d2448df535ce8bc8abf162dc343911fedda2c37b8de3b20d8e","signature":false,"impliedFormat":99},{"version":"dbab1950ef4bf06f44795b144026a352a7b4a3a68a969bbf32eb55addd0fb95a","signature":false,"impliedFormat":1},{"version":"2b5368217b57528a60433558585186a925d9842fe64c1262adde8eac5cb8de33","signature":false,"impliedFormat":1},{"version":"e22273698b7aad4352f0eb3c981d510b5cf6b17fde2eeaa5c018bb065d15558f","signature":false,"impliedFormat":1},{"version":"b2cd3eea455c4c2e2583adf6e2fb27f1ba26fc4e170e5d9b84243c73022b1ac4","signature":false,"impliedFormat":1},{"version":"bac14d2b22bb575755f937bc6d854c82cdb8434c8abb8844510fc8cb1416849b","signature":false,"impliedFormat":1},{"version":"6d8913dc1b42dce4da3a48e3a57b1cee51afcde894da43bed1e19f4303a38a8e","signature":false,"impliedFormat":1},{"version":"dbf1009687760b708258fef934385cf29eada0feb170521f7b03cb874786bcf5","signature":false,"impliedFormat":1},{"version":"b898e82350ebf0bad51e0dd49405d79b1243166691944a71d752fb9fc7a0e805","signature":false,"impliedFormat":1},{"version":"02c9bb32c1845dc58c58b68dbdacb200eeb188711a4a9a720b36a2298462b617","signature":false,"impliedFormat":1},{"version":"15bf0d97593eda42b97953a987747614d02e05ab3db6457119955bc176659e79","signature":false,"impliedFormat":1},{"version":"71b1ba33785c50d943a01de9278c3196ed76dea06812d1402dc48e9b630ad91c","signature":false,"impliedFormat":1},{"version":"5c7f19d8c5cf23c20fd68e9f1ca8545b56c32941dc11d4f4252c8c8ea67f16d6","signature":false,"impliedFormat":1},{"version":"93ba7b0ec3db0478fa671860f9fd1dd4dc09df5164f62496392be908ae40bdd0","signature":false,"impliedFormat":1},{"version":"2cc3b2743504a647011a477bfa732c80f8c50c435ea14df0e4f45cb04098c65d","signature":false,"impliedFormat":1},{"version":"502f64730d7ca8f4b7eb4f16c5b5cdad4e05c2337b85a5b4dbe7c8ad118dcc11","signature":false,"impliedFormat":1},{"version":"b024960a0d5e3f3d5f2efe1a60acafb02bc6d1702a84a3f6ee51fc178bd2b1e9","signature":false,"impliedFormat":1},{"version":"552fdbfb98044cea1862e6be1f6aa12b1abed8504c42ac25f5bd20c11256eb5b","signature":false,"impliedFormat":1},{"version":"0703cff1383701487b7e847bb4cb77d512c15b15eb06675d95899ae88bd5d841","signature":false,"impliedFormat":1},{"version":"140cfa512cdaf55533cfd9afedc48bf72cce371d75d60c54cc09f56c6341fb68","signature":false,"impliedFormat":1},{"version":"4d654a689ac217bf09cba3e2e65dafc12b2f5f52233d2515184a8b855ee25bdb","signature":false,"impliedFormat":1},{"version":"fd4fcc71d7975421f36c4a7c4d2b80fac2c4a2d5f700317ffcd5b2341a2b8413","signature":false,"impliedFormat":1},{"version":"e2d9abf824ec4d2376fdfdefa60b154fa3147c1153326e61140c454e93cdc8ba","signature":false,"impliedFormat":1},{"version":"83c89ec38a9147f452cc207300e8e63af9364cc6887cf9e65f385ca98fa2d1ba","signature":false,"impliedFormat":1},{"version":"0ee215cf947dc7565c590656f1f0204059c2ae1fe3dbd5cb20ee0b99976d0ab4","signature":false,"impliedFormat":1},{"version":"a65afc49c733cd202f627174209da12fd1fb7a2e524e2964e50cbce1f6ba9194","signature":false,"impliedFormat":1},{"version":"067670de65606b4aa07964b0269b788a7fe48026864326cd3ab5db9fc5e93120","signature":false,"impliedFormat":1},{"version":"21290aaea56895f836a0f1da5e1ef89285f8c0e85dc85fd59e2b887255484a6f","signature":false,"impliedFormat":1},{"version":"b77e10408795c272920abd5d537be7017d411bebfbd915d96e3acbca71cc46b6","signature":false,"impliedFormat":1},{"version":"7c9964d78bea28381f46490a422dd64fa4a85011ead17702d72b175c9f168052","signature":false,"impliedFormat":1},{"version":"88d33fba9982c877892926e5fd46276949dc9a3bca4c3a5cbc116a8a82624d0f","signature":false,"impliedFormat":1},{"version":"253aa976e58e0083e8a7c985cc83cb8bbfdf7bbc01f256159a25df02fc005ac5","signature":false,"impliedFormat":1},{"version":"2cf94327abec7b8954aec9735d9609610392edee14bb90323cb3dd30f3f54b90","signature":false,"impliedFormat":1},{"version":"e6dd8526d318cce4cb3e83bef3cb4bf3aa08186ddc984c4663cf7dee221d430e","signature":false,"impliedFormat":1},{"version":"72882f8809fd8c16374e6034f8ca5341e7705c7c9d3dc1817866409474b50f11","signature":false,"impliedFormat":1},{"version":"c33d3ecc050e239dd88589bf565c55446bfd2adf24ce260aa5ea8f6c4c11e883","signature":false,"impliedFormat":1},{"version":"ea2d53d4d76f2561a243217b4d94f2a09a7a8c094b211a3a0a5e37a93816b834","signature":false,"impliedFormat":1},{"version":"41e3ba7cf41ea214fd14c29209c2a8f0781e91aab6c852fb84c263e07424f616","signature":false,"impliedFormat":1},{"version":"d997caf5e9ca48e6a6a083e8c2cb8a08f708123e5c99a3a385aebaeeeda3d155","signature":false,"impliedFormat":1},{"version":"58e8693f02cb04c9626efc1d5466fe28df0bf5f4b46f64025fdbf7f046e39587","signature":false,"impliedFormat":1},{"version":"9511f319a171b432b4b683ea1f6a1ddd11d2b2874aced37216469998b155b691","signature":false,"impliedFormat":1},{"version":"699504c4635c353d5a0dea4de7fd89efbf73403c20576d2657550aa9317c55c3","signature":false,"impliedFormat":1},{"version":"e8727b2e4c693aff93d6889a535e93849001673bca2b40b30c7b5c4f71738f09","signature":false,"impliedFormat":1},{"version":"36d92bc40bf7c042df21de858edb69aece4de748d8802304369db2be1b81c73e","signature":false,"impliedFormat":1},{"version":"d5e2420d86d24c349cdc42b6750a18028a20504a7c661eca6c0c4801d7c46f1d","signature":false,"impliedFormat":1},{"version":"50ffb79e1779e621c2afdad2583718d7011a390e964f0bed96fbe72fdd6f4aa8","signature":false,"impliedFormat":1},{"version":"78341884fc9296ca9f42181b382f38c67caa2792b30511525b22b2b08cd199d5","signature":false,"impliedFormat":1},{"version":"cd1cc56c261989fba6f5434be7cfe907232924f612d9f4b39dbe99ac6c9b124b","signature":false,"impliedFormat":1},{"version":"936e0f920dbefc3460b876b69e420fd081ffff58c24ee8be3745acb3094a1edf","signature":false,"impliedFormat":1},{"version":"36e353a79dd09f3b175e3042c9dede8eabc64ce1abbb08095a80956f2dcdfe28","signature":false,"impliedFormat":1},{"version":"fb94137ca73b638df354f7e25092c187df9046b7a8fb07945cd7e9177c993409","signature":false,"impliedFormat":1},{"version":"c0dc9e96c4404a0b336dbee4e8d4d0009ce85610a0993edce566f4f29b7e72b7","signature":false,"impliedFormat":1},{"version":"81d6f71bedf179ffa254d768f3fc18fc60f3f510769fb48b4309ff1951236683","signature":false,"impliedFormat":1},{"version":"af1009bdd941f2e5a4aa2cc375b955e356d63fd746a9faec311853b045ec3d49","signature":false,"impliedFormat":1},{"version":"f74fc755d0c4cd5fc5eb7d994f9ced2205e4e7c8f73b8c5fd60beb02661ddcc9","signature":false,"impliedFormat":1},{"version":"7dece556972229956aee9c48a3ce069cca85ff234bc224819aaf60ad65b33630","signature":false,"impliedFormat":1},{"version":"4cb4165e8d7b216690bc33821737555a3ce3e5030b602527044b5f413cb21114","signature":false,"impliedFormat":1},{"version":"bb8b7729659e83adeae399e82e63b770c85908fce5b6c10c85360977c4d284f3","signature":false,"impliedFormat":1},{"version":"83a902704e00227f51a366aa3acc8e95331c59204a15e269287c304daf114724","signature":false,"impliedFormat":1},{"version":"f22f55420b02537aec818b630a151aa399ea52a3381dacd47b39bb3dcf5aa042","signature":false,"impliedFormat":1},{"version":"17a3cd7fcb01492270384259d6a396956fc275c3193d6a2593952dcaa8a34b09","signature":false,"impliedFormat":1},{"version":"254d95c0ce4fd2047e7bde6b47265bf61fe3eadcd5fcd6cb51b4c10bfef67d9f","signature":false,"impliedFormat":1},{"version":"0dfa226b844f792332d1325ad2832898abb68457b299f750835fffd398f4b5bc","signature":false,"impliedFormat":1},{"version":"3e2be5e6926d1282b33ae802f4741565bc90825f560110e7866b7c7874ce041d","signature":false,"impliedFormat":1},{"version":"3c177729f9399e59dcd140758f35744e532001eecf59cfbfb13dc32de4fbda7e","signature":false,"impliedFormat":1},{"version":"ab6e01fe3d11115661b7ec96fbf1740347fe46890937504224f18970e6110e66","signature":false,"impliedFormat":1},{"version":"12fde4db9babef891217705f7d2100475033a7b138c8b2f85c099640d228c760","signature":false,"impliedFormat":1},{"version":"73608d79cc12093fa52d5da2c57945646b01363ce664255c70e757405eacdbb7","signature":false,"impliedFormat":1},{"version":"691fef11ee89ab867fda0a79e51cccbbfa038df769fedc6a18e570b5a2edb03e","signature":false,"impliedFormat":1},{"version":"7acfcd0cb1cec76704a7db87a19b7dda6b8b16c43489234d006bc16f62c8fd40","signature":false,"impliedFormat":1},{"version":"0e9459051a7bbbb90827034c80d0b1961ac774a490e695a716f1d063ce72e7fc","signature":false,"impliedFormat":1},{"version":"fbb6da9f50c633f892065b829c016edddb5ded9b0339c6b66279d66c5f986760","signature":false,"impliedFormat":1},{"version":"1d8b943d0ace83db0975bec61a2a24b03f35e906ef5f33bbbe18aa93aeda886b","signature":false,"impliedFormat":1},{"version":"241f86a8f7db0685bf32fed02ce1ebba7a33788a516cfe054e49b24a04130b80","signature":false,"impliedFormat":1},{"version":"93298628862ea99a097839c6da20136a09746c7a8e94da32efe4976e0b27d676","signature":false,"impliedFormat":1},{"version":"02dbbcbbc3bab5d67ecf641a7a93f54d0996d6d78e68d3208f881e43720a7d7f","signature":false,"impliedFormat":1},{"version":"b8b0c095e809824638000ac2dc0962e29ca194735cf6304382f974ca4c654b6e","signature":false,"impliedFormat":1},{"version":"692070e16d39ea6cbc986aebbe76c5aa15bb9dfbedffd932c1c600f22c5f97c4","signature":false,"impliedFormat":1},{"version":"dd745acde06128c0b1da7a51e5952e7bfa98cbc84c2a7c23e3c2bd2514878d91","signature":false,"impliedFormat":1},{"version":"8fde035aeff4642e949e838298716793024b8f63aa87b0591f2e2a55499c25f3","signature":false,"impliedFormat":1},{"version":"2df644564c547b56b2f44a8646846c2aa1abf9ca66e6025d1aef853b5c84cfd0","signature":false,"impliedFormat":1},{"version":"db410b37778ae2309df095e3a32d4be3f1bdd6803bda0a0e571f406d286c8c62","signature":false,"impliedFormat":1},{"version":"2947e875e7b3d11371dc83ae67d760353746514c9a80bb7118d5bbb053730abf","signature":false,"impliedFormat":1},{"version":"1f019e9f216270b1c3dfa270f19b5fceb0403fed0f657954421d7c30c835aee7","signature":false,"impliedFormat":1},{"version":"68f811c49e0dba6d7d5438f6064a504cdc503fefd8b3667277924a70fcf5f98e","signature":false,"impliedFormat":1},{"version":"627136c2fa71fe35ef61e87ceabfe3de8003494bdf15532aabe95d8556ce03f5","signature":false,"impliedFormat":1},{"version":"72aac8e64d64a544a5f181dc68790b2ae5f1a51b276716ea4b9b96f6a0143ca9","signature":false,"impliedFormat":1},{"version":"0da8d515c8c149936e51bb210c3a724c0598290c352d969831c361a60c9fbe7b","signature":false,"impliedFormat":1},{"version":"f12ccb804da3fcb1286e9d6d5eeeee1a265223c68f062c6cb6ad80919044c594","signature":false,"impliedFormat":1},{"version":"759a3b5ca457b18330790ff09ba1b54ee3da731bacbdd665db5f44cd50674a93","signature":false,"impliedFormat":1},{"version":"8154a0ca9f28c72b545390190236fa28255d5960d8e7aeab8a2fceee2ad01fa4","signature":false},{"version":"86d4ff8ba66b5ea1df375fe6092d2b167682ccd5dd0d9b003a7d30d95a0cda32","signature":false,"impliedFormat":99},{"version":"dbab1950ef4bf06f44795b144026a352a7b4a3a68a969bbf32eb55addd0fb95a","signature":false,"impliedFormat":99},{"version":"2b5368217b57528a60433558585186a925d9842fe64c1262adde8eac5cb8de33","signature":false,"impliedFormat":99},{"version":"e22273698b7aad4352f0eb3c981d510b5cf6b17fde2eeaa5c018bb065d15558f","signature":false,"impliedFormat":99},{"version":"ed9680d6573920c3f1588fdb732d2469324e16b4795e2bec5f196a613e66030f","signature":false,"impliedFormat":99},{"version":"804e73c5236db118192cf774837ecf6d37013470832dc0ed9aaecfb4c93fb88b","signature":false,"impliedFormat":99},{"version":"91c093343733c2c2d40bee28dc793eff3071af0cb53897651f8459ad25ad01da","signature":false,"impliedFormat":99},{"version":"dbf1009687760b708258fef934385cf29eada0feb170521f7b03cb874786bcf5","signature":false,"impliedFormat":99},{"version":"e1c58879ba7cfcb2a70f4ec69831f48eef47b7a356f15ab9f4fce03942d9f21a","signature":false,"impliedFormat":99},{"version":"f4fc36916b3eac2ea0180532b46283808604e4b6ff11e5031494d05aa6661cc6","signature":false,"impliedFormat":99},{"version":"82e23a5d9f36ccdac5322227cd970a545b8c23179f2035388a1524f82f96d8d0","signature":false,"impliedFormat":99},{"version":"c52e8203e4cc8ddd3ffa75197673942e80e3ff4b3bffa962588363e872cb9922","signature":false,"impliedFormat":99},{"version":"bfce32506c0d081212ff9d27ec466fa6135a695ba61d5a02738abd2442566231","signature":false,"impliedFormat":99},{"version":"5ad576e13f58a0a2b5d4818dd13c16ec75b43025a14a89a7f09db3fe56c03d30","signature":false,"impliedFormat":99},{"version":"5668033966c8247576fc316629df131d6175d24ccf22940324c19c159671e1c1","signature":false,"impliedFormat":99},{"version":"502f64730d7ca8f4b7eb4f16c5b5cdad4e05c2337b85a5b4dbe7c8ad118dcc11","signature":false,"impliedFormat":99},{"version":"f2375d233877c641c5efbd765db87561c2eef08933fcbc0531f03a102b100071","signature":false,"impliedFormat":99},{"version":"ba3df48971907e524e144d82ed8f02d79729234b659307f8ea6c53b40821c021","signature":false,"impliedFormat":99},{"version":"dbf3d90c21c08217509df631336881a3105740033b0592dcc47036490f95e51c","signature":false,"impliedFormat":99},{"version":"e6ad9376e7d088ce1dc6d3183ba5f0b3fb67ee586aa824cc8519b52f2341307a","signature":false,"impliedFormat":99},{"version":"c29d1afafb83246b29734f7e0d960bd52842c160994a1cb38db52a738ab52bad","signature":false,"impliedFormat":99},{"version":"7b6261a4407295b1057feba24a1333923dee852f67fe3c329c990ddcfa20adce","signature":false,"impliedFormat":99},{"version":"50cf14b8f0fc2722c11794ca2a06565b1f29e266491da75c745894960ebbce06","signature":false,"impliedFormat":99},{"version":"d62b09cb6f1ceb87ec6c26f3789bc38f8be9fb0ce3126fd0bf89b003d0cba371","signature":false,"impliedFormat":99},{"version":"e9d27f2b7d5171f512053f153cadc303d1b84d00c98e917664ba68eca9b7af6a","signature":false,"impliedFormat":99},{"version":"4899d2cf406cd68748c5d536b736c90339a39f996945126d8a11355eba5f56f3","signature":false,"impliedFormat":99},{"version":"491d5f012b1de793c45e75a930f5cdef1ff0e7875968e743fa6bd5dd7d31cb3b","signature":false,"impliedFormat":99},{"version":"53c86b81daa463deacb0046fee490b6d589438ac71311050b74dcee99afca0f6","signature":false,"impliedFormat":99},{"version":"70587241a4cc2e08ffc30e60c20f3eb38bd5af7e3d99640568ffe2993f933485","signature":false,"impliedFormat":99},{"version":"dd01943d0fe191b3b2020438367709333ff08a69d285e2f715a60711dcf83b61","signature":false,"impliedFormat":99},{"version":"202b3128a1f70c39e84f0052093561c7df16b63ed4e15a0c8e7603ac42cf8e80","signature":false,"impliedFormat":99},{"version":"b6ff37737d006b86082f2f7176eb0a771001e9dde9152a26ef9ea8fd80e6eba0","signature":false,"impliedFormat":99},{"version":"29c4e9ce50026f15c4e58637d8668ced90f82ce7605ca2fd7b521667caa4a12c","signature":false,"impliedFormat":99},{"version":"e6dd8526d318cce4cb3e83bef3cb4bf3aa08186ddc984c4663cf7dee221d430e","signature":false,"impliedFormat":99},{"version":"3b56bc74e48ec8704af54db1f6ecfee746297ee344b12e990ba5f406431014c1","signature":false,"impliedFormat":99},{"version":"9e4991da8b398fa3ee9b889b272b4fe3c21e898d873916b89c641c0717caed10","signature":false,"impliedFormat":99},{"version":"cf188ffe69f260ffd23b86c4fa2f3ecc01dda5bde2740629be244204581f7a49","signature":false,"impliedFormat":99},{"version":"fb5a2c398c5d06e25ae7b12ad15a921f1b980a63fa2a7e4fab133b4e2a812016","signature":false,"impliedFormat":99},{"version":"584cbaebe5928714465942169a1820461276944ac1e97c2062855b14b498b546","signature":false,"impliedFormat":99},{"version":"7bc50a64c4e4d2a40d413b261a07f0e5acdd875ac9d4de6d014f1938f494fcc0","signature":false,"impliedFormat":99},{"version":"fe69ad9a4b9c61fa429e252aaf63ba4bd330bfd169432de7afbd45a8bf2f50a1","signature":false,"impliedFormat":99},{"version":"f294be0ee8508d25d0ea14b5170a056cae0439a6d555a23d7779e3c5c28430ae","signature":false,"impliedFormat":99},{"version":"99b487d1ed8af24e01c427b9837fd7230366ad661d389dc7f142e1c1c8c33b5e","signature":false,"impliedFormat":99},{"version":"852eb3e7189a7c9c6acf431d5d2f8527e590dca54b3f6a099b558e90bb452b08","signature":false,"impliedFormat":99},{"version":"0586d346f71f0ec722d384b2569b7284dff554b55f98118f473079405dc8876b","signature":false,"impliedFormat":99},{"version":"09fe9b15282a073c2cd0ef426704e0baea167c2270fc5c46bc932deee440a071","signature":false,"impliedFormat":99},{"version":"ee02719d72e35d2816bd9052ad2a35f148ac54aa4ffb5d2ad2ef0229a17fc3ae","signature":false,"impliedFormat":99},{"version":"eac029dfd99082efdc6854f4f23932fe54be7eb9bb5debd03c2f6ebd1be502f7","signature":false,"impliedFormat":99},{"version":"924abf8e5bf12cc08323ce731f7c8215953755d53fdd509886ef321137b1fdf3","signature":false,"impliedFormat":99},{"version":"af12948563d3973b5f4c9a4ceda63c362758edb8c64412410ebd9c145b85611b","signature":false,"impliedFormat":99},{"version":"4a5d9348012a3e46c03888e71b0d318cda7e7db25869731375f90edad8dcea02","signature":false,"impliedFormat":99},{"version":"741208d80a2a3673e3a5216965ddf220003aba217ffe55448e528b766febaef7","signature":false,"impliedFormat":99},{"version":"1c42336e3f0cb6811c70c4b77ea96487a107d159bd23fba5ca69a947a0da37bd","signature":false,"impliedFormat":99},{"version":"69dbd631e44f63d27e20be0a628e9f1d9578e835c7a8ed77653894d7f15441df","signature":false,"impliedFormat":99},{"version":"fc391876e409d362cc43a7468226a9eb83440de09873b284bf09fbfb261ec259","signature":false,"impliedFormat":99},{"version":"d06f5012d5ac1bc25c5033f7e916fe42cc0253d6b523b9747809b71676069370","signature":false,"impliedFormat":99},{"version":"5d35840bd540fad886e21ddaf9b078a44c21a827dec9abc08d2d2c1a3ff27d44","signature":false,"impliedFormat":99},{"version":"bccef2e4035020788934f608255058fc234b3ccc67bf9b888b7eb1ef3285e521","signature":false,"impliedFormat":99},{"version":"4ecb0eb653de7093f2eb589cea5b35fdea6e2bbd62bc3d9fafdc5702850f7714","signature":false,"impliedFormat":99},{"version":"69ed52603ad6430aaffbc9dec25e0d01df733aaa32ab4d57d37987aedc94c349","signature":false,"impliedFormat":99},{"version":"323420ca2dd68ae9922913d7c5ca44f36b1db0e5d58e4a9316d4121d5da88664","signature":false,"impliedFormat":99},{"version":"a24168941cd8d3e4ff40d779cef7fddc1d5588a1f6569353f6fd588f5ee0fbd9","signature":false,"impliedFormat":99},{"version":"76ab2326e7eeb1a0609423671abd7260a1302ae535bbc45c8bd251da0bdc40bc","signature":false,"impliedFormat":99},{"version":"1f51b0d1ce3e03cb3d56638437a9658888802b639a46792825e6a73c8eb4e060","signature":false,"impliedFormat":99},{"version":"6def25aee4733ebf8625cc8ec6d71c3461507ad47dbd0b8b0b560feaff72e9bb","signature":false,"impliedFormat":99},{"version":"715d90adc185f1cfd1d3cfa8fbc7547f8867fd4ab0b94bd7f69fb6fc0712332f","signature":false,"impliedFormat":99},{"version":"70afc18e984dede6b32e9829a41f0aecdc1f7c2066a900dbaacc4648ca8a5867","signature":false,"impliedFormat":99},{"version":"953ee863def1b11f321dcb17a7a91686aa582e69dd4ec370e9e33fbad2adcfd3","signature":false,"impliedFormat":99},{"version":"c6fcf55644bb1ee497dbe1debb485d5478abd8e8f9450c3134d1765bff93d141","signature":false,"impliedFormat":99},{"version":"e452b617664fc3d2db96f64ef3addadb8c1ef275eff7946373528b1d6c86a217","signature":false,"impliedFormat":99},{"version":"434a60088d7096cd59e8002f69e87077c620027103d20cd608a240d13881fba7","signature":false,"impliedFormat":99},{"version":"40d9502a7af4ad95d761c849dd6915c9c295b3049faca2728bff940231ca81d3","signature":false,"impliedFormat":99},{"version":"792d1145b644098c0bb411ffb584075eadcfbbd41d72cd9c85c7835212a71079","signature":false,"impliedFormat":99},{"version":"30d0ecf1c23d75cba9e57457703695a25003c4328f6d048171e91b20d1012aa2","signature":false,"impliedFormat":99},{"version":"f216cb46ebeff3f767183626f70d18242307b2c3aab203841ae1d309277aad6b","signature":false,"impliedFormat":99},{"version":"fa9c695ac6e545d4f8a416fb190e4a5e8c5bc2d23388b83f5ae1b765fff5add5","signature":false,"impliedFormat":99},{"version":"2b0b8a8ce4562a966636d0f379a17de2e480a414d3bde60d13a991499de9095f","signature":false,"impliedFormat":99},{"version":"eaa4a725a10f255de96949bfcc717fbb506e0929eee760fbb65b4436d3706f26","signature":false,"impliedFormat":99},{"version":"a384b0ea68d5a8c2ab6ad5fbd3ce1480e752e153dd23feb03d143e7ecc1ac2c7","signature":false,"impliedFormat":99},{"version":"d6a27acb0d9eaf6af0edc8153cd8702301ae561eb990c4b5fdf662ea14a53ce4","signature":false,"impliedFormat":99},{"version":"afad82addd1d9ee6e361606205bbda03e97cb3850f948e53fdbb82f160dc43c7","signature":false,"impliedFormat":99},{"version":"5ee44a60fe09b4c21f71506f6697107f19a01c9842980c7145a4f2938d4dafc4","signature":false,"impliedFormat":99},{"version":"3729454e7f755d54f08bad759e29cc87453323f90ffcbb3f425c4ede7224cfd3","signature":false,"impliedFormat":99},{"version":"da58347ef36f47a7270f743144760adbc97e88b6ff0be2623bc0de73898f66f6","signature":false,"impliedFormat":99},{"version":"d5a910027801f5a0b72971fbbbc6f12feb8817e22b7aa41e99d245849f87b9b9","signature":false,"impliedFormat":99},{"version":"493c39c5f9e9c050c10930448fda1be8de10a0d9b34dcd24ff17a1713c282162","signature":false,"impliedFormat":99},{"version":"7630b6a1c0ebaec2ef8e8abff850e1d6c551c47d1c345340a8ab95667460fc95","signature":false,"impliedFormat":99},{"version":"597b0a9ef02a28f5b1195305ec9f20a4f9948bd90ec3291d0343d1e5c0b4bd16","signature":false,"impliedFormat":99},{"version":"ff667b76b3f744e4806a6a3fd9c88707f802ee3196b6cb1c9e0a4b952048b682","signature":false,"impliedFormat":99},{"version":"7a81f15892b1c8d0cbfb35605038ce5c6d0cf93542946aa0b8c415dbefdea1cd","signature":false,"impliedFormat":99},{"version":"e83057c96584c28d418919e7fe76e57de216228294df43c0eea8949a4234bc10","signature":false},{"version":"d302965483f7fd6daa98ddcdb7d8f926ea46bddeecda88485fd7447ad735bba2","signature":false},{"version":"47a68deeb50f63b6f75de5776f87c2d729a49e9ebcc1cd68df9cbd319512a96e","signature":false},{"version":"a28ac3e717907284b3910b8e9b3f9844a4e0b0a861bea7b923e5adf90f620330","signature":false,"impliedFormat":1},{"version":"e06be013271c7685ebc0b156408fd26de2a54ccbd36e1cce543610f80ea000ea","signature":false},{"version":"82e5a50e17833a10eb091923b7e429dc846d42f1c6161eb6beeb964288d98a15","signature":false,"impliedFormat":1},{"version":"13b77ab19ef7aadd86a1e54f2f08ea23a6d74e102909e3c00d31f231ed040f62","signature":false,"impliedFormat":1},{"version":"b6d03c9cfe2cf0ba4c673c209fcd7c46c815b2619fd2aad59fc4229aaef2ed43","signature":false,"impliedFormat":1},{"version":"c07313de5f693040f674f140e7e2937c0455486e75aecc85c2ec801ecdf14bd9","signature":false},{"version":"125a665d5c4c873c1bce5ce2d9dcbf406846c0a1a63aa1c378201aa3612f3a03","signature":false},{"version":"737d9a4e1e9feffdd3abb6b488f2aee2986ac1b19d0116ec4d7574de1293ac11","signature":false},{"version":"8bd59fa975c548aebfa891a8ef645c5a8e768194448684c054230bd9cb66ca8b","signature":false},{"version":"e25a38fe0f8a036078d70ab9f89585210a70096148f19529436c4354aacc6d90","signature":false},{"version":"c27de78f0af9d77dad42c575ee0542e096d7768f3b11452fb4537669dcedb276","signature":false},{"version":"88bab608eec27b4d63f6ac60a244044ed76832de225259c117bee114e11fb044","signature":false},{"version":"b12dc91cc2a2ffbf587521db1bf6546ee6861223ff689409de41789f2c8e24b0","signature":false},{"version":"9cb0fa4bcb5bff4fa5599d6145f2f242f89eccba0f93f9f7bf55a32710ee912e","signature":false},{"version":"c943d6cdfa9be17d527250e90b46f58d79c0b98a390b2bb6ecfd185ad7f770fc","signature":false},{"version":"aa379f8fb7f7656044adfc595faff081eceede49ce1b8f5782817737f4bfee30","signature":false},{"version":"eceb5eb1507edd36a7737e9879700e0cdfa5105ddb729ec214eb2d5a9b357f9f","signature":false},{"version":"07db36d58a963dd7b80daa59ee7efc8c00c65a4399fb409b40248a016b0a0f65","signature":false},{"version":"50f409408eedbda6c415954bd2689f0a3e62fc2afb3ae3f60477d956c6032043","signature":false},{"version":"080f1f74cf55ad104723192ee2455cb8f4d5b52b23f961286cdf3503a0d77600","signature":false},{"version":"a74697049302ea0669e806b6686945dfec1b5d9d152872181b16bef35c3d3a66","signature":false},{"version":"b366dc103ff4d4e439ef51a7e653987f0612472e3f708512e27873942fb44663","signature":false},{"version":"47b483493ff15a9d2fbe638342dbf36a60b5e23e3fed9e34c836a725f9c15c3c","signature":false},{"version":"89121c1bf2990f5219bfd802a3e7fc557de447c62058d6af68d6b6348d64499a","signature":false,"impliedFormat":1},{"version":"2b37ba54ec067598bf912d56fcb81f6d8ad86a045c757e79440bdef97b52fe1b","signature":false,"impliedFormat":99},{"version":"1bc9dd465634109668661f998485a32da369755d9f32b5a55ed64a525566c94b","signature":false,"impliedFormat":99},{"version":"5702b3c2f5d248290ed99419d77ca1cc3e6c29db5847172377659c50e6303768","signature":false,"impliedFormat":99},{"version":"9764b2eb5b4fc0b8951468fb3dbd6cd922d7752343ef5fbf1a7cd3dfcd54a75e","signature":false,"impliedFormat":99},{"version":"1fc2d3fe8f31c52c802c4dee6c0157c5a1d1f6be44ece83c49174e316cf931ad","signature":false,"impliedFormat":99},{"version":"dc4aae103a0c812121d9db1f7a5ea98231801ed405bf577d1c9c46a893177e36","signature":false,"impliedFormat":99},{"version":"106d3f40907ba68d2ad8ce143a68358bad476e1cc4a5c710c11c7dbaac878308","signature":false,"impliedFormat":99},{"version":"42ad582d92b058b88570d5be95393cf0a6c09a29ba9aa44609465b41d39d2534","signature":false,"impliedFormat":99},{"version":"36e051a1e0d2f2a808dbb164d846be09b5d98e8b782b37922a3b75f57ee66698","signature":false,"impliedFormat":99},{"version":"d4a22007b481fe2a2e6bfd3a42c00cd62d41edb36d30fc4697df2692e9891fc8","signature":false,"impliedFormat":1},{"version":"a5dbd4c9941b614526619bad31047ddd5f504ec4cdad88d6117b549faef34dd3","signature":false,"impliedFormat":99},{"version":"011423c04bfafb915ceb4faec12ea882d60acbe482780a667fa5095796c320f8","signature":false,"impliedFormat":99},{"version":"f8eb2909590ec619643841ead2fc4b4b183fbd859848ef051295d35fef9d8469","signature":false,"impliedFormat":99},{"version":"fe784567dd721417e2c4c7c1d7306f4b8611a4f232f5b7ce734382cf34b417d2","signature":false,"impliedFormat":99},{"version":"4f7e6730a707b0d4971d96de3b562819ce304af770723707a58a578dd55a5e52","signature":false,"impliedFormat":99},{"version":"d1c1213e9176398b4d1d9aa543691181fd5ae23ae5415e80ede41f1ec1ccf72a","signature":false,"impliedFormat":99},{"version":"e87873f06fa094e76ac439c7756b264f3c76a41deb8bc7d39c1d30e0f03ef547","signature":false,"impliedFormat":99},{"version":"488861dc4f870c77c2f2f72c1f27a63fa2e81106f308e3fc345581938928f925","signature":false,"impliedFormat":99},{"version":"eff73acfacda1d3e62bb3cb5bc7200bb0257ea0c8857ce45b3fee5bfec38ad12","signature":false,"impliedFormat":99},{"version":"aff4ac6e11917a051b91edbb9a18735fe56bcfd8b1802ea9dbfb394ad8f6ce8e","signature":false,"impliedFormat":99},{"version":"1f68aed2648740ac69c6634c112fcaae4252fbae11379d6eabee09c0fbf00286","signature":false,"impliedFormat":99},{"version":"5e7c2eff249b4a86fb31e6b15e4353c3ddd5c8aefc253f4c3e4d9caeb4a739d4","signature":false,"impliedFormat":99},{"version":"14c8d1819e24a0ccb0aa64f85c61a6436c403eaf44c0e733cdaf1780fed5ec9f","signature":false,"impliedFormat":99},{"version":"45d1e8fb4fd3e265b15f5a77866a8e21870eae4c69c473c33289a4b971e93704","signature":false,"impliedFormat":99},{"version":"cd40919f70c875ca07ecc5431cc740e366c008bcbe08ba14b8c78353fb4680df","signature":false,"impliedFormat":99},{"version":"ddfd9196f1f83997873bbe958ce99123f11b062f8309fc09d9c9667b2c284391","signature":false,"impliedFormat":99},{"version":"2999ba314a310f6a333199848166d008d088c6e36d090cbdcc69db67d8ae3154","signature":false,"impliedFormat":99},{"version":"62c1e573cd595d3204dfc02b96eba623020b181d2aa3ce6a33e030bc83bebb41","signature":false,"impliedFormat":99},{"version":"ca1616999d6ded0160fea978088a57df492b6c3f8c457a5879837a7e68d69033","signature":false,"impliedFormat":99},{"version":"835e3d95251bbc48918bb874768c13b8986b87ea60471ad8eceb6e38ddd8845e","signature":false,"impliedFormat":99},{"version":"de54e18f04dbcc892a4b4241b9e4c233cfce9be02ac5f43a631bbc25f479cd84","signature":false,"impliedFormat":99},{"version":"453fb9934e71eb8b52347e581b36c01d7751121a75a5cd1a96e3237e3fd9fc7e","signature":false,"impliedFormat":99},{"version":"bc1a1d0eba489e3eb5c2a4aa8cd986c700692b07a76a60b73a3c31e52c7ef983","signature":false,"impliedFormat":99},{"version":"4098e612efd242b5e203c5c0b9afbf7473209905ab2830598be5c7b3942643d0","signature":false,"impliedFormat":99},{"version":"28410cfb9a798bd7d0327fbf0afd4c4038799b1d6a3f86116dc972e31156b6d2","signature":false,"impliedFormat":99},{"version":"514ae9be6724e2164eb38f2a903ef56cf1d0e6ddb62d0d40f155f32d1317c116","signature":false,"impliedFormat":99},{"version":"970e5e94a9071fd5b5c41e2710c0ef7d73e7f7732911681592669e3f7bd06308","signature":false,"impliedFormat":99},{"version":"491fb8b0e0aef777cec1339cb8f5a1a599ed4973ee22a2f02812dd0f48bd78c1","signature":false,"impliedFormat":99},{"version":"6acf0b3018881977d2cfe4382ac3e3db7e103904c4b634be908f1ade06eb302d","signature":false,"impliedFormat":99},{"version":"2dbb2e03b4b7f6524ad5683e7b5aa2e6aef9c83cab1678afd8467fde6d5a3a92","signature":false,"impliedFormat":99},{"version":"135b12824cd5e495ea0a8f7e29aba52e1adb4581bb1e279fb179304ba60c0a44","signature":false,"impliedFormat":99},{"version":"e4c784392051f4bbb80304d3a909da18c98bc58b093456a09b3e3a1b7b10937f","signature":false,"impliedFormat":99},{"version":"2e87c3480512f057f2e7f44f6498b7e3677196e84e0884618fc9e8b6d6228bed","signature":false,"impliedFormat":99},{"version":"66984309d771b6b085e3369227077da237b40e798570f0a2ddbfea383db39812","signature":false,"impliedFormat":99},{"version":"e41be8943835ad083a4f8a558bd2a89b7fe39619ed99f1880187c75e231d033e","signature":false,"impliedFormat":99},{"version":"260558fff7344e4985cfc78472ae58cbc2487e406d23c1ddaf4d484618ce4cfd","signature":false,"impliedFormat":99},{"version":"413d50bc66826f899c842524e5f50f42d45c8cb3b26fd478a62f26ac8da3d90e","signature":false,"impliedFormat":99},{"version":"d9083e10a491b6f8291c7265555ba0e9d599d1f76282812c399ab7639019f365","signature":false,"impliedFormat":99},{"version":"09de774ebab62974edad71cb3c7c6fa786a3fda2644e6473392bd4b600a9c79c","signature":false,"impliedFormat":99},{"version":"e8bcc823792be321f581fcdd8d0f2639d417894e67604d884c38b699284a1a2a","signature":false,"impliedFormat":99},{"version":"7c99839c518dcf5ab8a741a97c190f0703c0a71e30c6d44f0b7921b0deec9f67","signature":false,"impliedFormat":99},{"version":"44c14e4da99cd71f9fe4e415756585cec74b9e7dc47478a837d5bedfb7db1e04","signature":false,"impliedFormat":99},{"version":"1f46ee2b76d9ae1159deb43d14279d04bcebcb9b75de4012b14b1f7486e36f82","signature":false,"impliedFormat":99},{"version":"2838028b54b421306639f4419606306b940a5c5fcc5bc485954cbb0ab84d90f4","signature":false,"impliedFormat":99},{"version":"7116e0399952e03afe9749a77ceaca29b0e1950989375066a9ddc9cb0b7dd252","signature":false,"impliedFormat":99},{"version":"63a443e34be20e3005b7496edd6ed5f6039adba119c1d2499fc446c2620537de","signature":false,"impliedFormat":99},{"version":"87f45900e657071ede09193a640840449cbbd84f442fa110ff6ad48258a79960","signature":false,"impliedFormat":99},{"version":"4f1b0723589fd034500c89cf3f260afdd6f88b304454b632e042f081a25789f2","signature":false},{"version":"64f2c6507bc912eeb766eb90275882ba2314f95243fafce9e1f9ede992e9b33c","signature":false},{"version":"93c799df14ae104aceff5b3f285783ccb1714ae3880d5a24b3ca640c3076da8e","signature":false},{"version":"3b6e329f36349af55a9dc4b5220099d5737615bbbf83974f49553ec145e42a98","signature":false},{"version":"0d5f3487be01fa290b47d627cc1d4340953f7edfd733266bc115a7ddacff3149","signature":false},{"version":"0cd5558516d6829d73c6e1456ec6fdd8432da6fe883870401dc60f7c653d1cfe","signature":false},{"version":"60a5fb40d1a83d1fdb2aa6bd5e39e6fdb62bb20414de87ec03b5fa31d689a660","signature":false},{"version":"9206b6fb75be7dba8bd341a2993f34dc101a82a6d853e72ab853a3a360127f83","signature":false,"impliedFormat":1},{"version":"d4e2fbe371496eaeed5006ee13be014e6a6f639024dde171fbb791cd0e088f21","signature":false,"impliedFormat":99},{"version":"51855a2d7dcc2099b9db1b21ab4c3dd913d8a2609564d652cbd75467825dea1e","signature":false},{"version":"8d6283c46709c1e68f26323ee3b2560aaa4922754cd4709b7abd40298f8c3881","signature":false},{"version":"c6fe327c538417b8dd5b9bb32abcd7911534b10da3a4514f3445cdb28cf3abf2","signature":false,"impliedFormat":1},{"version":"32c6e3ef96f2bcbc1db7d7f891459241657633aa663cab6812fb28ade7c90608","signature":false,"impliedFormat":1},{"version":"9a1cb24d3e285c66e33170195177690254cdff20d5e0383f9cd06dafbdbd935a","signature":false,"impliedFormat":1},{"version":"4411d0e1ab9788ca6b750b79db6bf4668353abe2473ec7de255be1533bb99193","signature":false,"impliedFormat":1},{"version":"6e382505862685d92e5fd9320e2673bc0290137ca5870f116c01268b4a9c926b","signature":false,"impliedFormat":1},{"version":"b00ebf31a47f5fe26a192e4141e7faeb95dbd712dabf46a2a6996f4c21f428e0","signature":false,"impliedFormat":1},{"version":"a0a52d67aece4fbe03b7a7eb93c48ebebd055b6b694dc266b48cc13c31ac9aa7","signature":false,"impliedFormat":1},{"version":"0f1a17c80d4140266685e139d4e2bdf8980da00b5ab31c37cdc94417f2163cab","signature":false,"impliedFormat":1},{"version":"5278946b83c8d8f5545b101f582b654da31fb60699d304c321f9c54515b3aa51","signature":false,"impliedFormat":1},{"version":"58f0dfd8c0396bb4cc15c8a8a4a06e9399b834feece3a87c32892fbdb7a8c3d8","signature":false,"impliedFormat":1},{"version":"106404c6c648b13ba747e62d4f0b9dc38f6e510ba81f76abbe5bb0ab98b206b5","signature":false,"impliedFormat":1},{"version":"4e3e52af9b2899268239ca688698521b2c10d9a28f18f3a98739efe442c1d008","signature":false,"impliedFormat":1},{"version":"2abdd28f8cc8f57bd8cb5760c08042493fbb5ecacfa7ce78a02a9765c2d6bc16","signature":false,"impliedFormat":1},{"version":"a1a508c31ad7d5b5f7715824ada475fe5294210910553904c0da1e775ece2f8f","signature":false,"impliedFormat":1},{"version":"89d2487ad1d3647d6423f024d194aa4123fb39f9a8b9085e81043b1fe81b30c1","signature":false,"impliedFormat":1},{"version":"cd7e65627e60cfc9c73ce5fa5e75f27edb3b72cb3a89787bf25f52cb2ce40f4e","signature":false,"impliedFormat":1},{"version":"cf2a929035d0498cf8afb663ba35e0a18c7a8e9d38fe66c69f5856b605caa996","signature":false,"impliedFormat":1},{"version":"74ac179627a29751525ceee812132334902bed76249110159cd4280b9cef894b","signature":false,"impliedFormat":1},{"version":"7946ebead80caacff77b769eb10cbabcc59277adb6d752625cb7a26897f832b4","signature":false,"impliedFormat":1},{"version":"1dcb729ac22b45e8ddcc7d09f175c4b918508a8b97832577b3bf41b5e54a34e5","signature":false,"impliedFormat":1},{"version":"5129192fd95491a836347c1307ddf937c9bd47af81c815de8c0ba206f0acb784","signature":false,"impliedFormat":1},{"version":"6d71975319d9b944b5a32f1d02adc2237d52d621bdaf89025bd444da69a2bf7b","signature":false,"impliedFormat":1},{"version":"13abad13919d1bf5787f0b174c376941897f2313328f10a4358493652c0f512a","signature":false,"impliedFormat":1},{"version":"525d5d51949cadb39007327379277b4fc094795130237337f61b4c4a20a46572","signature":false,"impliedFormat":1},{"version":"944ceb22482d4afbd95be9409c7c625756e97b7927aa6ff030ed15f7d2c3c950","signature":false,"impliedFormat":1},{"version":"1e6783c8dfd59c6f41ab1c17323412d3a348e4a0dad8d2b2c30cea1d518e5115","signature":false,"impliedFormat":1},{"version":"b8d10e6f48373f1c48d349a5028510e2a674821a2df0037ba3d93afcddb7569a","signature":false,"impliedFormat":1},{"version":"ad70af3966c43da1b5d03688e3f5a4da57620e8a0c17d3620e72c3abae4f8aa0","signature":false,"impliedFormat":1},{"version":"f5b75bb18a7fbc34aff990768127745dfae675971c8755ba99267c14e3e8d817","signature":false,"impliedFormat":1},{"version":"3192f93507a38fdbe7502cdd25d55d46f12a1f26f80e7dd502d7e86fce91d06b","signature":false,"impliedFormat":1},{"version":"a0523a96e5c93e7b974a436bcc0e4e11752b096c91e02c093380203da07c5205","signature":false,"impliedFormat":1},{"version":"6020daee015a3ef1ae7a9c6def7d8dda1e07eb87c0dcb1302861f9a2b5b788b1","signature":false,"impliedFormat":1},{"version":"c6fe327c538417b8dd5b9bb32abcd7911534b10da3a4514f3445cdb28cf3abf2","signature":false,"impliedFormat":99},{"version":"fbc610f9dde70f0bbea39eefec2e31ca1d99f715e9c71fb118bd2306a832bcb5","signature":false,"impliedFormat":99},{"version":"27aee784c447854a4719f11058579e49f08faa70d06d8e30abe00f5e25538de6","signature":false,"impliedFormat":99},{"version":"6a99940a8a76a1aa20ae6f2afd8e909e47e0b17df939e7cf5a585171480655ff","signature":false,"impliedFormat":99},{"version":"043195af0b52aadd10713870dd60369df0377ed153104b26e6bac1213b19f63e","signature":false,"impliedFormat":99},{"version":"ad17a36132569045ab97c8e5badf8febb556011a8ed7b2776ff823967d6d5aca","signature":false,"impliedFormat":99},{"version":"ac2ea00eb8f73665842e57e729e14c6d3feabe9859dc5e87a1ed451b20b889e4","signature":false,"impliedFormat":99},{"version":"6d640d840f53fb5f1613829a7627096717b9b0d98356fb86bb771b6168299e2e","signature":false,"impliedFormat":99},{"version":"cee41a6af55d502f3863fe3238a75108dea16ac9c7339e96c2974ad3babd6d78","signature":false,"impliedFormat":99},{"version":"0065cdb7ac9f5b19921632de63f888ec2cc11ad57f7fc868f44bf0faad2fce3e","signature":false,"impliedFormat":99},{"version":"e2381c64702025b4d57b005e94ed0b994b5592488d76f1e5f67f59d1860ebb70","signature":false,"impliedFormat":99},{"version":"698d2b22251dbbfc0735e2d6ed350addead9ad031fac48b8bb316e0103d865db","signature":false,"impliedFormat":99},{"version":"7298d28b75c52e89c0b3e5681eac19e14480132cd30baaba5e5ca10211a740ef","signature":false,"impliedFormat":99},{"version":"ff10facf373a13d2864ff4de38c4892d74be27d9c6468dac49c08adabbf9b0eb","signature":false,"impliedFormat":99},{"version":"97b1cf4599cc3bc2e84b997aa1af60d91ca489d96bea0e20aaff0e52a5504b29","signature":false,"impliedFormat":99},{"version":"853dfbcd0999d3edc6be547d83dc0e0d75bf44530365b9583e75519d35984c35","signature":false,"impliedFormat":99},{"version":"a829052855dca3affb8e2ef0afa0f013b03fa9b55762348b1fba76d9c2741c99","signature":false,"impliedFormat":99},{"version":"6bd4aa523d61e94da44cee0ee0f3b6c8d5f1a91ef0bd9e8a8cf14530b0a1a6df","signature":false,"impliedFormat":99},{"version":"e3ee1b2216275817b78d5ae0a448410089bc1bd2ed05951eb1958b66affbdec0","signature":false,"impliedFormat":99},{"version":"32c6e3ef96f2bcbc1db7d7f891459241657633aa663cab6812fb28ade7c90608","signature":false,"impliedFormat":99},{"version":"17da8f27c18a2a07c1a48feb81887cb69dacc0af77c3257217016dacf9202151","signature":false,"impliedFormat":99},{"version":"f193437b3919bbe63c2c1bb1abe20fa3eb717ce34fc719d903077784e11e9fc7","signature":false,"impliedFormat":99},{"version":"8c1adc3171d0287f3a26f4891a7d1834c89999573a9b444aa5ff519dcc43a2b7","signature":false,"impliedFormat":99},{"version":"1d61288b34b2dd2029b85bc70fabbb1da90c2a370396d5df5f620e62eb47ddbe","signature":false,"impliedFormat":99},{"version":"5a2cf4cd852a58131b320da62269b2143850920ce27e8fdec41fed5c2c54ec95","signature":false,"impliedFormat":99},{"version":"49fcfda71ea42a9475b530479a547f93d4e88c2deb0c713845243f5c08af8d76","signature":false,"impliedFormat":99},{"version":"9c80bed388d4ed47080423402db9cb1b35a31449045a83a0487f4dfde3d9d747","signature":false,"impliedFormat":99},{"version":"f29bc6a122a4a26c4e23289daae3aa845a18af10da90989cb8b51987e962b7be","signature":false,"impliedFormat":99},{"version":"3a1f39e098971c10633a064bd7a5dbdec464fcf3864300772763c16aa24457f9","signature":false,"impliedFormat":99},{"version":"20e614d6e045d687c3f7d707561b7655ad6177e859afc0c55649b7e346704c77","signature":false,"impliedFormat":99},{"version":"aa0ae1910ba709bc9db460bdc89a6a24d262be1fbea99451bedac8cbbc5fb0cd","signature":false,"impliedFormat":99},{"version":"161d113c2a8b8484de2916480c7ba505c81633d201200d12678f7f91b7a086f0","signature":false,"impliedFormat":99},{"version":"b998a57d4f43e32ac50a1a11f4505e1d7f71c3b87f155c140debe40df10386c8","signature":false,"impliedFormat":99},{"version":"5710e8ed9797ae0042e815eb8f87df2956cb1bf912939c9b98eeb58494a63c13","signature":false,"impliedFormat":99},{"version":"a6bb421dccfec767dbd3e99180b24c07c4a216c0fd549f54a3313f6ce3f9d2c7","signature":false,"impliedFormat":99},{"version":"3b6f1be46f573b1c1f3e6cd949890bfb96b40ff90b6f313e425a379c1c4d5d77","signature":false,"impliedFormat":99},{"version":"28a2c54d0a78d32c29f7279ca04dc6c7860c008579e4e3033938c0ed0201eb9a","signature":false,"impliedFormat":99},{"version":"c2714a402843287624210a47ebea2b1c8dd3ad1438f448633f6831e31eaf37b8","signature":false,"impliedFormat":99},{"version":"b89945ec6707415d739f3e76f2820982d4927dc6b681910b3c433b5ad261b817","signature":false,"impliedFormat":99},{"version":"a72d5822fb2a2c1ef985b30aed889f4c00342c90e12318762fccc550c6a599cf","signature":false,"impliedFormat":99},{"version":"c8616ab60eda93ca87fbb20aada1d6a6cdbcd2cb181a70a2d7728a3cb0613391","signature":false,"impliedFormat":99},{"version":"eeddfd3e0b09890822068de5248d38144f8328e74b5292847eb4e558d8aba8cb","signature":false,"impliedFormat":99},{"version":"d4dc0b6592543314c8549c71e35ad2ec4a57904662d905ff9585836bde1c855a","signature":false,"impliedFormat":99},{"version":"56e1687a174cd10912a35a4676af434bb213aafa5d4371040986c578afe644ab","signature":false,"impliedFormat":99},{"version":"470c280cc484340b97d0942e0c3aa312399eba3849ceb95312d0d7413bac7458","signature":false,"impliedFormat":99},{"version":"ae183f4a6300aad2be92cdbd4dd12d8bcd36eddf8dd1846f998c237235fe0c33","signature":false,"impliedFormat":99},{"version":"4b0eeffddaf51b967e95926a825a6ba1205b81b3a8fecddbe21eaf0e86bdee91","signature":false,"impliedFormat":99},{"version":"bf3ec0d42e33e487c359a989b30e1c9e90fa06de484dc4751e93fb34a9b5cf90","signature":false,"impliedFormat":99},{"version":"7b9656a61d83df1a46c38c2984dbf96dd057bf48f477ddf3f8990311ab98ec23","signature":false,"impliedFormat":99},{"version":"366b85ddb698f3a035e0caa68dc9fef39a85c4368c0810eaf937c3a3c63ac31e","signature":false,"impliedFormat":99},{"version":"d440ee730bc60a5c605903842e398863e7ecdb7a91fc32a9152f14061bf6cc17","signature":false,"impliedFormat":99},{"version":"a12c86c4a691608d19a75320946c80bbce38bb62c091dda32572aee7158edd38","signature":false,"impliedFormat":99},{"version":"3109cb3f8ab0308d2944c26742b6a8a02b4a4ffc23f479a81f0e945d6a6721dd","signature":false,"impliedFormat":99},{"version":"a2289c12a987f2a06f4cf049afde4fdc9455a4af37913445148865938c6eb613","signature":false,"impliedFormat":99},{"version":"55933c1450edcfaf166429425dbbad0a27c0ae8672d5ab5d427e46946a6f2f63","signature":false,"impliedFormat":99},{"version":"6c684fda6998db4112e82367c9e82e27996dc8086a10d58ac9b51d89770d5f9d","signature":false,"impliedFormat":99},{"version":"5c4b4dd983471fcaed17ad3241c98a1f880729f1ca579ddbcdae7e0bf04035df","signature":false,"impliedFormat":99},{"version":"9e430429c7e9e70071a836ac91a1bf6e6651f91d47d9f4baf0a92eefc6130818","signature":false,"impliedFormat":99},{"version":"b3db7f6d7ef72669dc83fa1ff7b90a2ec31d1d8f82778f2a00ef6d101f5247e5","signature":false,"impliedFormat":99},{"version":"354f61bd2a5acaf20462bc4d61048aa25f8fc0dd04dfe3d2f30bdbabbab54e7d","signature":false,"impliedFormat":99},{"version":"d51756340928e549f076c832d7bc2b4180385597b0b4daaa50e422bed53e1a72","signature":false,"impliedFormat":99},{"version":"730cb342a128f5a8a036ffbd6dbc1135b623ce2100cefe1e1817bb8845bc7100","signature":false,"impliedFormat":99},{"version":"78e387f16df573a98dd51b3c86d023ddbd5bf68e510711a9fee8340e7ccc3703","signature":false,"impliedFormat":99},{"version":"d7dfcb039ff9cff38ccd48d2cc1ba95ca45c316670eddbcf81784e21b7128692","signature":false,"impliedFormat":99},{"version":"acaf0a60eb243938f7742df08bf5d52482fbea033fd27141ee3a6d878bbb0d3d","signature":false,"impliedFormat":99},{"version":"fb89aeecfc8eb28f5677c2c89bced74d13442b7f4ebd01ce2ce92127d1b36d69","signature":false,"impliedFormat":99},{"version":"9e91cb0a5bd7aefa2b94a2872828d6d2321df0ca44412e74d99e8b94e579b7d8","signature":false,"impliedFormat":99},{"version":"a56827adea79fb04ecb27671b6a3529fe74c6937ebb9ca9bdd53b7bd0e8c861b","signature":false,"impliedFormat":99},{"version":"192c1a207b44af476190ae66920636de5d56c33b57206bbc2421adc23f673e2e","signature":false,"impliedFormat":99},{"version":"e5aa35b3740170492e06e60989d35a222cfda2148507c650ea55753f726c9213","signature":false,"impliedFormat":99},{"version":"057aa42f6983120c35373aed62b219ffcbd7b476b2df08709139a9eb8dfeed26","signature":false,"impliedFormat":99},{"version":"95a0c46b4675d4d02de6a7c167738f1176b53b26ebec9ccfe8e5d9acb0dc7aee","signature":false,"impliedFormat":99},{"version":"94ad4d9745811c482ae3bad61e5b206e0904f77e0dacf783199193a3df9f6ce6","signature":false,"impliedFormat":99},{"version":"407dc18ecd25802296fade17be81d0d4f499ae75fe88ed132f94e7efdad269e2","signature":false,"impliedFormat":99},{"version":"77dabe31d44c48782c529d5c9acddc41f799bf9b424b259596131efc77355478","signature":false,"impliedFormat":99},{"version":"f6dfe21d867aa5e13bc53d536b69b66427f571707a01e7c3604dc51ded097313","signature":false,"impliedFormat":99},{"version":"4ecd02d0e4ccf7befb9c28802c6c208060e33291d56fd1868900ca295c399077","signature":false,"impliedFormat":99},{"version":"37ada75be4b3f6b888f538091020d81b2a0ad721dc42734f70f639fa4703a5c8","signature":false,"impliedFormat":99},{"version":"aa73ff0024d5434a3e87ea2824f6faece7aad7b9f6c22bd399268241ca051dc7","signature":false,"impliedFormat":99},{"version":"4c9fb50b0697756bab3e4095f28839cf5b55430a4744d2ebbaf850ec8dca54d8","signature":false,"impliedFormat":99},{"version":"782868b723c055c5612c4a243f72a78a8b3c0c3b707ae04954e36e8ab966df4c","signature":false,"impliedFormat":99},{"version":"3de9d9ad4876972e7599fc0b3bddb0fddb1923be75787480a599045a30f14292","signature":false,"impliedFormat":99},{"version":"0f4b3c05937bbdb9cf954722ddc97cd72624e3b810f6f2cf4be334adb1796ec1","signature":false,"impliedFormat":99},{"version":"9fc243c4c87d8560348501080341e923be2e70bf7b5e09a1b26c585d97ae8535","signature":false,"impliedFormat":99},{"version":"4f97089fe15655ae448c9d005bb9a87cc4e599b155edc9e115738c87aa788464","signature":false,"impliedFormat":99},{"version":"f948d562d0a8085f1bd17b50798d5032529a75c147f40adfeb4fd3e453368643","signature":false,"impliedFormat":99},{"version":"22929f9874783b059156ee3cfa864d6f718e1abf9c139f298a037ae0274186f6","signature":false,"impliedFormat":99},{"version":"c72a7c316459b2e872ca4a9aca36cc05d1354798cee10077c57ff34a34440ac2","signature":false,"impliedFormat":99},{"version":"3e5bbf8893b975875f5325ebf790ab1ab38a4173f295ffea2ed1f108d9b1512c","signature":false,"impliedFormat":99},{"version":"9e4a38448c1d26d4503cf408cc96f81b7440a3f0a95d2741df2459fe29807f67","signature":false,"impliedFormat":99},{"version":"84124d21216da35986f92d4d7d1192ca54620baeca32b267d6d7f08b5db00df9","signature":false,"impliedFormat":99},{"version":"efba354914a2dc1056a55510188b6ced85ead18c5d10cc8a767b534e2db4b11b","signature":false,"impliedFormat":99},{"version":"25f5bf39f0785a2976d0af5ac02f5c18ca759cde62bc48dd1d0d99871d9ad86f","signature":false,"impliedFormat":99},{"version":"e711fa7718a2060058ff98ac6bff494c1615b9d42c4f03aa9c8270bc34927164","signature":false,"impliedFormat":99},{"version":"e324b2143fa6e32fac37ed9021b88815e181b045a9f17dbb555b72d55e47cdc1","signature":false,"impliedFormat":99},{"version":"3e90ea83e3803a3da248229e3027a01428c3b3de0f3029f86c121dc76c5cdcc2","signature":false,"impliedFormat":99},{"version":"9368c3e26559a30ad3431d461f3e1b9060ab1d59413f9576e37e19aaf2458041","signature":false,"impliedFormat":99},{"version":"915e5bb8e0e5e65f1dc5f5f36b53872ffcdcaef53903e1c5db7338ea0d57587a","signature":false,"impliedFormat":99},{"version":"92cf986f065f18496f7fcb4f135bff8692588c5973e6c270d523191ef13525ad","signature":false,"impliedFormat":99},{"version":"652f2bd447e7135918bc14c74b964e5fe48f0ba10ff05e96ed325c45ac2e65fb","signature":false,"impliedFormat":99},{"version":"cc2156d0ec0f00ff121ce1a91e23bd2f35b5ab310129ad9f920ddaf1a18c2a4d","signature":false,"impliedFormat":99},{"version":"7b371e5d6e44e49b5c4ff88312ae00e11ab798cfcdd629dee13edc97f32133d8","signature":false,"impliedFormat":99},{"version":"e9166dab89930e97bb2ce6fc18bcc328de1287b1d6e42c2349a0f136fc1f73e6","signature":false,"impliedFormat":99},{"version":"6dc0813d9091dfaed7d19df0c5a079ee72e0248ce5e412562c5633913900be25","signature":false,"impliedFormat":99},{"version":"e704c601079399b3f2ec4acdfc4c761f5fe42f533feaaab7d2c1c1528248ca3e","signature":false,"impliedFormat":99},{"version":"49104d28daa32b15716179e61d76b343635c40763d75fe11369f681a8346b976","signature":false,"impliedFormat":99},{"version":"04cd3418706b1851d2c1d394644775626529c23e615a829b8abfe26ec0ee3aef","signature":false,"impliedFormat":99},{"version":"21e459e9485fc48f21708d946c102e4aaa4a87b4c9ad178e1c5667e3ff6bbc59","signature":false,"impliedFormat":99},{"version":"97e685ac984fc93dcdae6c24f733a7a466274c103fdcf5d3b028eaa9245f59d6","signature":false,"impliedFormat":99},{"version":"68526ea8f3bbf75a95f63a3629bebe3eb8a8d2f81af790ce40bc6aad352a0c12","signature":false,"impliedFormat":99},{"version":"bcab57f5fe8791f2576249dfcc21a688ecf2a5929348cfe94bf3eb152cff8205","signature":false,"impliedFormat":99},{"version":"b5428f35f4ebf7ea46652b0158181d9c709e40a0182e93034b291a9dc53718d8","signature":false,"impliedFormat":99},{"version":"0afcd28553038bca2db622646c1e7fcf3fb6a1c4d3b919ef205a6014edeeae0f","signature":false,"impliedFormat":99},{"version":"ee016606dd83ceedc6340f36c9873fbc319a864948bc88837e71bd3b99fdb4f6","signature":false,"impliedFormat":99},{"version":"0e09ffe659fdd2e452e1cbe4159a51059ae4b2de7c9a02227553f69b82303234","signature":false,"impliedFormat":99},{"version":"4126cb6e6864f09ca50c23a6986f74e8744e6216f08c0e1fe91ab16260dab248","signature":false,"impliedFormat":99},{"version":"4927dba9193c224e56aa3e71474d17623d78a236d58711d8f517322bd752b320","signature":false,"impliedFormat":99},{"version":"3d3f189177511d1452e7095471e3e7854b8c44d94443485dc21f6599c2161921","signature":false,"impliedFormat":99},{"version":"bb0519ff5ef245bbf829d51ad1f90002de702b536691f25334136864be259ec5","signature":false,"impliedFormat":99},{"version":"a64e28f2333ea0324632cf81fd73dc0f7090525547a76308cb1dfe5dab96596a","signature":false,"impliedFormat":99},{"version":"883f9faa0229f5d114f8c89dadd186d0bdf60bdafe94d67d886e0e3b81a3372e","signature":false,"impliedFormat":99},{"version":"d204b9ae964f73721d593e97c54fc55f7fd67de826ce9e9f14b1e762190f23d1","signature":false,"impliedFormat":99},{"version":"91830d20b424859e5582a141efe9a799dc520b5cce17d61b579fb053c9a6cd85","signature":false,"impliedFormat":99},{"version":"68115cdc58303bad32e2b6d59e821ccaada2c3fb63f964df7bd4b2ebd6735e80","signature":false,"impliedFormat":99},{"version":"ee27e47098f1d0955c8a70a50ab89eb0d033d28c5f2d76e071d8f52a804afe07","signature":false,"impliedFormat":99},{"version":"7957b11f126c6af955dc2e08a1288013260f9ec2776ff8cc69045270643bf43e","signature":false,"impliedFormat":99},{"version":"d010efe139c8bb78497dc7185dddbbcefc84d3059b5d8549c26221257818a961","signature":false,"impliedFormat":99},{"version":"85059ed9b6605d92c753daf3a534855ba944be69ff1a12ab4eca28cefbabd07a","signature":false,"impliedFormat":99},{"version":"687208233ae7a969baa2d0c565c9f24eb4cb1e64d6cfb30f71afec9e929e58c2","signature":false,"impliedFormat":99},{"version":"ea68a96f4e2ba9ca97d557b7080fbdb7f6e6cf781bb6d2e084e54da2ac2bb36c","signature":false,"impliedFormat":99},{"version":"fdae6a221872468d5b6ef3ee06a5ede1b7b3168b6c8346d0bf389fe0490b5269","signature":false,"impliedFormat":99},{"version":"424df1d45a2602f93010cb92967dfe76c3fcadad77d59deb9ca9f7ab76995d40","signature":false,"impliedFormat":99},{"version":"21f96085ed19d415725c5a7d665de964f8283cacef43957de10bdd0333721cc4","signature":false,"impliedFormat":99},{"version":"e8d4da9e0859c6d41c4f1c3f4d0e70446554ba6a6ab91e470f01af6a2dcac9bf","signature":false,"impliedFormat":99},{"version":"2e2421a3eec7afefa5a1344a6852d6fee6304678e2d4ee5380b7805f0ac8b58a","signature":false,"impliedFormat":99},{"version":"a10fd5d76a2aaba572bec4143a35ff58912e81f107aa9e6d97f0cd11e4f12483","signature":false,"impliedFormat":99},{"version":"1215f54401c4af167783d0f88f5bfb2dcb6f0dacf48495607920229a84005538","signature":false,"impliedFormat":99},{"version":"476f8eb2ea60d8ad6b2e9a056fdda655b13fd891b73556b85ef0e2af4f764180","signature":false,"impliedFormat":99},{"version":"2fe93aef0ee58eaa1b22a9b93c8d8279fe94490160703e1aabeff026591f8300","signature":false,"impliedFormat":99},{"version":"bbb02e695c037f84947e56da3485bb0d0da9493ed005fa59e4b3c5bc6d448529","signature":false,"impliedFormat":99},{"version":"ba666b3ab51c8bc916c0cebc11a23f4afec6c504c767fd5f0228358f7d285322","signature":false,"impliedFormat":99},{"version":"c10972922d1887fe48ed1722e04ab963e85e1ac12263a167edef9b804a2af097","signature":false,"impliedFormat":99},{"version":"6efeacbd1759ea57a4c7264eb766c531ae0ab2c00385294be58bc5031ef43ad1","signature":false,"impliedFormat":99},{"version":"1c261f5504d0175be4f1b6b99f101f4c3a129a5a29fc768e65c52d6861ca5784","signature":false,"impliedFormat":99},{"version":"f0e69b5877b378d47cbac219992b851e2bbc0f7e3a3d3579d67496dabd341ec4","signature":false,"impliedFormat":99},{"version":"b5ea27f19a54feca5621f5ba36a51026128ea98e7777e5d47f08b79637527cf5","signature":false,"impliedFormat":99},{"version":"b54890769fa3c34ab3eb7e315b474f52d5237c86c35f17d59eb21541e7078f11","signature":false,"impliedFormat":99},{"version":"c133db4b6c17a96db7fa36607c59151dec1e5364d9444cbe15e8c0ea4943861e","signature":false,"impliedFormat":99},{"version":"3a0514f77606d399838431166a0da6dbd9f3c7914eae5bbfbd603e3b6a552959","signature":false,"impliedFormat":99},{"version":"fa568f8d605595e1cffbfca3e8c8c492cf88ae2c6ed151f6c64acf0f9e8c25d8","signature":false,"impliedFormat":99},{"version":"c76fb65cb2eb09a0ee91f02ff5b43a607b94a12c34d16d005b2c0afc62870766","signature":false,"impliedFormat":99},{"version":"cf7af60a0d4308a150df0ab01985aabb1128638df2c22dd81a2f5b74495a3e45","signature":false,"impliedFormat":99},{"version":"913bbf31f6b3a7388b0c92c39aec4e2b5dba6711bf3b04d065bd80c85b6da007","signature":false,"impliedFormat":99},{"version":"42d8c168ca861f0a5b3c4c1a91ff299f07e07c2dd31532cd586fd1ee7b5e3ae6","signature":false,"impliedFormat":99},{"version":"a29faa7cb35193109ec1777562ca52c72e7382ffe9916b26859b5874ad61ff29","signature":false,"impliedFormat":99},{"version":"15bdf2eeef95500ba9f1602896e288cb425e50462b77a07fa4ca23f1068abb21","signature":false,"impliedFormat":99},{"version":"452db58fd828ab87401f6cecc9a44e75fa40716cc4be80a6f66cf0a43c5a60cc","signature":false,"impliedFormat":99},{"version":"54592d0215a3fd239a6aa773b1e1a448dc598b7be6ce9554629cd006ee63a9d6","signature":false,"impliedFormat":99},{"version":"9ee28966bb038151e21e240234f81c6ba5be6fde90b07a9e57d4d84ae8bc030c","signature":false,"impliedFormat":99},{"version":"2fe1c1b2b8a41c22a4e44b0ac7316323d1627d8c72f3f898fa979e8b60d83753","signature":false,"impliedFormat":99},{"version":"956e43b28b5244b27fdb431a1737a90f68c042e162673769330947a8d727d399","signature":false,"impliedFormat":99},{"version":"92a2034da56c329a965c55fd7cffb31ccb293627c7295a114a2ccd19ab558d28","signature":false,"impliedFormat":99},{"version":"c1b7957cd42a98ab392ef9027565404e5826d290a2b3239a81fbac51970b2e63","signature":false,"impliedFormat":99},{"version":"4861ee34a633706bcbba4ea64216f52c82c0b972f3e790b14cf02202994d87c5","signature":false,"impliedFormat":99},{"version":"7af4e33f8b95528de005282d6cca852c48d293655dd7118ad3ce3d4e2790146f","signature":false,"impliedFormat":99},{"version":"df345b8d5bf736526fb45ae28992d043b2716838a128d73a47b18efffe90ffa7","signature":false,"impliedFormat":99},{"version":"d22c5b9861c5fc08ccd129b5fc3dcdc7536e053c0c1d463f3ab39820f751c923","signature":false,"impliedFormat":99},{"version":"dcc38f415a89780b34d827b45493d6dbadb05447d194feb4498172e508c416ac","signature":false,"impliedFormat":99},{"version":"7e917e3b599572a2dd9cfa58ff1f68fda9e659537c077a2c08380b2f2b14f523","signature":false,"impliedFormat":99},{"version":"20b108e922abd1c1966c3f7eb79e530d9ac2140e5f51bfa90f299ad5a3180cf9","signature":false,"impliedFormat":99},{"version":"2bc82315d4e4ed88dc470778e2351a11bc32d57e5141807e4cdb612727848740","signature":false,"impliedFormat":99},{"version":"e2dd1e90801b6cd63705f8e641e41efd1e65abd5fce082ef66d472ba1e7b531b","signature":false,"impliedFormat":99},{"version":"a3cb22545f99760ba147eec92816f8a96222fbb95d62e00706a4c0637176df28","signature":false,"impliedFormat":99},{"version":"287671a0fe52f3e017a58a7395fd8e00f1d7cd9af974a8c4b2baf35cfda63cfa","signature":false,"impliedFormat":99},{"version":"e2cdad7543a43a2fb6ed9b5928821558a03665d3632c95e3212094358ae5896b","signature":false,"impliedFormat":99},{"version":"326a980e72f7b9426be0805774c04838e95195b467bea2072189cefe708e9be7","signature":false,"impliedFormat":99},{"version":"e3588e9db86c6eaa572c313a23bf10f7f2f8370e62972996ac79b99da065acaa","signature":false,"impliedFormat":99},{"version":"1f4700278d1383d6b53ef1f5aecd88e84d1b7e77578761838ffac8e305655c29","signature":false,"impliedFormat":99},{"version":"6362a4854c52419f71f14d3fee88b3b434d1e89dcd58a970e9a82602c0fd707a","signature":false,"impliedFormat":99},{"version":"fb1cc1e09d57dfeb315875453a228948b904cbe1450aaf8fda396ff58364a740","signature":false,"impliedFormat":99},{"version":"50652ed03ea16011bb20e5fa5251301bb7e88c80a6bf0c2ea7ed469be353923b","signature":false,"impliedFormat":99},{"version":"d388e0c1c9a42d59ce88412d3f6ce111f63ce2ff558e0a3f84510092431dfee0","signature":false,"impliedFormat":99},{"version":"35ea0a1e995aef5ae19b1553548a793c76eb31bdf7fef30bc74656660c3a09c3","signature":false,"impliedFormat":99},{"version":"56f4ae4e34cbff1e4158ccada4feea68a357bae86adb3bedaa65260d0af579df","signature":false,"impliedFormat":99},{"version":"6eebdacf8e85b2cf70ad7a2f43ead1f8acccfd214ab57ff1d989e9e35661015d","signature":false,"impliedFormat":99},{"version":"a4f90a12cbfac13b45d256697ce70a6b4227790ca2bf3898ffd2359c19eab4eb","signature":false,"impliedFormat":99},{"version":"4a6c2ac831cff2d8fa846dfb010ee5f7afce3f1b9bd294298ee54fdc555f1161","signature":false,"impliedFormat":99},{"version":"8395cc6350a8233a4da1c471bdac6b63d5ed0a0605da9f1e0c50818212145b5b","signature":false,"impliedFormat":99},{"version":"b58dda762d6bd8608d50e1a9cc4b4a1663a9d4aa50a9476d592a6ecdc6194af4","signature":false,"impliedFormat":99},{"version":"bc14cb4f3868dab2a0293f54a8fe10aa23c0428f37aece586270e35631dd6b67","signature":false,"impliedFormat":99},{"version":"2d4530d6228c27906cb4351f0b6af52ff761a7fab728622c5f67e946f55f7f00","signature":false,"impliedFormat":99},{"version":"ec359d001e98bf56b0e06b4882bd1421fd088d4d181dff3138f52175c0582a51","signature":false,"impliedFormat":99},{"version":"2ac845b89cae82a74e549c7c1d9f983f993033ba14376ea83cd13b3e38a8537a","signature":false,"impliedFormat":99},{"version":"a8d491b4eb728dab387933a518d9e1f32d5c9d5a5225ff134d847b0c8cc9c8ce","signature":false,"impliedFormat":99},{"version":"668f628ae1f164dcf6ea8f334ea6a629d5d1a8e7a2754245720a8326ff7f1dc0","signature":false,"impliedFormat":99},{"version":"5105c00e1ae2c0a17c4061e552fa9ec8c74ec41f69359b8719cb88523781018e","signature":false,"impliedFormat":99},{"version":"d2c033af6f2ea426de4657177f0e548ee5bed6756c618a8b3b296c424e542388","signature":false,"impliedFormat":99},{"version":"45be28de10e6f91aacb29fbd2955ba65a0fd3d1b5fddefece9c381043e91e68d","signature":false,"impliedFormat":99},{"version":"77dabe31d44c48782c529d5c9acddc41f799bf9b424b259596131efc77355478","signature":false,"impliedFormat":99},{"version":"6801ebe0b7ab3b24832bc352e939302f481496b5d90b3bc128c00823990d7c7d","signature":false,"impliedFormat":99},{"version":"0abb1feddc76a0283c7e8e8910c28b366612a71f8bfdd5ca42271d7ad96e50b2","signature":false,"impliedFormat":99},{"version":"ac56b2f316b70d6a727fdbbcfa8d124bcd1798c293487acb2b27a43b5c886bb0","signature":false,"impliedFormat":99},{"version":"d849376baf73ec0b17ffd29de702a2fdbbe0c0390ec91bebf12b6732bf430d29","signature":false,"impliedFormat":99},{"version":"40dcd290c10cc7b04a55f7ee5c76f77250f48022cea1624eba2c0589753993b4","signature":false,"impliedFormat":99},{"version":"0f9c9f7d13a5cf1c63eb56318b6ae4dfa2accef1122b2e88b5ed1c22a4f24e3b","signature":false,"impliedFormat":99},{"version":"9c4178832d47d29c9af3b1377c6b019f7813828887b80bb96777393f700eb260","signature":false,"impliedFormat":99},{"version":"dddb8672a0a6d0e51958d539beb906669a0f1d3be87425aaa0ae3141a9ad6402","signature":false,"impliedFormat":99},{"version":"6b514d5159d0d189675a1d5a707ba068a6da6bc097afb2828aae0c98d8b32f08","signature":false,"impliedFormat":99},{"version":"39d7dbcfec85393fedc8c7cf62ee93f7e97c67605279492b085723b54ccaca8e","signature":false,"impliedFormat":99},{"version":"81882f1fa8d1e43debb7fa1c71f50aa14b81de8c94a7a75db803bb714a9d4e27","signature":false,"impliedFormat":99},{"version":"c727a1218e119f1549b56dd0057e721d67cfa456c060174bac8a5594d95cdb2d","signature":false,"impliedFormat":99},{"version":"bca335fd821572e3f8f1522f6c3999b0bc1fe3782b4d443c317df57c925543ed","signature":false,"impliedFormat":99},{"version":"73332a05f142e33969f9a9b4fb9c12b08b57f09ada25eb3bb94194ca035dc83d","signature":false,"impliedFormat":99},{"version":"c366621e6a8febe9bbca8c26275a1272d99a45440156ca11c860df7aa9d97e6d","signature":false,"impliedFormat":99},{"version":"d9397a54c21d12091a2c9f1d6e40d23baa327ae0b5989462a7a4c6e88e360781","signature":false,"impliedFormat":99},{"version":"dc0e2f7f4d1f850eb20e226de8e751d29d35254b36aa34412509e74d79348b75","signature":false,"impliedFormat":99},{"version":"af3102f6aec26d237c750decefdc7a37d167226bb1f90af80e1e900ceb197659","signature":false,"impliedFormat":99},{"version":"dea1773a15722931fbfe48c14a2a1e1ad4b06a9d9f315b6323ee112c0522c814","signature":false,"impliedFormat":99},{"version":"b26e3175cf5cee8367964e73647d215d1bf38be594ac5362a096c611c0e2eea8","signature":false,"impliedFormat":99},{"version":"4280093ace6386de2a0d941b04cff77dda252f59a0c08282bd3d41ccc79f1a50","signature":false,"impliedFormat":99},{"version":"fe17427083904947a4125a325d5e2afa3a3d34adaedf6630170886a74803f4a2","signature":false,"impliedFormat":99},{"version":"0246f9f332b3c3171dcdd10edafab6eccb918c04b2509a74e251f82e8d423fb7","signature":false,"impliedFormat":99},{"version":"f6ef33c2ff6bbdf1654609a6ca52e74600d16d933fda1893f969fc922160d4d7","signature":false,"impliedFormat":99},{"version":"1abd22816a0d992fd33b3465bf17a5c8066bf13a8c6ca4fc0cd28884b495762d","signature":false,"impliedFormat":99},{"version":"82032a08169ea01cf01aa5fd3f7a02f1f417697df5e42fc27d811d23450bc28d","signature":false,"impliedFormat":99},{"version":"9c8cbd1871126e98602502444cffb28997e6aa9fbc62d85a844d9fd142e9ae1b","signature":false,"impliedFormat":99},{"version":"b0e20abc4a73df8f97b3f1223cc330e9ba3b2062db1908aa2a97754a792139ac","signature":false,"impliedFormat":99},{"version":"bc1f2428d738ab789339030078adf313100471c37d8d69f6cf512a5715333afc","signature":false,"impliedFormat":99},{"version":"dc500c6a23c9432849c82478bdab762fa7bdf9245298c2279a7063dd05ae9f9a","signature":false,"impliedFormat":99},{"version":"cd1b6a2503fc554dcab602e053565c4696e4262b641b897664d840a61f519229","signature":false,"impliedFormat":99},{"version":"af1580cd202df0e33fc592fe1d75d720c15930a4127a87633542b33811316724","signature":false,"impliedFormat":99},{"version":"538608f9242fbf4260d694f19c95b454f855152ab3b882ac72114f19b08984d2","signature":false,"impliedFormat":99},{"version":"cd0e1083bd8ae52661544329c311836abdda5d5dda89fc5d7ab038956c0394e8","signature":false,"impliedFormat":99},{"version":"9ea6fea875302b2bb3976f7431680affc45a4319499d057ce12be04e4f487bf9","signature":false,"impliedFormat":99},{"version":"66e0c3f9875da7be383d0c78c8b8940b6ebae3c6a0fbfd7e77698b5e8ade3b05","signature":false,"impliedFormat":99},{"version":"da38d326fe6a72491cad23ea22c4c94dfc244363b6a3ec8a03b5ad5f4ee6337b","signature":false,"impliedFormat":99},{"version":"da587bf084b08ea4e36a134ec5fb19ae71a0f32ec3ec2a22158029cb2b671e28","signature":false,"impliedFormat":99},{"version":"517a31c520e08c51cfe6d372bc0f5a6bf7bd6287b670bcaa180a1e05c6d4c4da","signature":false,"impliedFormat":99},{"version":"0263d94b7d33716a01d3e3a348b56c2c59e6d897d89b4210bdbf27311127223c","signature":false,"impliedFormat":99},{"version":"d0120e583750834bf1951c8b9936781a98426fe8d3ad3d951f96e12f43090469","signature":false,"impliedFormat":99},{"version":"a2e6a99c0fb4257e9301d592da0834a2cb321b9b1e0a81498424036109295f8b","signature":false,"impliedFormat":99},{"version":"c6b5ae9f99f1fccadc23d56307a28c8490c48e687678f2cafa006b3b9b8e73e4","signature":false,"impliedFormat":99},{"version":"eae178ee8d7292bcd23be2b773dda60b055bc008a0ddce2acc1bfe30cc36cf04","signature":false,"impliedFormat":99},{"version":"e0b5f197fb47b39a4689ad356b8488e335bbf399b283492c0ffae0cfda88837b","signature":false,"impliedFormat":99},{"version":"adb7aa4b8d8b423d0d7e78b6a8affb88c3a32a98e21cd54fcafd570ad8588d0c","signature":false,"impliedFormat":99},{"version":"643e22362c15304f344868ec0e7c0b4a1bc2b56c8b81d5b9f0ee0a6f3c690fff","signature":false,"impliedFormat":99},{"version":"f89e713e33bfcc7cc1d505a1e76f260b7aae72f8ba83f800ab47b5db2fed8653","signature":false,"impliedFormat":99},{"version":"4e095c719ab15aa641872ab286d8be229562c4b3dc4eec79888bc4e8e0426ed8","signature":false,"impliedFormat":99},{"version":"6022afc443d2fe0af44f2f5912a0bdd7d17e32fd1d49e6c5694cbc2c0fa11a8f","signature":false,"impliedFormat":99},{"version":"6dd3f823ac463041d89c84d7bbf74931a38d874a9716040492ac7a16c7d2f023","signature":false,"impliedFormat":99},{"version":"a5bf6d947ce6a4f1935e692c376058493dbfbd9f69d9b60bbaf43fd5d22c324b","signature":false,"impliedFormat":99},{"version":"4927ef881b202105603e8416d63f317a1f1ea47d321e32826b9b20a44caa55e2","signature":false,"impliedFormat":99},{"version":"914d11655546eba92ac24d73e6efdb350738bcf4a9a161a2b96e904bad4de809","signature":false,"impliedFormat":99},{"version":"f9fdd2efc37eefc321338d39b5bd341b2aa82292b72610cb900f205f6803ff66","signature":false,"impliedFormat":99},{"version":"687208233ae7a969baa2d0c565c9f24eb4cb1e64d6cfb30f71afec9e929e58c2","signature":false,"impliedFormat":99},{"version":"ab043784438ef8945a95124d2325308554c8b53dc92ce801f09702e79234282a","signature":false,"impliedFormat":99},{"version":"3fb3501967b0f0224023736d0ad41419482b88a69122e5cb46a50ae5635adb6a","signature":false,"impliedFormat":99},{"version":"06d66a6723085295f3f0ecd254a674478c4dba80e7b01c23a9693a586682252f","signature":false,"impliedFormat":99},{"version":"cc411cd97607f993efb008c8b8a67207e50fdd927b7e33657e8e332c2326c9f3","signature":false,"impliedFormat":99},{"version":"b144c6cdf6525af185cd417dc85fd680a386f0840d7135932a8b6839fdee4da6","signature":false,"impliedFormat":99},{"version":"e8dfa804c81c6b3e3dc411ea7cea81adf192fe20b7c6db21bf5574255f1c9c0e","signature":false,"impliedFormat":99},{"version":"572ee8f367fe4068ccb83f44028ddb124c93e3b2dcc20d65e27544d77a0b84d3","signature":false,"impliedFormat":99},{"version":"7d604c1d876ef8b7fec441cf799296fd0d8f66844cf2232d82cf36eb2ddff8fe","signature":false,"impliedFormat":99},{"version":"7b86b536d3e8ca578f8fbc7e48500f89510925aeda67ed82d5b5a3213baf5685","signature":false,"impliedFormat":99},{"version":"861596a3b58ade9e9733374bd6b45e5833b8b80fd2eb9fe504368fc8f73ae257","signature":false,"impliedFormat":99},{"version":"a3da7cf20826f3344ad9a8a56da040186a1531cace94e2788a2db795f277df94","signature":false,"impliedFormat":99},{"version":"900a9da363740d29e4df6298e09fad18ae01771d4639b4024aa73841c6a725da","signature":false,"impliedFormat":99},{"version":"442f6a9e83bb7d79ff61877dc5f221eea37f1d8609d8848dfbc6228ebc7a8e90","signature":false,"impliedFormat":99},{"version":"4e979a85e80e332414f45089ff02f396683c0b5919598032a491eb7b981fedfd","signature":false,"impliedFormat":99},{"version":"6d3496cac1c65b8a645ecbb3e45ec678dd4d39ce360eecbcb6806a33e3d9a7ae","signature":false,"impliedFormat":99},{"version":"9909129eb7301f470e49bbf19f62a6e7dcdfe9c39fdc3f5030fd1578565c1d28","signature":false,"impliedFormat":99},{"version":"95cdad1f759b74b014cea71cf1a68567b17e4165ec8139930305ba1e21b10a0c","signature":false,"impliedFormat":99},{"version":"7e4fc245cc369ba9c1a39df427563e008b8bfe5bf73c6c3f5d3a928d926a8708","signature":false,"impliedFormat":99},{"version":"3aa7c4c9a6a658802099fb7f72495b9ba80d8203b2a35c4669ddfcbbe4ff402b","signature":false,"impliedFormat":99},{"version":"d39330cb139d83d5fa5071995bb615ea48aa093018646d4985acd3c04b4e443d","signature":false,"impliedFormat":99},{"version":"663800dc36a836040573a5bb161d044da01e1eaf827ccc71a40721c532125a80","signature":false,"impliedFormat":99},{"version":"f28691d933673efd0f69ac7eae66dea47f44d8aa29ec3f9e8b3210f3337d34df","signature":false,"impliedFormat":99},{"version":"ae89fb16575dc616df3ff907c6338d94cfa731881ecef82155b21ab4134b3826","signature":false,"impliedFormat":99},{"version":"687208233ae7a969baa2d0c565c9f24eb4cb1e64d6cfb30f71afec9e929e58c2","signature":false,"impliedFormat":99},{"version":"f716500cce26a598e550ac0908723b9c452e0929738c55a3c7fe3c348416c3d0","signature":false,"impliedFormat":99},{"version":"6b7c511d20403a5a1e3f5099056bc55973479960ceff56c066ff0dd14174c53c","signature":false,"impliedFormat":99},{"version":"48b83bd0962dac0e99040e91a49f794d341c7271e1744d84e1077e43ecda9e04","signature":false,"impliedFormat":99},{"version":"b8fd98862aa6e7ea8fe0663309f15b15f54add29d610e70d62cbccff39ea5065","signature":false,"impliedFormat":99},{"version":"ffa53626a9de934a9447b4152579a54a61b2ea103dbbf02b0f65519bfef98cdd","signature":false,"impliedFormat":99},{"version":"d171a70a6e5ff6700fa3e2f0569a15b12401ad9bc5f4d650f8b844f7f20ef977","signature":false,"impliedFormat":99},{"version":"b6e9b15869788861fff21ec7f371bda9a2e1a1b15040cc005db4d2e792ece5ca","signature":false,"impliedFormat":99},{"version":"22c844fbe7c52ee4e27da1e33993c3bbb60f378fa27bb8348f32841baecb9086","signature":false,"impliedFormat":99},{"version":"dee6934166088b55fe84eae24de63d2e7aae9bfe918dfe635b252f682ceca95a","signature":false,"impliedFormat":99},{"version":"c39b9c4f5cc37a8ed51bef12075f5d023135e11a9b215739fd0dd87ee8da804a","signature":false,"impliedFormat":99},{"version":"db027bc9edef650cff3cbe542959f0d4ef8532073308c04a5217af25fc4f5860","signature":false,"impliedFormat":99},{"version":"a4e026fe4d88d36f577fbd38a390bd846a698206b6d0ca669a70c226e444af1b","signature":false,"impliedFormat":99},{"version":"b5a0d4f7a2d54acbe0d05f4d9f5c9efaaeddc06c3ee0ca0c66aba037e1dca34b","signature":false,"impliedFormat":99},{"version":"fa910f88f55844718a277ee9519206abce66629de2692676c3e2ad1c9278bdfd","signature":false,"impliedFormat":99},{"version":"a886a5af337cce28fe3e956fd0ed921345933163f5b14f739266ba9400b92484","signature":false,"impliedFormat":99},{"version":"9ae87bd743e93b6384efbfa306bde1fa70b6ff27533983e1e1fe08a4ef7037b8","signature":false,"impliedFormat":99},{"version":"5f7c0a4aad7a3406db65d674a5de9e36e0d08773f638b0f49d70e441de7127c0","signature":false,"impliedFormat":99},{"version":"29062edaa0d16f06627831f95681877b49c576c0a439ccd1a2f2a8173774d6b2","signature":false,"impliedFormat":99},{"version":"24fdb4e5c943f9687c8b5f812cd028a6857eda04518400463dfa0af34e7496a8","signature":false,"impliedFormat":1},{"version":"a21e7e5d89a74461af36589673f760a0b9e291bcdc17cc9d5eb88015e85d4ac3","signature":false,"impliedFormat":1},{"version":"e50fc9eece338e433a3538d6f1c18705dbac7d4df3a10dd2643341f6601b7fc9","signature":false,"impliedFormat":1},{"version":"73656cf7465f572d0a1b7b49fb59d001c9e89807520397ac1dc33c5b101458a5","signature":false,"impliedFormat":1},{"version":"588887bb7d4de95d13f9929f90047a38a67ec99608fe9ff71b23ad583176383f","signature":false,"impliedFormat":1},{"version":"5f07da6283e6042b62e0e9be228bc2ce9146e80a6c3c0c87d63ee46aecf68189","signature":false,"impliedFormat":1},{"version":"090238f45c30f3f80c8cb9c1a3c1d6908e0da202a452cfc262f572605d228115","signature":false,"impliedFormat":1},{"version":"2812ccaf4f767472828cd971948ff5d6e52193d9861df147c31cc832560980de","signature":false,"impliedFormat":1},{"version":"7b0576e1aaaa9d8ed0d57a105c062fa2779670dfc01062a49eca0bf8ec4e6c65","signature":false,"impliedFormat":1},{"version":"cb59a39a28bc0935e21faa8fc56ee1003448765688e30b80ad10df02e60ec208","signature":false,"impliedFormat":1},{"version":"2af485609432332423ae5789fb0b1f2dc2f301ec8a9631278131379b12d099ab","signature":false,"impliedFormat":1},{"version":"21b0b302e5170926244dc3a9d37e2ad31cbf0fe8c11adc77f5896bc911c0235c","signature":false,"impliedFormat":1},{"version":"cb5b7292fc0f148c01f9b872f858d3b810090bfee1351048c1324fff291cdc08","signature":false,"impliedFormat":1},{"version":"fc94e594b464b5a376bafb6ee8d62b9ac5f0ab6274fe3e9e34c35b54dfc4b83d","signature":false,"impliedFormat":1},{"version":"23c94434e6466417635ca09a836c92b642654b61d642a8186f7c51ee424d0c77","signature":false,"impliedFormat":1},{"version":"1fceb92c3cd20f0b348c307b6e5392409029c6ddcc68909d9f17f69186bf804f","signature":false,"impliedFormat":1},{"version":"93ed0d71bb82d36977425f9d6be50f7c73c66901686fe28a98c39a7e04e0e696","signature":false,"impliedFormat":1},{"version":"26f9765386d12e454d5b0fc95330a29be95b9626eed01b27f574c89f837a35d7","signature":false,"impliedFormat":1},{"version":"e2d110e1dc27fd69246798e8b0113f31995a815af2c31f7dc6c36552c9221696","signature":false,"impliedFormat":1},{"version":"214b07be1a74783fe141b121d624e93deac3fde42aa81e0b9065d01d6f94f0d3","signature":false,"impliedFormat":1},{"version":"bb3305ee1b7f6449b8a2a9a02f8a056affd91b5212060f0c7841c51dcec8a511","signature":false,"impliedFormat":1},{"version":"a2aaa4e22a8ba6529016ce5ab9d188fa03c1619e70f6c466bff1fd9e7d9c9da5","signature":false,"impliedFormat":1},{"version":"95c6de1e226b707d7da1c62055c8b4bed002c2007201c4849e51cef04ed4dff2","signature":false,"impliedFormat":1},{"version":"7ecd859da9398089ea9911758119c036121ece3b62394649c96412fb9ed97ad3","signature":false,"impliedFormat":1},{"version":"51feb018a1d8f2d91747d53dd239521436737d8888900e70d9d7259b805fc5f4","signature":false,"impliedFormat":1},{"version":"9a948eb256cb8cc9fb9fb5f7c50397f416b592a6ca82e527ebc9cccd066bdc7b","signature":false,"impliedFormat":1},{"version":"6efc42ac356546363fffbf708e444247538c5c2f50b5328838ce7551f24b97fe","signature":false,"impliedFormat":1},{"version":"5d1a464e9426843d7c52a86386aaefbff675d12fbb4b3fdcd6509cc37a9223d0","signature":false,"impliedFormat":1},{"version":"4b8dbf3bc6e40d8f1e8f37864f05d4692b2f8fb7f3b6d9f667cc4523ebd18508","signature":false,"impliedFormat":1},{"version":"c3caa04b7b6b50e394508aadea79fdd256018f86f618fea1222c38b62cb30eac","signature":false,"impliedFormat":1},{"version":"65242b88fbf96e9bea5dd17dc423826d6eaeedd15fabeea4ed20bbd5ca0d2d6c","signature":false,"impliedFormat":1},{"version":"2168c4e3cf8da219ca29772cbd59820754158f71a0ee5ca2660d32ae0005c488","signature":false,"impliedFormat":1},{"version":"f93a9d675c82ae5e1b9d5faac53f3b9616945c11175a12e96d07cd5705a37a54","signature":false,"impliedFormat":1},{"version":"0de763d26a1eb5d68d18cd01fa309db697a98dae5fc7b2b3c9f7fd4adcf486a6","signature":false,"impliedFormat":1},{"version":"4f6b1a4281122aa0eb167a15a787f544ada1ac7d69a7d59c6cf2bcf8a643301e","signature":false,"impliedFormat":1},{"version":"ac50576219add574c42f74450c2532b74386b8e66921e703560b225b6ee00d93","signature":false,"impliedFormat":1},{"version":"106a8dcfad6edfdf4d3ac55b1cc2497c75216497b329801deac67f61880438c3","signature":false,"impliedFormat":1},{"version":"b1075273777233f3e0ca6993702003e9d63f55119795042a44e8709c06fa76f4","signature":false,"impliedFormat":1},{"version":"d1ef345a0eb0ca1b789824933db16ecd523802be3b6ffae3f48c4d4159e45b2c","signature":false,"impliedFormat":1},{"version":"c7a8b4e6891e460d7ca6890c5e76261c127befcae9b2a1d02ae70ef562e62b82","signature":false,"impliedFormat":1},{"version":"37ada75be4b3f6b888f538091020d81b2a0ad721dc42734f70f639fa4703a5c8","signature":false,"impliedFormat":1},{"version":"4920a07dc8432ff91912d9bbea563c0a487d2c306012ec578f2a8eb859a9dc8a","signature":false,"impliedFormat":1},{"version":"ceac26c97c57d8789c24bef625f2e2671310a841764f1c66098f87d0cab8e433","signature":false,"impliedFormat":1},{"version":"9c9cff8557b73cdd6a5009e68587b0fefb4b447bc1d57d7e39c260d8bf36af7b","signature":false,"impliedFormat":1},{"version":"e37b99b2f1a6de07ee44432a83783f2e654247b073dd5b41986f7fe270911008","signature":false,"impliedFormat":1},{"version":"2a980278c362089a82fc6a56154c47d200cbf341f432094de120e9a88e2e9725","signature":false,"impliedFormat":1},{"version":"d1412d468ceca8b95ab3b61f1afb89869bf01da0c822f375d125065e998321e6","signature":false,"impliedFormat":1},{"version":"4cf782c6f40f528798f0635bc8bfaea44269b6d4ce843bb8967c72fc5a1f145b","signature":false,"impliedFormat":1},{"version":"0e5ba5ede5a88c93e0cd7df64417998a560ee2a2635851108ab18cb3a7d67683","signature":false,"impliedFormat":1},{"version":"7e657573708fce6cb9c359642876a3ec5305c1d67775c25e6fb02d8d06a31f24","signature":false,"impliedFormat":1},{"version":"268093e8894ebd8b23a7e38a59f478274e842dc145da0956a0ff8bd60bad3941","signature":false,"impliedFormat":1},{"version":"4d2ea05564d4923238e6a11b366c19ea54f2bae9ce44e08f2b671db691943418","signature":false,"impliedFormat":1},{"version":"bb773cbcdbce212623217a85fa649f277d81aa2305399143a3582c24fd259f7a","signature":false,"impliedFormat":1},{"version":"35e397a761a91f67843f36f864621159a4e904fd3429a0f4cc82d6ffdbbf4605","signature":false,"impliedFormat":1},{"version":"f360eadd4273246a3f7f2d901ba9550532524bf094544b5f011048af34737b0a","signature":false,"impliedFormat":1},{"version":"c2f45b53f91c7167d54c17acfd01e40b463b557ef3d20be753cece39aeb39893","signature":false,"impliedFormat":1},{"version":"7cce2f0267ca763775b920756cfd1abbf5a43d455b7ef678d9f26f608186be2b","signature":false,"impliedFormat":1},{"version":"3bf40ef8ad380c17c4971d7ba4e41425b0bedc66d71c705956b08eb2cc012626","signature":false,"impliedFormat":1},{"version":"831dc45a0dfaa6e162e28427c55d4ca5ebb1e4b7a7112ecf83076f7d3ee78490","signature":false,"impliedFormat":1},{"version":"41f5021a574a8934f85d91f939952f501099e3b0ca0f5adf9128ea8faaf6dfcb","signature":false,"impliedFormat":1},{"version":"af0053bbd4d49096c7db880e8ca1e078e65bf77abd63fd094266ccf6524b7f00","signature":false,"impliedFormat":1},{"version":"bbf8d9840a0a5ad3ebe2f2dbf171ce7438a56f86a59720d58c52a88cdf809708","signature":false,"impliedFormat":1},{"version":"9d792b0516227b5957c7215ba0cf5695963d38e442c3412cef0bbf9f789d7495","signature":false,"impliedFormat":1},{"version":"2426e3b60abeabc2130030cbf18df64df3b47d41aee8954e59bcb00dbda25293","signature":false,"impliedFormat":1},{"version":"6156a0075e433780afb6b79af7ef8e53bdf1315d4af8faaf5d6d7bed6b0b4a3f","signature":false,"impliedFormat":1},{"version":"1b7d9e86ac855d3ea4ef9b1861dfcac31193909b65d9efcac7c5e8f8b3fde095","signature":false,"impliedFormat":1},{"version":"a2956b153415b116743f7e975f0f94d58df5a72cd6eee579453a8fc502c68195","signature":false,"impliedFormat":1},{"version":"b53fd30d02fabf5fc812369d1402602190614a2792921c5494e6f58a06ab8fd7","signature":false,"impliedFormat":1},{"version":"2ca734e81870b90b760c58525fcf14fbd609949f2cf3298f196ed716a264c1fd","signature":false,"impliedFormat":1},{"version":"29e93d04ead183ba2a37486a2e62af2197dba8d4c33377f9177b7ddd9169fd97","signature":false,"impliedFormat":1},{"version":"3a89c0361f0240e82a39dc07d7ffbe8b1656cf5b55652daecc7bcaefda6eedae","signature":false,"impliedFormat":1},{"version":"91100b43d67ba0816b3956551a523033f6cf19a74cba7e2bf114079cf73d51f7","signature":false,"impliedFormat":1},{"version":"da3990a5d74a5d07290ebce0a3c350f9245d533cecf3d0407c892528b275ad42","signature":false,"impliedFormat":1},{"version":"e1a8bf93307763b867919cf637e7c104c389e6e08bf5cf016808a29aa4ff2b94","signature":false,"impliedFormat":1},{"version":"e70711fa57dafe8689722e14611e5943fe8800ad75b89088cc74ea206ea504fb","signature":false,"impliedFormat":1},{"version":"c34f74bea0a425f2330ed36491c1f2e2ef3f084df246d9b35dc09681251c0086","signature":false,"impliedFormat":1},{"version":"5bfff15d8a9ac0643b062b645cbab9c595ae41ba72a0b9570a4721798b51634c","signature":false,"impliedFormat":1},{"version":"e4f885db0667b676db55ee068ecdc3d18e9fa45928964a9ab5ad62b9834c7ccb","signature":false,"impliedFormat":1},{"version":"f0213a0c5377c5372cc6a899466930df2a39bc357f6338bb064efb34a7cfbc2e","signature":false,"impliedFormat":1},{"version":"11c647726551e372bb5c9bede13f658679513f1c37d851bf9b5bed36478b933f","signature":false,"impliedFormat":1},{"version":"21b83ddd067bb74a55c8f0f37388cf81e5f6dd4a7ac852b2a165f1516685f6a8","signature":false,"impliedFormat":1},{"version":"bb0519ff5ef245bbf829d51ad1f90002de702b536691f25334136864be259ec5","signature":false,"impliedFormat":1},{"version":"e8d76714d343ccd68ce55fc28fc89a83029c65bd73353af34f1b1c0b4226ecc7","signature":false,"impliedFormat":1},{"version":"6d07e14d4066cd6fc49e10168207c6b0bc2e61a050937f0605e50e644c2f649d","signature":false,"impliedFormat":1},{"version":"863f877c186409f33bc9bbcbf5be293d5b8fb144fe1613feb311bd650e84ba41","signature":false,"impliedFormat":1},{"version":"4ecf1460e8a9fc9c63958db98c1390285fa66f90bc56b5c8f731d077bc51098e","signature":false,"impliedFormat":1},{"version":"9f9515504019a037f586249f9a801dadfb7a55ea2ff871ad9288a3673d039613","signature":false,"impliedFormat":1},{"version":"9b4343c7777d6d65bc446de27d11c48aa15395a381511e1e7d0be72342c825aa","signature":false,"impliedFormat":1},{"version":"1d27c77e7cd6dcfae2dada28095a6d26b507ba59e77193388a6b61f1553cd238","signature":false,"impliedFormat":1},{"version":"399745b314ad5431c506fc928f1a9e0ef6967738dd4c1b2cb3a063668d65429f","signature":false,"impliedFormat":1},{"version":"7a71f74a9ee37199d5ee5bc4464694201bbd78c63e023f16feeb48b283199fad","signature":false,"impliedFormat":1},{"version":"a37f07ce6c11b2a4afcfd9c7f83ae5b89eeb383dd87fea4b10229542eae7e980","signature":false,"impliedFormat":1},{"version":"c2c679e1fd71ecd0da12101432424195d385cd0d9e36365aafc08a4ea7f20b1e","signature":false,"impliedFormat":1},{"version":"dd2511698e7773988b4bfe7a6fad479515580cef2e435adf8f7a76ba58a7edf9","signature":false,"impliedFormat":1},{"version":"f49e20f04a51826442f15b8309095cbe0c03516d1d3a084bdd4a137d02082afa","signature":false,"impliedFormat":1},{"version":"21f96085ed19d415725c5a7d665de964f8283cacef43957de10bdd0333721cc4","signature":false,"impliedFormat":1},{"version":"608f29d59ded9e0fc40709614db1c220560aae3994867f59e155ae0befdd563b","signature":false,"impliedFormat":1},{"version":"42d162e3a3bae5b4c725731ee14e5c547648b13dde92e1ba28311af82d5816f5","signature":false,"impliedFormat":1},{"version":"d5da0b01ec122d878ad65a02db5c090f8b8db73c740995a5cca9a6d2dbbc283e","signature":false,"impliedFormat":1},{"version":"da1eb92ce80399e90de07131cd4828e0ef0f1535f0338f919fff15ca96cfd723","signature":false,"impliedFormat":1},{"version":"b5000b896ab4166183e463d6a35f4a9e561aacf3435aceaaf3398108828cfce7","signature":false,"impliedFormat":1},{"version":"fddbc8f80afbd7d7fcc2acc5dad3e0334c30aa54a05f7d1b2e6cfded75d22d50","signature":false,"impliedFormat":1},{"version":"465de65bc623ac3faaa1f72e291a07079043d28618935c1ca7ff11178ff5e39c","signature":false,"impliedFormat":1},{"version":"995de6e8b232b0e3de373fd7b71c4ef3fd1d1f7b19069e0ac254ff46c51280b1","signature":false,"impliedFormat":1},{"version":"947c3eb5ea693df5c321f66c23808fd3581bcae2d968f85a37a654a5b7104b4f","signature":false,"impliedFormat":1},{"version":"ac4f6b1deb16cac419942b60b3f1023af0f01d0941e300b791c8f9ea80fbf3fd","signature":false,"impliedFormat":1},{"version":"3b7996ef712335e79837fa3263bfd81de30bd33229d530d51f8e9464b8daeec6","signature":false,"impliedFormat":1},{"version":"6aeb614ef1197c3fe5d2a8daeceb2330c7db559bb6204fc313a80b6016299f0a","signature":false,"impliedFormat":1},{"version":"02995310e925d8d75c53b089cfbc7b3d16c8249797c68383b3d611b1c303e31a","signature":false,"impliedFormat":1},{"version":"270a13f077d9177dc326ee1d331eda60ce70c844f32730c9697deadfc184d73f","signature":false,"impliedFormat":1},{"version":"fcbf10e2822447b90da7b3d145fac0a4b41f5bdc9b4bf443153b528423baeab3","signature":false,"impliedFormat":1},{"version":"589adfcea6fef9cebcb24e80e2a15e7b1098cb28afadab4608b37d6f7a433ba0","signature":false,"impliedFormat":1},{"version":"9c5a2005a43fdc39e0064013bd6c21810e3bc81b47499ed7a1bd4d7d5f4832e1","signature":false,"impliedFormat":1},{"version":"27d9fcdd64c84b7b8a3e70faf81f8412d68078dfa4d3c859022c06f150d2d96c","signature":false,"impliedFormat":1},{"version":"c0d5a5771db8c61b8664a1cd1586c2783b621b1ca1fa1f6ed11d7176d63f3773","signature":false,"impliedFormat":1},{"version":"e8643c8391e314b899b682b2705f5c2b7719f748df185c4846b2899385e74a89","signature":false,"impliedFormat":1},{"version":"71932ba258088b34ce2dd9a4b9ab0d4c7c0f2b9645cb4536b5d3bbf1305868ad","signature":false,"impliedFormat":1},{"version":"c6aa81f62658784cf6cdbc0eb633dda73734ba2e4d5e01d0dda69177892cca81","signature":false,"impliedFormat":1},{"version":"b822572f8171f2c92556d929fc8b6563744eb34f550f323bd459b8a2d8d7142f","signature":false,"impliedFormat":1},{"version":"55997ef8f7a376060afc9d9aa10903b06c71c1ab871a3eac941d8975f2bd0b2b","signature":false,"impliedFormat":1},{"version":"0a2136fb3b94ddc664ebb2c3caf1f44dee7322445d1d21f3839f2a9c3418c69c","signature":false,"impliedFormat":1},{"version":"afb0258a144ad0676856f0c8d5d8d94dc8d3eb37334d3a0631d5b2fa4d500b53","signature":false,"impliedFormat":1},{"version":"2b5352f9a7e75046196793022c9819f539f8bda974a67e6db521d3ae49c089f7","signature":false,"impliedFormat":1},{"version":"dd22b56e0aa2f442935a556b730e735f5472cf07777c19a45682beb5f282124f","signature":false,"impliedFormat":1},{"version":"b4e124d05b3a69d93a171800bdf5595794eeae9540da278742819bc78ce8395e","signature":false,"impliedFormat":1},{"version":"5288504dfa72c0d3de675fa9ca7cd4bff402ba7dbc3a1b7f0b46b805de1561d6","signature":false,"impliedFormat":1},{"version":"9efbe3815e649bb9a4c6d194899be1bcdb410641b4588b0b9aab6d27b1f7503e","signature":false,"impliedFormat":1},{"version":"874a135d207a875e23914ee7b347740c03640c1aba74a6ee9a4e91c73ba78cad","signature":false,"impliedFormat":1},{"version":"d7f53363a3111242860a0121836c7fca9f4652c26fc5662bc0462afd71a98b65","signature":false,"impliedFormat":1},{"version":"0307a00303ebefa12d0d17b41caf67e4770d3d1b0303e8900a19f1aaf1585e15","signature":false,"impliedFormat":1},{"version":"4ca8a82d28bbe33cbac8114a4f924c7dc655a221bae7c8a1dcd18355ebdc1264","signature":false,"impliedFormat":1},{"version":"1e29a049050278b7fd8f46e6984c8dec8ba20beec25af71f25cf1781433152c7","signature":false,"impliedFormat":1},{"version":"bad73c15f3b4a0580d40d78dece11a381016beb23fead40b1ec5cf3311c27cf2","signature":false,"impliedFormat":1},{"version":"2dc2df5296faba10973291219b7cd73cae62d240ca735c101206025a2edaf40b","signature":false,"impliedFormat":1},{"version":"3d22a209bc366cc68b1cc2669cef745110fb3a4a4b20af6bc3dda282a6304545","signature":false,"impliedFormat":1},{"version":"4f481cc3e658418ae37f441adfab9ae24781cd5dcde9cb62310df8e49b6b8e1e","signature":false,"impliedFormat":1},{"version":"246e975c69783173d0242c16c81d64c655ebbc508fd1aaab43952b791f222e54","signature":false,"impliedFormat":1},{"version":"8a1a4d37674c3588749d6e0ab7e32bcebfff039e632b704a2ee5a31b6675c93f","signature":false,"impliedFormat":1},{"version":"200dbbfbc88bee56f3273fd052528e686166469af22f1c2eae85887784ef6384","signature":false,"impliedFormat":1},{"version":"4fcdc7b23a423ea65395b09b6cafeb657cd8b141bae37154f6a5ae2657b915ff","signature":false,"impliedFormat":1},{"version":"403136d01a416d3ef0c71853d1eb5c90180cb9f49c93ad1b3ad0c6d8994f5242","signature":false,"impliedFormat":1},{"version":"5d5fb3ba3bc9a65dd31624be1b94b6e981dadeda2b7de9e8634a08045d474b34","signature":false,"impliedFormat":1},{"version":"69b6972d768fe03e4a09bfd6725d6e00890342fd3a70a5e07a3a0a5400f13532","signature":false,"impliedFormat":1},{"version":"04b4d4ff8822fa15a5ed41397c3b71d8e0092c7e4e329fd3d6a5df1fc3ab6309","signature":false,"impliedFormat":1},{"version":"125ac9164c4642a0adfef19d3a8776abc65882196c76d912bd6499ea4b2039d4","signature":false,"impliedFormat":1},{"version":"543ad9e1bd639f4793115b83be9dd87cf1c94db11f41b8b425f2912ffca87c99","signature":false,"impliedFormat":1},{"version":"f6af8d8ec7fd069843efc4cfe44af2ae0f6000d394693dd88323756150417804","signature":false,"impliedFormat":1},{"version":"391f779b258a30bdcd20cbbf25ef7dd37e8d5af34801c24ee506ea1369ca0875","signature":false,"impliedFormat":1},{"version":"c019cd315b7819f011ff61297244f8c0001d05a1d79563fb9d7ac628a4af353f","signature":false,"impliedFormat":1},{"version":"3c9269470b933e8a011bae7262719769316c5573e4b4c51de35dc1de604da05b","signature":false,"impliedFormat":1},{"version":"f7865b085af3bf90d5a8a95320a78a9f166f38cced48ec0c9f82b6434b151c39","signature":false,"impliedFormat":1},{"version":"3d723afd9c10e890eddea85922b113ff5fc85ca1ff3cb13450c331e87f524f28","signature":false,"impliedFormat":1},{"version":"4c4c946431a82dc9e867f3f4b104023c1a24eac1fc42a009e71ccd46cd918989","signature":false,"impliedFormat":1},{"version":"e907b3d95a35250b97c3bc5067d8c61d73d410b8cd6fdc89356215f66688e954","signature":false,"impliedFormat":1},{"version":"5834abb7b58591c9fcc49ea77898e5c14f938f496dcce604a695c6aa24aa952b","signature":false,"impliedFormat":1},{"version":"18f532529d9f832ae33a1ab4216678cb79aa014cb0ace09a6deb936fbe98dae7","signature":false,"impliedFormat":1},{"version":"9092bac80226c431d390e06c8f9db4c9829af2c38872214355928a715e4667ea","signature":false,"impliedFormat":1},{"version":"ab9a68fa479f2280d86d3504cdfdbb59070c0960edace500aeb7fb030733ef9c","signature":false,"impliedFormat":1},{"version":"a1febda79555d1f00e61a37936b8c723507945cf7746c2f69edecc06402cad54","signature":false,"impliedFormat":1},{"version":"db245e16a0170ec9985650c8da525fb0cbdf5529d6893f5f5a1ac62abdea2110","signature":false,"impliedFormat":1},{"version":"d627182a288e7aa84e5c2296223ea88bab10148529ed4d3e833241b4ab346ce4","signature":false,"impliedFormat":1},{"version":"b1075273777233f3e0ca6993702003e9d63f55119795042a44e8709c06fa76f4","signature":false,"impliedFormat":1},{"version":"400be7e7717827d417c8e2896332b31f96aab976cb475a239b93d537106c0401","signature":false,"impliedFormat":1},{"version":"d53e3dbad031cd1ec0cd9812ac00769ca00b25d1a49659df0dd9dc20640f8a6a","signature":false,"impliedFormat":1},{"version":"ac56b2f316b70d6a727fdbbcfa8d124bcd1798c293487acb2b27a43b5c886bb0","signature":false,"impliedFormat":1},{"version":"c6a836656327631e288199676d24ad3123d98e88ce6b1c5a148ce843d1624dc1","signature":false,"impliedFormat":1},{"version":"6336f11e1d92698bb128921fb31c7874a24fb105135e1ab937c8fdc60c10b1df","signature":false,"impliedFormat":1},{"version":"a1fb029b347e59809a127ded4793857e1f8637a17d77d70d751136db483aa034","signature":false,"impliedFormat":1},{"version":"e2d31c3dc947114b59681d81c9f65c85601833b2bad6c6b94f2776b3b6909583","signature":false,"impliedFormat":1},{"version":"869acb1e5aba235e98f1ac5999779e71050892fb2564dcf91715d50e9ce0e2a7","signature":false,"impliedFormat":1},{"version":"6b514d5159d0d189675a1d5a707ba068a6da6bc097afb2828aae0c98d8b32f08","signature":false,"impliedFormat":1},{"version":"61f64790c38ed4eeb59791b017e69ac8e03a1176212d86c921f067b98f454686","signature":false,"impliedFormat":1},{"version":"7675ff398fd441d13dbebc4bff94297e9b958371a521e5b97c6f417d83bc24ff","signature":false,"impliedFormat":1},{"version":"9aa67e0b65025a8dbe456cae21971991dd73f04d2966318c5f2df594a7fa02ae","signature":false,"impliedFormat":1},{"version":"a3ee196016e6d70b829304d977cde069eb070d8c58c7870148d3693c00440eac","signature":false,"impliedFormat":1},{"version":"17189c21a975300de7f55190639ca94ce6351d3cc9e3c9335d73ef926314e899","signature":false,"impliedFormat":1},{"version":"4af9c16b4df496d14023f38a44e7d7a8b30271539a263628c99a830a5898c8e4","signature":false,"impliedFormat":1},{"version":"b8e7181b61340ce3e0f803d61cad247e2e838d6317aa9a9e67610de5eab5c3ea","signature":false,"impliedFormat":1},{"version":"eea9a1a7670ae73b49d329dac0dbb75e2e8dea3e5bdb3c1ed1c4b0b00a3a36ab","signature":false,"impliedFormat":1},{"version":"680948597204709e3c39fa1d71e744d6ff1d30c9d26eb9ef8e15ca1380dcc5d7","signature":false,"impliedFormat":1},{"version":"06e892e3c156ed3ac0961eb75118d10a51db9244792d09c7a2d387fa4c4a9019","signature":false,"impliedFormat":1},{"version":"aeda9e4a62aa9dd87ea1ec0659a42a4b8602c02e6feb6f1fd26cbe336a9f8b89","signature":false,"impliedFormat":1},{"version":"109511d45c76f3970c30697e1855d1b3849adee3e69f9402bd946941ed28c137","signature":false,"impliedFormat":1},{"version":"d07a7dcc5169195221aeb44fc8755ea7287e558c9dc256e0c51744a2f07c1868","signature":false,"impliedFormat":1},{"version":"72925bef57c4e6137322a3947421451d28a3cdc3a4c57b97017101ff1653a3a7","signature":false,"impliedFormat":1},{"version":"9153c1eea48e884c12d2aaa38dc6cb580be24ed37c3b719d76596fe3795d8a9e","signature":false,"impliedFormat":1},{"version":"5499fb921ed5841dc6c1337c89fe253da7884fce2804756fc5f63af14a88fb7e","signature":false,"impliedFormat":1},{"version":"c1ccf4d8eaf54c093290b4ca0d86d72d3199f58b1f375458ceace2a8d953b2b1","signature":false,"impliedFormat":1},{"version":"d5cf465bd180d7f1304d9a38352809b94881e95b22f15ff2a7117f3b5f6b00e4","signature":false,"impliedFormat":1},{"version":"d262d3679e5d1b19ea539336b457eac78d31848bdfd17ab9efec20c824c9cd85","signature":false,"impliedFormat":1},{"version":"f17e35363e26d6d0c69f2f352d6c89d2a6fcffa4a5e9c9314b71ef36599c3748","signature":false,"impliedFormat":1},{"version":"36cbd81abeef5e520025e79cddce9015f5f99e550733bae4b8de35f4b9780af0","signature":false,"impliedFormat":1},{"version":"bb3ff12f99a9bf071aad40992ba7526b3050ede1acdf402cf39ba158ab030377","signature":false,"impliedFormat":1},{"version":"1cf9d84e5c32fc65b1e3181256800de570991ebfd5053d0c486dd3050ff35b53","signature":false,"impliedFormat":1},{"version":"b455afa3dedd3a6550fb5f15471f75345b3b0a1d34518cfa886a4faa24b60d03","signature":false,"impliedFormat":1},{"version":"dd27486dd7780ad37bb4047bde59946e994020da3a732f679b68aef0b3b0903f","signature":false,"impliedFormat":1},{"version":"b4fb5df21cda6807ccd3b96a70ff9bec1a9b2a3b3db59a10e77fec23d4ba152b","signature":false,"impliedFormat":1},{"version":"7e351bf7a2fba48ef9374be8c61e5e6302bf874f780d3d7178b5d2dd23662f59","signature":false,"impliedFormat":1},{"version":"609f125675470d2db367107848fdd17c7ca2e91b2849d63d3110a54d503ba2f6","signature":false,"impliedFormat":1},{"version":"e9ddba450c2f57159c62b5f7dc86ef47765a2281675883631ff493d731b143f1","signature":false,"impliedFormat":1},{"version":"efa6410b4280320eeb8d4dd0dc56391f2de8ab935dba70db30a8ea5103da4168","signature":false,"impliedFormat":1},{"version":"51c81cb9a0b387f724c1d46143b50712614f48cd11ee328d700eccaf3a1dd1bd","signature":false,"impliedFormat":1},{"version":"10841000dc7852a7390dcc033f81bbab840af5f6d68e85e8e9fecdd227d5e8ac","signature":false,"impliedFormat":1},{"version":"43db2bae5861c8bc442b36e7a52b9038a9b3d8bfcacff44955ec5ff5d39f1ac0","signature":false,"impliedFormat":1},{"version":"0c26a00c1543cdc7f728ede15182ddfa9255aca87d7d2c50aa3e2518ff9fb5d5","signature":false,"impliedFormat":1},{"version":"9560d141a6aa246de1727a564a3cc746d2905754f545f7d3400131279c968dc2","signature":false,"impliedFormat":1},{"version":"3a6921cfe7cdb74b5930c63e9878a8b0cc5610988089ecd25d8a567a4aa90f20","signature":false,"impliedFormat":1},{"version":"705a68feec146e23f59bd38d27d86901c683ce9bd159d624bb34b9f48a04a41d","signature":false,"impliedFormat":1},{"version":"21683b1e16785f57a620e8ce284ddc6df7d3ed779f7cf9af957cb71e065def25","signature":false,"impliedFormat":1},{"version":"374c071a691fc930c75913f189a587aff19628edd102342cdc5b82e6bf662a87","signature":false,"impliedFormat":1},{"version":"78879611aa81c16b156ad3c217eeeaad6133e7a96df6eed9b54c7ed3653e5166","signature":false,"impliedFormat":1},{"version":"4346d4eb0fb6274db40fd4ffbb11312eac0269d922c0fd0138211648c9242ee1","signature":false,"impliedFormat":1},{"version":"af6a87b355d3bf931875461cb78221981edcc600ee7fe2bd27d51d9303ad829d","signature":false,"impliedFormat":1},{"version":"a178801bb95c766889a028a70aea8c4cdf00ea666c4f133927385735bcafc1c2","signature":false,"impliedFormat":1},{"version":"ad978ce600e2d59cff3ec071e08b11285838952bc5c5457291c8e4c657de3f4f","signature":false,"impliedFormat":1},{"version":"d491650c4a954611e2e601fa24ea8df9e8c9bff99d40b2c376e4e8301c95ed0f","signature":false,"impliedFormat":1},{"version":"aeae880b3c268432287a7b677f696a545494277b80b6773086d0c330e8c863d2","signature":false,"impliedFormat":1},{"version":"a37f07ce6c11b2a4afcfd9c7f83ae5b89eeb383dd87fea4b10229542eae7e980","signature":false,"impliedFormat":1},{"version":"3df7125dccd2c139fec4dc761ac861972fa5394d03176e83f295388281348ea4","signature":false,"impliedFormat":1},{"version":"5a45eb47b3594c769d705a866e825ea4dfa54166ba231deef1daa8c44117b3bc","signature":false,"impliedFormat":1},{"version":"ff047ddf3e15357d7b623482fe0773dbf52b1aeb8c194f7084c23eb88a607d01","signature":false,"impliedFormat":1},{"version":"b0a5df02749ecd6fe688cfb813ba1d6be643288798fc999af4cda1d6a2a71381","signature":false,"impliedFormat":1},{"version":"cc36590b0a4bae182a2b806a15166c99b48112e07846fd2d14b3dc8b5aa25727","signature":false,"impliedFormat":1},{"version":"a9daae8b1271106730338b6175887b4d9f95137c2e753a4206d4967027fbcb07","signature":false,"impliedFormat":1},{"version":"2424fd094dd4225c5ca5bcc96cbee06a90c7a31644f27f6dd2301865dfbb3e1a","signature":false,"impliedFormat":1},{"version":"cc8ab47d7ef8714a309256770e0ffb19508c45c309d3c3e78ee6f273684f7348","signature":false,"impliedFormat":1},{"version":"661c18bc1f00c3c99ecaddd68daed47f35161155095aa3c585f6843b683ffc1e","signature":false,"impliedFormat":1},{"version":"931a021ce5f70241a0f5fd7076e111555c17edeafb9384f4c5b0960397bc9104","signature":false,"impliedFormat":1},{"version":"a7bd259dfebe66fa71d12b1bc320ba90384803901999243e65e4d102d20d300a","signature":false,"impliedFormat":1},{"version":"9fffd4b737e72fd0e21d050a3ad2aa50912cbe46a9d09d57fcb688e2713e179f","signature":false,"impliedFormat":1},{"version":"280c747cd77ca0e92a789c8ae911c24069f7b0123518cdb5bb1ee841ce6cca72","signature":false,"impliedFormat":1},{"version":"e3e97f9a95fc952f385b1c20d9cc206a70dd9eb392f56d2e9e637d2f4df1f5b9","signature":false,"impliedFormat":1},{"version":"bbbd7c44cb5d91cc6c5957a7fbddca665a6552e7e8b091ba2e45b61fb0dfb1a4","signature":false,"impliedFormat":1},{"version":"3442c095b1b7920d91aa1242596c2216346d60aa34bab40cfdf20259c847cac9","signature":false,"impliedFormat":1},{"version":"632669a20d9ce4ca95b61d6d6b5f121b1b01ef933c726736e2fc625a02b9e5fa","signature":false,"impliedFormat":1},{"version":"3ad21bec3d5efc95ce6947a0c7cd0b85bf3e334db7696bd4bcfe2881fdb74568","signature":false,"impliedFormat":1},{"version":"7b60f64b11cbf8049e1d2e37489d95df3c3a05d24ec8601944e2d7d2ce014642","signature":false,"impliedFormat":1},{"version":"af6305e8071af50021ade27d37c791f6dcf204a10f675620cddbbfc77d1fd363","signature":false,"impliedFormat":1},{"version":"5f7493862bb8c3cdfd64e08f66a0916d9afdd4f976b86fdb3d23186f5763db47","signature":false,"impliedFormat":1},{"version":"7a2a9e95327b6f3c8e9520d2fc370b9396fc3c64354b6141885fbae5a788ba17","signature":false,"impliedFormat":1},{"version":"7c77abb3c4846d3c9870ca84dabeeab655ae6677b8539853391591fdcefe362f","signature":false,"impliedFormat":1},{"version":"a37f07ce6c11b2a4afcfd9c7f83ae5b89eeb383dd87fea4b10229542eae7e980","signature":false,"impliedFormat":1},{"version":"a923ad9d94428490953d337af5f0a025c821586428cbcf86dfdfb28c4cdc2e6c","signature":false,"impliedFormat":1},{"version":"d149df0575510b68f0b7ed031184fc6385e4458f08667634e55af8c75fb976bc","signature":false,"impliedFormat":1},{"version":"d0c9b675c3289cd2c60e66553c9856a669097194a615077e09369a17d7d622a3","signature":false,"impliedFormat":1},{"version":"aa1f9e2f6c4dacd6e9c90a4dd3d91a791e4abbe0a101a16132681b9d682ba0fa","signature":false,"impliedFormat":1},{"version":"5f68e93e2f993a1359f534c54c1eb877ed6acc731e063efec19c1a005db2664e","signature":false,"impliedFormat":1},{"version":"6667e0d63039a61160959ee916be766d90c0c72f53dfd5836961b1c30de5f503","signature":false,"impliedFormat":1},{"version":"fab78a9c6ec250382534ee686d41136153f1c68919385b3337d16757e04e29a6","signature":false,"impliedFormat":1},{"version":"0da251cbeadbd4194cda4c9f4f1223ace0cd494cc43527edd87f0c8c0f88a868","signature":false,"impliedFormat":1},{"version":"631a049b82e48896b0ef507c78cbde4a8354d37e5135cd5382323215da0ac750","signature":false,"impliedFormat":1},{"version":"54faf1577f9061edab4acf34896ba7358ea77ddfbcea913cd22f2ff423f2721a","signature":false,"impliedFormat":1},{"version":"6a0cb5980cf4c5f295abfd189d806b23be09e100bc35ef940d827e7b5fce0a25","signature":false,"impliedFormat":1},{"version":"750af5e72f362a44bb1a9f251a25cd6cc5ee393c0a54af3c93360b634fe57ec6","signature":false,"impliedFormat":1},{"version":"a70a63639cd348d45d124669abcb802d82dbc4e450fdc878e6bf052678a1ecb4","signature":false,"impliedFormat":1},{"version":"5e14672284377a78b008e173feea4b8f384c8818e981ca703c8967085c4d7980","signature":false,"impliedFormat":1},{"version":"cd9298f38a2ba790a1ff4a54074b2d2339b709653c397bf1d3f2001d772b2148","signature":false,"impliedFormat":1},{"version":"a8eefdb5278ae8868efa4f3b5ecd7deeb601f2986cdefd5872f6abb18ddec784","signature":false,"impliedFormat":1},{"version":"654f5db239daa5481dd627811d64dfa553db9ed8b726f38c70af5d4ef0440a7f","signature":false,"impliedFormat":1},{"version":"4eb2656420b7b5bb9bb14c9c824ad9cec7022a520789bafcb281186d27bfe91d","signature":false,"impliedFormat":1},{"version":"9c39c743a6c4652f109bb829e9fcda6bca1012c8bd353a9274d3e225379727d8","signature":false,"impliedFormat":1},{"version":"5c10203e14cfbf1011404d8943c72889c06951476ebfb66ee5da2a30a679a045","signature":false,"impliedFormat":1},{"version":"a38adc2cdb8e70deb55fbc7e02d9961f2a53b48df93b13b16f9845099cf44c55","signature":false,"impliedFormat":1},{"version":"6bd4aa523d61e94da44cee0ee0f3b6c8d5f1a91ef0bd9e8a8cf14530b0a1a6df","signature":false,"impliedFormat":1},{"version":"77f6bd229b21aed6f3320e45cd1912adb42441eb4b371472f6641d480653615a","signature":false,"impliedFormat":1},{"version":"7bfa39932e2a8720bf42af3e9c4f154021c1160c9477dac3655c8763e1f3778e","signature":false},{"version":"f8d1f2e866531fdf0f39ac8091e6c74f5aa994d2eee7819a61fa714ce60950db","signature":false},{"version":"b8e3d01708f9f293fc27ca892bbb88bd12b1ae4f004912c35d4bdcf96e56b603","signature":false},{"version":"5493039602f38eae56b1edbaef45d30b8a82769a381e65943dfe051beff19c5a","signature":false,"impliedFormat":1},{"version":"d41393eec4438dd812940c3efa292499b3031d31b1d8d4d72a269b95b341f3cf","signature":false,"impliedFormat":1},{"version":"074388271346577d825792a48a86992091d913aaf31c9b5ea3cac25bd474c45a","signature":false,"impliedFormat":1},{"version":"984c26e8864dc326bf6f7a72f89625b3facd86a901d406b7e54aca3d6ef9d674","signature":false,"impliedFormat":1},{"version":"97b9b539996b4d1e6d195123772ef2eb62c5cc3d82c37912df93850989d080af","signature":false,"impliedFormat":1},{"version":"6f5e2ceef60116fcef4ab48464c57a06006d2407f7120b7467a981fe475e84de","signature":false,"impliedFormat":1},{"version":"5c9b631fd684665b7ab77aadfae34060a03e049bf2b39166a4e3878a2fe978dc","signature":false,"impliedFormat":1},{"version":"dbd43b93959005b6ffcd9860fd850ef9c4497f76f0c914469ea068061325ace0","signature":false,"impliedFormat":1},{"version":"e61d03e58524aa0516518ecdcb9315820995a30b0ce7991461481c50cfe558b8","signature":false,"impliedFormat":1},{"version":"70a625aceee6fb4de1d76317508a2133f978b2a8b939f95010ac0ecb7996a786","signature":false,"impliedFormat":1},{"version":"dbea31cae6310e3e5f9b4c8379a2c47e391769058700163919441d6257d3121f","signature":false,"impliedFormat":1},{"version":"6f57d264fbb19264ae5aebe606037360c323871fe0287255d93ed864c8baa04d","signature":false,"impliedFormat":1},{"version":"0d47677e32772c0e89bd32eb5d41012aca04e832688447b726c65c6133c0109d","signature":false,"impliedFormat":1},{"version":"ca3251ff37b9334ebe11efe63afb88c9f15cc4d6921456a86d697fc93d185d7f","signature":false,"impliedFormat":1},{"version":"f5bfda545fc03ca1b3dae2cf4c44d06e74bc9865a6a038272ecc4de91dc78685","signature":false,"impliedFormat":1},{"version":"d45463702248d96f8bb4323112296a93b393d21a6eb95eda623af198e16706d5","signature":false,"impliedFormat":1},{"version":"1bd027170ae6ea02f2f4e8442ac26f9d4d6183c183bd51e347ae264457415242","signature":false,"impliedFormat":1},{"version":"84a488c5fe017f799e54ff0fda5eed362f01553ae989548ded98865cb3930c51","signature":false,"impliedFormat":1},{"version":"dc1a7b93a02ba9141e549fc0fd5d6acb2928212625f5f6bdc7aadf551cae5d38","signature":false,"impliedFormat":1},{"version":"c2d2b059d83639f790b80da8b6250f395698d633ee58ed35cc4345c1a94f6f4d","signature":false},{"version":"fae06dca8644d862e734e4c007a4b6bc3d03a66799c306168644282b302849fc","signature":false},{"version":"4afa33c18077f6df56a76f16e86857ecf5cd5f47da47a4ad72793b0842855cca","signature":false},{"version":"19e3d06c7d09c7a983e1da7cca1e3449ef77817aaa147a2ce7c795e9b3ea48e6","signature":false,"impliedFormat":1},{"version":"328571f2d8a3df114637e8ae633f7bfc4231294d88a3789c3bd4f2ca735adc62","signature":false,"impliedFormat":1},{"version":"66c2f8414e907e8ac973b9ce356859b9a60bcd0c45b23fc265c8f91255030b88","signature":false,"impliedFormat":1},{"version":"59833f2a08068c7c426b35d30a21918c4d627eab661a2f407c6ba5b6940f2c52","signature":false,"impliedFormat":1},{"version":"fe740718e60c9943e2549c895dcb4bd0bad76cee9a1a69fd9c58388d37a7eb7b","signature":false,"impliedFormat":1},{"version":"ee8d105ae6f32000498d40ef18be7cbfa51aafba66bd9da97efcde1fddc046dc","signature":false},{"version":"77c8c99d91ad147bcd417caff41276187ff81bd87fe9f92c0b16798e62a0b2a8","signature":false},{"version":"32ac9c2ab9f974a5f48048e585de522527b684ae34363ded44ca15108b2925f0","signature":false},{"version":"15b7ceb637d97e5b61608a43fb656dc6db12411f81a728ab13a20ac3a6a24b12","signature":false},{"version":"ee240853bdb2c82182685865d8a1edb45b671fe14f6428897ea14c69f7cd0008","signature":false},{"version":"a4b25eb60a863e7f353be256b9ed6f2140770d11c536683d3354123cfedced55","signature":false},{"version":"c7d4615a6937ec38caef7ca42ddf1ac4301d6ea789898e3f0edc3045c17c3c9a","signature":false},{"version":"c7099bacdcdd373d6bebe4fe41561fb8513cfe5375f2e0b266e6b4b6f4224c91","signature":false},{"version":"f490a6b3582cc1dd20ec36abf5fd4db4bd0966a279def6194b6b98672beee762","signature":false},{"version":"858a252d312a52bba22b1a06cd988ee5df6399d9ddb1459785d9bc5dc0df08d3","signature":false},{"version":"678267b7a87da815848d30fd3433332a706ca8750a1387715a989c3a192f6384","signature":false},{"version":"93abea95d5d221c9f5611014b266bdb44051bfa78e4172efda87638fbcf5f9a6","signature":false},{"version":"bb51af2d14a87e826c0856d572b8b84d02b3424e218a0130728ec1e01a54d21d","signature":false},{"version":"7bb53546e9bd6e3f22804497a41d4b885674e7b15b7d64c7d3f83722dfd2b456","signature":false,"impliedFormat":1},{"version":"4083e6d84bfe72b0835b600185c7b7ce321da3d6053f866859185eefc161e7a0","signature":false,"impliedFormat":1},{"version":"b883e245dc30c73b655ffe175712cac82981fc999d6284685f0ed7c1dac8aa6f","signature":false,"impliedFormat":1},{"version":"626e3504b81883fa94578c2a97eff345fadc5eae17a57c39f585655eef5b8272","signature":false,"impliedFormat":1},{"version":"e9a15eeba29ceb0ee109dd5e0282d2877d8165d87251f2ea9741a82685a25c61","signature":false,"impliedFormat":1},{"version":"c6cb06cc021d9149301f3c51762a387f9d7571feed74273b157d934c56857fac","signature":false,"impliedFormat":1},{"version":"cd7c133395a1c72e7c9e546f62292f839819f50a8aa46050f8588b63ef56df88","signature":false,"impliedFormat":1},{"version":"196f5f74208ce4accea017450ed2abc9ce4ab13c29a9ea543db4c2d715a19183","signature":false,"impliedFormat":1},{"version":"4687c961ab2e3107379f139d22932253afb7dd52e75a18890e70d4a376cdf5d9","signature":false,"impliedFormat":1},{"version":"ae8cfe2e3bdef3705fc294d07869a0ab8a52d9b623d1cc0482b6fc2be262b015","signature":false,"impliedFormat":1},{"version":"94c8e9c00244bbf1c868ca526b12b4db1fab144e3f5e18af3591b5b471854157","signature":false,"impliedFormat":1},{"version":"827d576995f67a6205c0f048ae32f6a1cf7bda9a7a76917ab286ef11d7987fd7","signature":false,"impliedFormat":1},{"version":"cb5dc83310a61d2bb351ddcdcaa6ec1cf60cc965d26ce6f156a28b4062e96ab2","signature":false,"impliedFormat":1},{"version":"0091cb2456a823e123fe76faa8b94dea81db421770d9a9c9ade1b111abe0fcd1","signature":false,"impliedFormat":1},{"version":"034d811fd7fb2262ad35b21df0ecab14fdd513e25dbf563572068e3f083957d9","signature":false,"impliedFormat":1},{"version":"298bcc906dd21d62b56731f9233795cd11d88e062329f5df7cdb4e499207cdd4","signature":false,"impliedFormat":1},{"version":"f7e64be58c24f2f0b7116bed8f8c17e6543ddcdc1f46861d5c54217b4a47d731","signature":false,"impliedFormat":1},{"version":"966394e0405e675ca1282edbfa5140df86cb6dc025e0f957985f059fe4b9d5d6","signature":false,"impliedFormat":1},{"version":"b0587deb3f251b7ad289240c54b7c41161bb6488807d1f713e0a14c540cbcaee","signature":false,"impliedFormat":1},{"version":"4254aab77d0092cab52b34c2e0ab235f24f82a5e557f11d5409ae02213386e29","signature":false,"impliedFormat":1},{"version":"19db45929fad543b26b12504ee4e3ff7d9a8bddc1fc3ed39723c2259e3a4590f","signature":false,"impliedFormat":1},{"version":"b21934bebe4cd01c02953ab8d17be4d33d69057afdb5469be3956e84a09a8d99","signature":false,"impliedFormat":1},{"version":"b2b734c414d440c92a17fd409fa8dac89f425031a6fc7843bac765c6c174d1ca","signature":false,"impliedFormat":1},{"version":"239f39e8ad95065f5188a7acd8dbefbbbf94d9e00c460ffdc331e24bc1f63a54","signature":false,"impliedFormat":1},{"version":"d44f78893cb79e00e16a028e3023a65c1f2968352378e8e323f8c8f88b8da495","signature":false,"impliedFormat":1},{"version":"32afc9daae92391cb4efeb0d2dac779dc0fb17c69be0eb171fd5ed7f7908eeb4","signature":false,"impliedFormat":1},{"version":"b835c6e093ad9cda87d376c248735f7e4081f64d304b7c54a688f1276875cbf0","signature":false,"impliedFormat":1},{"version":"a9eabe1d0b20e967a18758a77884fbd61b897d72a57ddd9bf7ea6ef1a3f4514b","signature":false,"impliedFormat":1},{"version":"64c5059e7d7a80fe99d7dad639f3ba765f8d5b42c5b265275d7cd68f8426be75","signature":false,"impliedFormat":1},{"version":"05dc1970dc02c54db14d23ff7a30af00efbd7735313aa8af45c4fd4f5c3d3a33","signature":false,"impliedFormat":1},{"version":"a0caf07fe750954ad4cf079c5cf036be2191a758c2700424085ffde6af60d185","signature":false,"impliedFormat":1},{"version":"1ea59d0d71022de8ea1c98a3f88d452ad5701c7f85e74ddaa0b3b9a34ed0e81c","signature":false,"impliedFormat":1},{"version":"eab89b3aa37e9e48b2679f4abe685d56ac371daa8fbe68526c6b0c914eb28474","signature":false,"impliedFormat":1},{"version":"e90570d784bf2504276e8c152e557ce6e3eabf0524aabb32c42f6702754c96c4","signature":false},{"version":"b6f22a9a3bc8b7938000180ee3a6211229b58cd5344731de5d32d22df22de27a","signature":false},{"version":"f88a59039cfc0637e394f7852c795b4de7dc129dae354dcf22ae8dc5ed72bc89","signature":false},{"version":"7aa9b4675d4738233426269dd85accc58ac387e3c695f7c12763c7841b7ce75b","signature":false},{"version":"3d7b49ce47f0b77ed4a60045774dcdf7fd28cd7349791916aa675d27efc72659","signature":false},{"version":"b8e2fea8b084d05911f04af3e1bd5349af7aefad9acb1449cb6d7e2cf5c192ad","signature":false},{"version":"0665d48ac9f36444b091477ffd6fc434e74799061e78942113a13e74bc1a3380","signature":false},{"version":"9ae3b12e6db8837063a71001cf771774d33a0302690e0af0ad583fd5a2e14ebb","signature":false},{"version":"d820f931e22accba87b3f4fcc2bb02a1512d870afae4ccea80fdb2e67950be70","signature":false},{"version":"7d723bac5fd71bc2733bb5b7064c1fed26d449b261f01e7f119e496dc75f2103","signature":false},{"version":"59e497eaf44e916e4cbadf1aa271ef6bb85a03ac3a78941dd53c95aee9e502a5","signature":false},{"version":"d9ba413f64bed4149a309e3065a97024466495573588d05b7e7eea16396a7d41","signature":false},{"version":"37886a734050456837e810f76a0ec914efeb9339ae77d7d58111472cde3d9ef1","signature":false},{"version":"424f631c318741ef30e6db91a53e14f97e0b45c4c49cf9db3442d7eeaf81a3bc","signature":false},{"version":"5c655edde9cdc0dc6ca8a593dbcbe295ca82f5d5f7308a27c20fbb2e4cfe3c30","signature":false},{"version":"8975df90bcd19f06f8ae951552aaa78faf8def3977f84358ff41f6b1ec54aa18","signature":false},{"version":"0100ff29e218ee635b433f47e8a5f0e07ac23404474b4db3e20f462abd954e18","signature":false},{"version":"e8d582b48504b92609c0957e56b1537eecd9859b277ff78b1dc5c78a39df582f","signature":false},{"version":"70f75822be1d546ce34dac3273b8228d4f3e912f303f452ec26079e6ca490ea7","signature":false},{"version":"13f50e4966d429b9bde9c4d4887abf84fd94b2e4bdc49e1a2b4c4f86361e3592","signature":false},{"version":"8a71b625d48cdb0b912a119d4d50d20722b20a6c0447619b1498cca7cb661c12","signature":false},{"version":"675476aa15bc3057c1a77e5005974b437b53e9accde39efad86088305075935d","signature":false},{"version":"67457ef3ef44b381d9e8ce57a39c3f0f574695e4c43f3b7647019e79c6af3820","signature":false},{"version":"ae25631a57b0771c147c3eae7e0e2a33dbaba58630654820f274ed1382c352a6","signature":false},{"version":"d67354be3cabafcc12d6d801755c82df6728fbee01de8440313ef82d76cd46cb","signature":false},{"version":"6a43c0d8ef4d332664b36df1a756b72720215e4b6346ea34ac1d6eb0a11b7efc","signature":false},{"version":"d0100654a750bd434fe7783bf930b65ec3ba97c1e9e79ea8a46f9e24243cf74d","signature":false},{"version":"97dc4b54c072fe7559a392f3fc4044febf0f1f54ba37c4685f4e8cc84c536b7b","signature":false},{"version":"6a29c8a7589ce3c09959f716efdf71d7d4df3374a5743fb39c9398e0f6f924e6","signature":false},{"version":"029e5e9ab48f73e65c10dc4ac1e96a321b451e4b46f7612cda1e0450ced1c5b4","signature":false},{"version":"f47af68d8f7ea64d8d17a6e06bebde6c74cc848dd75d088fbd4c9ae014f2a8ec","signature":false},{"version":"6dd051d671f5d08372ae1ddd567baaffa21fe16fd2e61dfcf6ecc7068816ea61","signature":false},{"version":"72726f91499809c4565292047b4bc32a0ca6e22abf740c0604ac460ae9435602","signature":false},{"version":"1a1e9e512387cf13ae5f7ab883aeffae1285542dcc74dd6205b9ef603725114a","signature":false},{"version":"012cd26c65e5e706fff809ab5f32bb7f6cd083c2aafa94ba10f527b453519218","signature":false},{"version":"396b0793470939f068b9c8d0aec4ada5d67f1fb26bde9383404e2cb2c44db9d7","signature":false},{"version":"451727c76b8fe2ab928c500226ee5c12694ed697e165921502581e33de1b2d16","signature":false},{"version":"79b342f57106f89e48e1107b90ca73c44d58fee431a7d958bc2314a762714616","signature":false},{"version":"1c99729480667f6d6e54eeee4ee2a199918b00a73d7f4c076df8e67d590df0f7","signature":false},{"version":"18b116a485b38461807058df093e38092af35d86918e08e6151c24fde46d0128","signature":false},{"version":"b404c36700ebbbfec8ba2f96537831c875d646ae176ba179d6bee19ec30a5650","signature":false},{"version":"162e1666c686d8ee976230f660ad5f55fa03d8a73fcc5b7a184e50a563c2826a","signature":false},{"version":"59e3a470408a90c53ea78ad23acb010914ea83868d56c684a8e9b93d31e818ed","signature":false},{"version":"dd0472a679a883cb75325434715adb54834dfebe52873f33ef412a013b8dc062","signature":false},{"version":"f8d0e7681c98f7a433af14d11bf5f94c83b3cc9717d9a7bb014e8c99fa01831b","signature":false},{"version":"940f60e87bcb76ec8f3b69e33f964fe3461ffa6a0f1b147911a96f2bebbd63f9","signature":false},{"version":"a5327052bde477b8ec8d50f96342488b93c53470f9b67bd3ea5b99f0b5b83115","signature":false},{"version":"4c83a981f5d543b5c5ed47f927711b2c992f29c56cdb69fc9dcd9c4814f7000c","signature":false},{"version":"56118c9b579334a6a0e88a7f03bfe81850a0736c1b2fab712a841b93c825e652","signature":false},{"version":"281ac4fd381bd709572a6d01b3d73032508c37e76a4832a5ae5af0417e9eaf96","signature":false},{"version":"56ccda27e098d2776226f56bc3491adc49f3c17dd807eb839a82d912d2037ad1","signature":false},{"version":"e8c6df8a5a63cb7ce292a5d11a8723b5fecd8f57b42c3691a41700d4ebae98cb","signature":false},{"version":"1fd918d079f726c54a077d886967ca2ec8108f453189d9ef66bf1d4e72236743","signature":false,"impliedFormat":1},{"version":"5f31f61b497fd98b889a67865516a339b52a846c3e1e15406b1137864a6c444f","signature":false,"impliedFormat":1},{"version":"3d46e269720a54a3348bb4495a4f4f520f1e1b23f5c9a017f98fc87810de6c16","signature":false,"impliedFormat":1},{"version":"d9518fe8e1e265b1088352b9117628910a9f251974a2abc2aa904f7f4f71fa53","signature":false,"impliedFormat":1},{"version":"7ea29ad18f6242a9f51f3003df2323030d3830f7a2dbda788f52fd1da71bfe36","signature":false,"impliedFormat":1},{"version":"129a1cd246cb69ece363ac69ae257d426bf471cce3cc5a978397d5143cde8c2d","signature":false,"impliedFormat":1},{"version":"04848d258a86d4bfaef951ad304251f6c917408f89fad419e28ce6c84f0a1674","signature":false,"impliedFormat":1},{"version":"e44a9c7bbbfb42ee61b76c1a9041113d758ca8d8b41cefb0c4524689766e5a9f","signature":false,"impliedFormat":1},{"version":"1e9b3e4e3d802df7b85f23318ab4dde8e9a83fbae6e197441d815147067d2fa4","signature":false,"impliedFormat":1},{"version":"0affed2881f6bc1652807c4cb53c87b51255995fe30a68dbcb7127114ff426b3","signature":false,"impliedFormat":1},{"version":"46b2bff13c747143a9a39614cfebc8972c8e1ef3a140139314f454a04580327d","signature":false,"impliedFormat":1},{"version":"23b03a7cf8d6a63de30d7f104f6367127dde524181017e1d8879c00d999dca05","signature":false,"impliedFormat":1},{"version":"5c489290b1db424ecb914ebb7dcc88280ddb7f4dbd1a1a7a16c1559e7d98f195","signature":false,"impliedFormat":1},{"version":"69018d625163e38107ac82f8a9ef723b601b600d3ca0140a35a9c6eb94b552a3","signature":false,"impliedFormat":1},{"version":"867c654176fa4def1058ee8f50c055e58d6a15dedfb0567439986e836070cf00","signature":false,"impliedFormat":1},{"version":"9402092f0d7dc8552149b21e3cc5f4010040c8b73b6cee2ca5bc930ddc2e0f10","signature":false,"impliedFormat":1},{"version":"0d93989b69ce434475c8240a0a2284ac322f87fd0ba437c44ed0e27834a7853d","signature":false},{"version":"66dc41ebd3d05e5b7735e3db5092f65c88469c50ca49f7cba278972c4fa4f27c","signature":false},{"version":"f6b97941d04315bd6adad9d61ec80641460139831034976d32575847bdd22538","signature":false},{"version":"58cd4b7cab54a29b73faa4f6632a25a16992ef28582ece31d96cf76f3f327f3a","signature":false},{"version":"addd54deab514edfe7c4cf3bbaa5361bc0622c48ca92ec8a304a9511690e7bcb","signature":false},{"version":"de5ce2ad42d19959fb6e8c8c7ec2bd037d0c72c562b8e41ff9528e1b6ecdadbc","signature":false},{"version":"12083fb2809c7e391b00e09537c76aa7236a0ce5e23e56016f2925dc251f1e10","signature":false},{"version":"fbf8e0756d30e1a8996af76d322c02ff881cc99b0020c1cd7b6722e88fb65603","signature":false},{"version":"7adab9785f6c6b961264bba03a92ae82e6cc25870670c519acc5296035f02773","signature":false,"impliedFormat":1},{"version":"e1ce63479599818355fd072e3473f383e726542a0fda5973c84a798e028c8b8c","signature":false,"impliedFormat":1},{"version":"2e2af9546045fe045cc8b71348603cc2ae167072a48ffd0df7ca8637315e7658","signature":false,"impliedFormat":1},{"version":"2ec33e991c5636c5618021c1e8653ac25a6376629e5898c8851572fba3806727","signature":false,"impliedFormat":1},{"version":"f6da04048ece9da9902e5814c450da4e2b780ac5838bc6484b0235471f81b57b","signature":false,"impliedFormat":99},{"version":"a409cb812a758508ca4f687af6e1403538e325566bba01fa3d2ed4a564b771ad","signature":false,"impliedFormat":1},{"version":"f9a4d04b4d986112ea532ba5024a1cd5d434ccc6e54f1ed5db5a61b66666e8e1","signature":false},{"version":"f7fb682d2dc1c12a91866d34357576d96314f296b092b7fe750d866bfc843888","signature":false},{"version":"480224c9a295a31d628465fd87d3981da3f35d2d4fdf7300d0dd2e1657327045","signature":false},{"version":"ac29d7350c1ce1137977790d13c16933bd551502d583f9460151975593776a1e","signature":false},{"version":"68ac094a63a74d183f119b23f26097c6140e23e1e4bc3224e1d7486607e65e22","signature":false},{"version":"1ec48a216fbc248f5e191c8d168530ef1fced7168e082d8efd32cc00f2bd3e16","signature":false},{"version":"18c6427a728a59a6e25c3a7d738f70a84f77512e6b757f9ef28b5b1b1514eb8d","signature":false},{"version":"f1d603af05e59e26aae3d9fa7bb0138e744bfbfc9f4793ddeaabe5c85da1d30f","signature":false,"impliedFormat":1},{"version":"ce96432ddb743cad7849f77eb61e48330847b19d98ede1d21a37ab34ae3fd987","signature":false},{"version":"a83011d4f9fccea066527fe9d091d6ad9dccf8f4c708c6a4921d455ef0232b86","signature":false},{"version":"065cb8a013108ab0e784c164f896aa7aedd0f4d7cc09019025f4458aab81b67d","signature":false},{"version":"510e012b8ec9042019239285dcccf6f8e95066d672b616041a9b3e15a5f6392b","signature":false},{"version":"19507a63fd70f2c45c5a18f660fec1d5abb0db88289bebf2f8a56bf0b4305b6a","signature":false},{"version":"18254698d35b45955f640ffe134591811775de39696c7b9ee5e45f18961790c6","signature":false},{"version":"5ba54cd53b4f2270d05a6f88aed9cb547ab322ff78066e6e218b2908f20f15ee","signature":false},{"version":"ce5dc2f4828143f4e3f0e01ab208cb7f1a2a333772e940509b2d3bc9c2440b40","signature":false},{"version":"459323a1c7a3b9539f885624cefa9b1fd3db6dbb5503eef8976f660059eda30b","signature":false},{"version":"004854aeda64679571073e0321910168f9e597de295ca6b58c767070111aa48b","signature":false},{"version":"6ec3a4a5da1cd9ae703e9d3df1f2c144001d5d70c9a1fafe4915b17aa1ed2806","signature":false},{"version":"636faa36146e36b519fd87be6836e05416d1c92ab3f3fa75a786d7c318f22c55","signature":false},{"version":"bbf5dc96094a9a3a1f2c888b1e89d6712cd4fbcb9d0a5d4008f06849316304fe","signature":false},{"version":"3e789851c9b8b9edd7db9e587f5ce78bbc45f2f8cf81e2f73873f40a3a4caf21","signature":false},{"version":"d81b916c51d754d0ff0a50253522977c2ab516778a9b95aca2fc72ff419bc487","signature":false},{"version":"15cc50cf19c841a73368880e7618e3cd96e10c6ca0fbb6ea3e0f42f5575b88ca","signature":false},{"version":"abb3c4d8c20f490086dba025e96b1280c300867ea2193143ce9b124344a5d7a4","signature":false},{"version":"519130af88e5982d60281d6e1600e7d54b510458ab8c60a7bd07a243fab8024f","signature":false},{"version":"67e3951d9be31de938738c5fa8a696d1140c48c04f6e2c52682d4c52495bb8fa","signature":false},{"version":"bc54f9083034e6e538d25d741b2db40c102fafc7118529b05f0de6b1340da2db","signature":false},{"version":"b910e45dd7d550fa9db5fc5bbdec2a6857a55e0d3642c4d1e06525d08e70545d","signature":false},{"version":"cb7e14331a22503f610e24cfc532158455e1d7fabe78a66f132a629e9b47b362","signature":false},{"version":"bce1bd15b7292496af0505bb3fff56d3c62b8ea38194e486d9aedbd9a76cb37b","signature":false},{"version":"f4aba1db46eb0b7dff1ab8281273c055b8b8732cab29b0f38cd57a796220bbc1","signature":false},{"version":"191529cbe31e0cf5558f3647bbe068a63434f10b0fc680cd89647e2ea962148e","signature":false},{"version":"7d11070217b349034d6ba8b59e6306ef8b31f7421a2d63eb710481346a76d06c","signature":false},{"version":"1644e6c6c522d544e610c8b12084576ac2fdfd86880d9c5ba521c929a742d49c","signature":false,"impliedFormat":1},{"version":"263f1d8195cc880eb2d2e4bda4ffbdf5ff64349f0809943079940ed690a76176","signature":false,"impliedFormat":1},{"version":"fd4d39cb7501a5d9e9d2b5ef7635783db7df53e7516c258688b589bf2a0c72a6","signature":false,"impliedFormat":1},{"version":"0ac9964568520b8ec8e11bc1fc0b837fc545a0d1987f46a4980c1310c6555e41","signature":false,"impliedFormat":1},{"version":"db6ea4ce523828a48131a303cf7717269d1057aa534746040352f5f32a5d30e9","signature":false},{"version":"0f6f41e71090306ba21654d2f7f3d43c27ac6a267b1356af65dca991ae0ca23f","signature":false},{"version":"bef36064d2af3d364f39ef3a4218fc269ba496a645f266406d09da090e18f4ce","signature":false},{"version":"9375f56fccf6059047a33ee19038ca03dfc3aaf1ed8411fcbcfd6618bb0587eb","signature":false},{"version":"ef2b9beb3b7c7991d8642d0965d9e62d5bd2fb563bbf634ad7975d097c40faff","signature":false},{"version":"87a6bdfde9f8c96fc17f73ac95615836be8e0f9aa194e33b6ab7e96439943592","signature":false},{"version":"75efac0ee7644e6bbc8a5fd6f9c87a1612baa3376cf0f34f94f41dc92541ea43","signature":false},{"version":"9c70cc1a3e36a25c11a53bbcbea79f743021d6fcc4bab9a3f8bc5d1f220f911b","signature":false},{"version":"e3dfe647c38a2f479e7d4cb131b6431b57efcc4c9b471685b82180940cdd99cc","signature":false},{"version":"72f167de2677a542344cc43cc93357327be04b3e2710743b7e3b0e96a712a6cb","signature":false},{"version":"3777d4312327b19645ae1187c5a1839079d0e3d4d46305931d6291e93ce20d1a","signature":false},{"version":"c4e5ee6fc27852ff917f7c1539b497d4d3437737cff634cedb87b2492512e2c4","signature":false},{"version":"96afd3d94421edd1cab27715d322355ba4f4ccf4da2c4b81eb0567662a5da110","signature":false},{"version":"d7d919c98f730e519279670ece24ec275e9571f3de702e66c108e9560aeb61e8","signature":false},{"version":"eb3311a0bba6091f53e61495fc60546fa06182f189c10791df4a0dd93c06136a","signature":false},{"version":"2e7d4857e6d9d0c1bec174417cc488764b26d0f6e1b472de771cff01848a685a","signature":false},{"version":"f07a27256ab1522fd4fe7e5c50d65970456799d01d3d62148c849873028b268d","signature":false},{"version":"f0c1ddc0efabe88bc3e9ee332f31f20e3194d09738e687e9a28a88cfcad5413a","signature":false},{"version":"c7f0ebaa108bd625e7ae904d392669f82fbbefc59a4f950baa6ede55e62951aa","signature":false},{"version":"fc192881bea025216f2c386bcb941dba628f6cba4f06eac1596c4c5012b598a2","signature":false},{"version":"16e5aa4b1537a7d5fe211a4aff7996c16cd97895ae710e86c86422b77ffa1a57","signature":false},{"version":"30105428f4a4ff7582762c5b16014aaf9dff7035acbff954568ed2311ff40581","signature":false},{"version":"b81d5f84b743cfaab5567030e555637d8683c63ceda6ea7185d64bf4dc8d585a","signature":false},{"version":"4a13bcb441dc4dbebb031147d6f0716c0b44222893a975fd9c199b29559ccaff","signature":false},{"version":"bb33fb2cb3168efe39e9bc4b7e3e423a1e4fb493d29172be897fe0f91587e5f1","signature":false},{"version":"9aa04b2280eb4928c9441d3c93e3928515b080ef361193a33cd01636c700a06f","signature":false},{"version":"d876cd7b475433b869cc75bc714ed84cf487acd8b356717dc5d6cd4ff1f14452","signature":false},{"version":"7ab140f4af7c6d6e5f17152d4173867b46949d1eabf3327dec00cda032e69809","signature":false},{"version":"5853bd2d8806cb67ac965f1e3b029f733b4329fd495a16fe055659800926f759","signature":false},{"version":"a79b2103184d652b55bfe0e97d7cf81adfa98f1de59664041bb95533408731ac","signature":false},{"version":"1ebcdfcd4a07c9915160a8ea565d47c66f809d87f35cc762d514a0907280b96a","signature":false},{"version":"6cfb3f9f192141b2a27ac3b9baf2143b2a9667e22612f4994fd9e2103d0c3a4f","signature":false},{"version":"eb777ecc618026d119d78e6388cf188d77fca9992f7631b156e45a3f7ee931e2","signature":false},{"version":"ac00634c33d4b2f60cdf0868951a659085c9ca8bb8e85b03b215dea8c9c7f259","signature":false},{"version":"66dff9190a98a6071aacb34af4d1da69830dbbc958c39885de25c52f6a508565","signature":false},{"version":"f1e50712497ee6d86572d37665912547c1a2372a76fde70e570769a8319eaa0a","signature":false},{"version":"1f7422d74fea037862329e6b6562f8228eb59a7ff8780aa1ec80606118915b81","signature":false},{"version":"16b3071890a1e447f3ed684cb08b79e19eedc37180ec39524211aa847d2a4960","signature":false},{"version":"f5114a978a564b670de3951b7f412b238dedf0676fb1fa03ed8b1aa1d5a82c0e","signature":false},{"version":"50eefd7a83e1fe8affbb0bf1a8f0cbb0d293ba8f1d3b08aed1b9da3072a32867","signature":false},{"version":"dee2e84fe4b685af2e8b2f8cd7188863cdb1727b92d04e17afde56098a6fd464","signature":false},{"version":"dfd87be2db4c15fb1ab3a39c49a2cdd2668cbd7b728877fa37498ac3ccb9f081","signature":false},{"version":"502751d722c15a1fb04a7eaf6285164135e0423ca4436009a8375104a4e885fb","signature":false},{"version":"e75327a3ef5cf977143126e45614cf277fcc2923f408a64ff2c47c2e4c13b923","signature":false},{"version":"cb4b1ae7d58424b6d5c54d57b0132c2cdca916a99e97c2ae6f957bd5a1eba227","signature":false},{"version":"c584b57974acd0c5e91a02f2618dfeb901b98ef95765021ac4c5f27a5efe916c","signature":false},{"version":"11369c13a39e73da19e4f0db825852096872b8ae87bccb8cf68c20c0bfeaf73c","signature":false},{"version":"238e7cb94b8a6ea865c40113ee48ed1142ccc50701b3f9346a5efaf2bebc32ea","signature":false},{"version":"e6001a0e2c19cd5c6ad81d66553a20a08ff27b134733984550d70243f17fd3c7","signature":false},{"version":"7e849c481bad8b736330c234db069d401a9ec3a0ffee5add4c45c4ca9f886ea6","signature":false},{"version":"8691193d2d3534b1badb4ecab099eb9d0a1150f52e88fbddd460544f757593e0","signature":false},{"version":"da7b1dc0686092e0723f6505cbd1cbf7ebabaf884e9610497b2238ec4df1b8cf","signature":false},{"version":"7d58b2507478d38ab6c10148ba62bc61cb4f56d4680ec1e0a21c0826ce660902","signature":false},{"version":"5d3aa125900e40668ff418b7ec8d80afa6b716d0ef3f43a9ae26155d19714f2f","signature":false},{"version":"5d4b265083413e662c452e302531f628b8f36223dbefe8fc2de4700176be1e8a","signature":false},{"version":"7c90abe0b96b4160d384e08ce649a9578ee40a88a554b364e49abc3fc64dfe0c","signature":false},{"version":"e5bc3c07730f6008bff6ff908bdb3312f79afa961eab1a41e7c5565fb409a8cb","signature":false},{"version":"23088a8a47b50af2045ae966819d8f4813345357994fde83d0b465b71c280e2f","signature":false},{"version":"f71ec69e87c4cfe5bc116296198acd1a5e22990576a0aa1a74e3c1f6b078a484","signature":false,"affectsGlobalScope":true},{"version":"3e6979e74e12ba9d70f4ca3ef341df738866b267e5d71ef1412959e96cdfb925","signature":false},{"version":"3dcb7b259a172321a952ccdedb6e4db134f22014388dd66cba17b44354107dc6","signature":false},{"version":"79b778f70496bbcd8670f05757f1bf8c5953e7ab29dfd7cadb33da5cfc91da16","signature":false},{"version":"c43271800783a52ff344bc99e09df694d08dd852d899aa2fc6477a4a8c902b66","signature":false},{"version":"28e57386a8d75b04e76cb2755418ee1b2220d0b5e23c38e8cc0325e929b6d9e0","signature":false},{"version":"1aee7797799e771eb9cf9101c3073f8f8c89be7721bc1eac1d6c69fe7bc3ffa5","signature":false},{"version":"19611179ca324c36fc3d674ab070a0e8b1cb23cccfcf36ca836ac593df698730","signature":false},{"version":"e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855","signature":false},{"version":"f17ed72d1b1882ab6dc66d45e699f757d15bba0807af2fc9c3ec98fe367611c1","signature":false,"impliedFormat":1},{"version":"3f4248944c380b995618847b254e64c4fad48e31650c692bb01424df48618a86","signature":false,"impliedFormat":1},{"version":"6ca0b2845c6e95e75e42fe99026c7545c8b4cfd9bc1750bb5421b0699ef89c35","signature":false,"impliedFormat":1},{"version":"b03cab886d1ea68398cec813d86857b97f7100fcc17ad8eabdb033dd6251953f","signature":false,"impliedFormat":1},{"version":"9dcb107d4bd0227f0b407099ed8da673e06e034f540cb70f3c7bbb82c27e19a5","signature":false,"impliedFormat":1},{"version":"7ae48a41eb14b67618693cd9a9565c932c5685be8ce991372190894ea2ebcd48","signature":false,"impliedFormat":1},{"version":"049a505f6e3afa40848056cee27e66562e31a8d287f1a3312ea8007f51e7755c","signature":false,"impliedFormat":1},{"version":"419834b7cbefad357b0a82dcde9288c9dbc0e4f756bd1fd4aacff366e347fc62","signature":false,"impliedFormat":1},{"version":"86cfdab4c4aa1f2826cf8599128e6558ca86976b29445882f9b0f8e30004c381","signature":false,"impliedFormat":1},{"version":"446b866091c8b61cdd9e03d16a33f977f425d1ca14f1cc445e18fb08a9d76d6b","signature":false,"impliedFormat":1},{"version":"2d850410228c234f5995691db649c95473fcdf6b601be6d7024c4c0bcf74399c","signature":false},{"version":"4f51e0e7792a71a10f483a3dd228189573ea6865d791cfe593d4f350dcffd5a0","signature":false},{"version":"d5f61e1f148ac468415ec4ba0bf3ad84f592614f0b47cb8fce00d4a328511a15","signature":false},{"version":"6f328eabf1a9de038a9e2187e302ccaa052c7d3105f4b78ff920e24658a26c03","signature":false},{"version":"ff054b617abf711cbb5d40def2d97b5329ccbb445cfcffba12cbc152cd3e66f7","signature":false},{"version":"8dc509f91e22a17cc754e241a7ad82a8a4e7ad04bf8954fe73d4e0e34a833de9","signature":false},{"version":"1926a8e0fedeb0305cd3c55cc384b076b987cb0774ba8dfbc96c817e67d380a9","signature":false},{"version":"b81aed65c98be9cb546f9e446cff3869b9b507b3cd9c8a0b6540dab73995c1ba","signature":false},{"version":"a3bf16f8c7d4b4a8bd17b363dd781da8e911c65734f1662b6cb0c76e7dce5d23","signature":false},{"version":"ca7cf0cc64626e544c5f5f4be197c0aec399f3fc2fafb3ff7f8ab5069167fa2f","signature":false},{"version":"bf99162ecde9ad113a0a487a8d11a2b6d0c0d76520ad4ec732c0b6d0c918ff1b","signature":false},{"version":"2c445958dcbbcf704086b9afe1f18bd5053404709057844189dadfb2b1869d56","signature":false},{"version":"075307523f140b5a54d31c975e48dbaf93dda728dbfbe326176ec875b4280361","signature":false,"impliedFormat":99}],"root":[50,[250,255],258,259,261,262,[264,266],479,480,635,636,678,680,681,683,684,825,[916,918],920,[924,941],[1000,1006],1009,1010,[1605,1607],[1627,1629],[1635,1647],[1681,1732],[1749,1756],[1763,1769],[1771,1796],[1801,1867],[1878,1889]],"options":{"composite":true},"referencedMap":[[579,1],[578,2],[509,3],[682,4],[679,4],[921,5],[919,4],[1760,6],[1758,7],[1759,8],[1757,4],[1761,9],[1890,10],[263,4],[1876,11],[1872,12],[1877,13],[1875,14],[1868,4],[1874,15],[1871,16],[1870,17],[1869,18],[501,19],[504,20],[506,21],[507,22],[497,23],[498,4],[496,15],[503,24],[500,25],[499,26],[257,27],[256,4],[667,28],[666,29],[662,30],[663,31],[661,32],[650,4],[670,33],[668,32],[672,34],[671,35],[669,36],[674,37],[673,32],[676,38],[675,39],[665,40],[664,32],[660,32],[677,41],[654,42],[647,43],[652,44],[644,45],[640,4],[651,46],[658,4],[659,47],[646,48],[655,4],[642,4],[653,49],[638,4],[648,50],[643,51],[641,52],[645,4],[649,4],[656,53],[639,4],[657,4],[588,54],[591,55],[597,56],[600,57],[621,58],[599,59],[580,4],[581,60],[582,61],[585,4],[583,4],[584,4],[622,62],[587,54],[586,4],[623,63],[590,55],[589,4],[627,64],[624,65],[594,66],[596,67],[593,68],[595,69],[592,66],[625,70],[598,54],[626,71],[601,72],[620,73],[617,74],[619,75],[604,76],[611,77],[613,78],[615,79],[614,80],[606,81],[603,74],[607,4],[618,82],[608,83],[605,4],[616,4],[602,4],[609,84],[610,4],[612,85],[477,4],[466,86],[475,87],[468,88],[464,87],[467,88],[478,89],[472,90],[474,90],[473,90],[469,88],[470,91],[471,92],[465,90],[476,88],[354,93],[350,94],[326,95],[325,96],[372,97],[462,4],[329,98],[359,99],[319,100],[371,4],[348,101],[349,102],[345,103],[352,104],[347,105],[394,106],[391,107],[463,108],[421,109],[422,109],[423,109],[424,109],[425,4],[317,110],[378,111],[400,112],[386,113],[379,114],[374,111],[380,111],[387,111],[388,111],[389,115],[373,111],[375,111],[393,4],[376,90],[377,111],[381,116],[382,111],[384,90],[383,114],[397,117],[395,118],[396,119],[398,120],[399,121],[390,122],[353,123],[305,124],[320,125],[344,4],[331,126],[351,127],[339,128],[332,4],[334,129],[343,130],[342,131],[340,132],[341,133],[337,134],[336,135],[338,134],[323,136],[333,137],[356,138],[357,139],[330,140],[392,4],[267,4],[269,141],[460,4],[281,142],[283,143],[280,144],[284,4],[282,4],[295,4],[285,4],[301,145],[458,4],[311,146],[302,147],[309,148],[303,4],[288,149],[286,150],[291,151],[290,152],[287,4],[385,153],[312,154],[276,131],[293,155],[271,4],[306,4],[294,4],[279,156],[272,4],[316,157],[298,4],[292,4],[426,4],[296,158],[297,147],[278,153],[459,4],[313,159],[299,160],[314,161],[300,162],[268,4],[275,163],[273,4],[307,4],[308,164],[318,165],[310,166],[335,131],[304,167],[274,4],[315,168],[289,4],[461,4],[277,4],[433,4],[416,169],[451,164],[407,4],[409,170],[408,171],[358,172],[448,167],[417,141],[418,4],[446,173],[369,4],[457,174],[429,109],[419,175],[327,4],[445,176],[420,109],[450,177],[437,4],[270,147],[455,4],[410,4],[412,178],[411,179],[362,4],[360,180],[364,181],[427,182],[428,4],[361,183],[415,4],[414,184],[413,4],[452,4],[368,185],[430,186],[439,166],[431,4],[432,4],[434,187],[404,4],[406,188],[405,189],[363,155],[366,4],[435,4],[346,190],[355,4],[453,4],[447,191],[370,192],[367,180],[436,141],[365,137],[324,193],[438,194],[441,195],[442,4],[443,4],[444,4],[321,196],[322,197],[449,131],[401,183],[402,4],[403,198],[454,4],[456,4],[328,199],[440,4],[576,4],[923,5],[922,5],[228,200],[227,4],[508,4],[952,201],[729,4],[730,202],[116,203],[117,203],[118,204],[70,205],[119,206],[120,207],[121,208],[65,4],[68,209],[66,4],[67,4],[122,210],[123,211],[124,212],[125,213],[126,214],[127,215],[128,215],[129,216],[130,217],[131,218],[132,219],[71,4],[69,4],[133,220],[134,221],[135,222],[168,223],[136,224],[137,225],[138,226],[139,227],[140,228],[141,229],[142,230],[143,231],[144,232],[145,233],[146,233],[147,234],[148,4],[149,235],[150,236],[152,237],[151,238],[153,239],[154,240],[155,241],[156,242],[157,243],[158,244],[159,245],[160,246],[161,247],[162,248],[163,249],[164,250],[165,251],[72,4],[73,4],[74,4],[113,252],[114,4],[115,4],[166,253],[167,254],[942,4],[238,255],[216,256],[214,4],[215,4],[51,4],[62,257],[57,258],[60,259],[229,260],[221,4],[224,261],[223,262],[234,262],[222,263],[237,4],[59,264],[61,264],[53,265],[56,266],[217,265],[58,267],[52,4],[631,268],[629,269],[502,270],[633,271],[630,272],[634,273],[481,4],[628,274],[637,4],[75,4],[1746,275],[1747,275],[1741,276],[1734,275],[1735,276],[1739,276],[1740,277],[1737,276],[1738,276],[1736,276],[1748,278],[1742,275],[1745,275],[1743,275],[1744,275],[1733,4],[1601,279],[1050,280],[1631,281],[1013,282],[1063,283],[1550,284],[1290,285],[1012,4],[1062,4],[1015,286],[1065,287],[1599,288],[1339,289],[1600,290],[1068,291],[1632,292],[1634,293],[1633,294],[1011,4],[1043,4],[1602,295],[1051,296],[1383,297],[1123,298],[1030,299],[1069,300],[1350,301],[1092,302],[1359,303],[1101,304],[1033,303],[1072,304],[1034,305],[1073,306],[1035,305],[1074,306],[1358,307],[1100,308],[1036,309],[1075,310],[1037,305],[1076,306],[1340,311],[1082,312],[1038,313],[1077,314],[1039,305],[1078,306],[1040,305],[1079,306],[1360,315],[1102,316],[1032,317],[1071,318],[1041,303],[1080,304],[1042,313],[1081,314],[1341,319],[1083,320],[1342,319],[1084,320],[1343,313],[1085,314],[1344,305],[1086,306],[1345,303],[1087,304],[1346,305],[1088,306],[1347,321],[1089,322],[1348,321],[1090,322],[1349,305],[1091,306],[1370,323],[1110,324],[1378,325],[1118,326],[1357,327],[1099,328],[1386,329],[1126,330],[1351,331],[1093,332],[1353,333],[1095,334],[1354,327],[1096,328],[1364,335],[1105,336],[1372,337],[1112,338],[1377,339],[1117,340],[1374,341],[1114,342],[1379,343],[1119,344],[1367,345],[1107,346],[1368,347],[1108,348],[1375,349],[1115,350],[1376,351],[1116,352],[1382,353],[1122,354],[1373,355],[1113,356],[1352,295],[1094,296],[1384,357],[1124,358],[1031,295],[1070,296],[1371,359],[1111,360],[1369,361],[1109,362],[1356,363],[1098,364],[1355,327],[1097,328],[1385,365],[1125,366],[1361,367],[1103,368],[1380,4],[1120,4],[1381,369],[1121,370],[1604,371],[1061,372],[1014,295],[1052,296],[1421,4],[1161,4],[1438,373],[1178,374],[1387,375],[1127,376],[1412,377],[1152,378],[1419,379],[1159,380],[1388,379],[1128,380],[1389,379],[1129,380],[1390,381],[1130,382],[1418,383],[1158,384],[1391,385],[1131,386],[1406,379],[1146,380],[1392,387],[1132,388],[1393,387],[1133,388],[1394,381],[1134,382],[1395,379],[1135,380],[1396,381],[1136,382],[1397,379],[1137,380],[1420,389],[1160,390],[1398,379],[1138,380],[1399,379],[1139,380],[1400,391],[1140,392],[1401,379],[1141,380],[1402,379],[1142,380],[1403,391],[1143,392],[1404,381],[1144,382],[1405,379],[1145,380],[1407,393],[1147,394],[1408,391],[1148,392],[1409,379],[1149,380],[1410,381],[1150,382],[1411,379],[1151,380],[1433,395],[1173,396],[1429,397],[1169,398],[1417,399],[1157,400],[1441,401],[1181,402],[1413,403],[1153,404],[1414,399],[1154,400],[1430,405],[1170,406],[1422,407],[1162,408],[1431,409],[1171,410],[1428,411],[1168,412],[1426,413],[1166,414],[1432,415],[1172,416],[1425,417],[1165,418],[1437,419],[1177,420],[1427,421],[1167,422],[1439,423],[1179,424],[1434,425],[1174,426],[1423,427],[1163,428],[1416,429],[1156,430],[1415,399],[1155,400],[1440,431],[1180,432],[1424,367],[1164,368],[1435,4],[1175,4],[1436,433],[1176,434],[1017,435],[1044,436],[1507,437],[1247,438],[1442,439],[1182,440],[1477,441],[1217,442],[1486,443],[1226,444],[1443,445],[1183,446],[1444,445],[1184,446],[1445,447],[1185,448],[1446,445],[1186,446],[1485,449],[1225,450],[1447,451],[1187,452],[1448,453],[1188,454],[1449,455],[1189,456],[1450,445],[1190,446],[1487,457],[1227,458],[1488,459],[1228,460],[1451,445],[1191,446],[1453,461],[1193,462],[1454,443],[1194,444],[1456,463],[1196,464],[1457,465],[1197,466],[1458,465],[1198,466],[1459,447],[1199,448],[1460,445],[1200,446],[1461,445],[1201,446],[1462,457],[1202,458],[1463,447],[1203,448],[1464,447],[1204,448],[1465,465],[1205,466],[1466,445],[1206,446],[1467,443],[1207,444],[1468,445],[1208,446],[1469,447],[1209,448],[1470,467],[1210,468],[1455,469],[1195,470],[1471,445],[1211,446],[1472,447],[1212,448],[1473,445],[1213,446],[1474,445],[1214,446],[1475,445],[1215,446],[1476,445],[1216,446],[1495,471],[1235,472],[1502,473],[1242,474],[1484,475],[1224,476],[1512,477],[1252,478],[1478,479],[1218,480],[1480,481],[1220,482],[1481,475],[1221,476],[1490,483],[1230,484],[1497,485],[1237,486],[1501,487],[1241,488],[1499,489],[1239,490],[1503,491],[1243,492],[1491,493],[1231,494],[1492,347],[1232,348],[1493,495],[1233,496],[1500,497],[1240,498],[1506,499],[1246,500],[1498,501],[1238,502],[1479,295],[1219,296],[1508,503],[1248,504],[1452,295],[1192,296],[1496,505],[1236,506],[1494,507],[1234,508],[1483,509],[1223,510],[1482,475],[1222,476],[1509,511],[1249,512],[1510,4],[1250,4],[1511,513],[1251,514],[1489,367],[1229,368],[1504,4],[1244,4],[1505,515],[1245,516],[1026,517],[1055,518],[1019,519],[1066,520],[1365,295],[1053,296],[1362,521],[1049,522],[1366,523],[1106,524],[1363,525],[1104,526],[1561,527],[1301,528],[1538,529],[1278,530],[1544,531],[1284,532],[1513,531],[1253,532],[1514,531],[1254,532],[1515,533],[1255,534],[1543,535],[1283,536],[1516,537],[1256,538],[1531,531],[1271,532],[1517,539],[1257,540],[1518,539],[1258,540],[1519,533],[1259,534],[1520,531],[1260,532],[1521,541],[1261,542],[1522,531],[1262,532],[1545,543],[1285,544],[1523,531],[1263,532],[1524,531],[1264,532],[1525,545],[1265,546],[1526,531],[1266,532],[1527,531],[1267,532],[1528,545],[1268,546],[1529,533],[1269,534],[1530,531],[1270,532],[1532,547],[1272,548],[1533,545],[1273,546],[1534,531],[1274,532],[1535,533],[1275,534],[1536,531],[1276,532],[1537,531],[1277,532],[1558,549],[1298,550],[1549,551],[1289,552],[1564,553],[1304,554],[1539,555],[1279,556],[1540,557],[1280,558],[1553,559],[1293,560],[1546,561],[1286,562],[1557,563],[1297,564],[1548,565],[1288,566],[1556,567],[1296,568],[1555,569],[1295,570],[1560,571],[1300,572],[1547,573],[1287,574],[1562,575],[1302,576],[1559,577],[1299,578],[1554,579],[1294,580],[1542,581],[1282,582],[1541,557],[1281,558],[1563,583],[1303,584],[1552,585],[1292,586],[1551,587],[1291,588],[1022,589],[1046,590],[1024,591],[1048,592],[1023,589],[1047,590],[1025,589],[1054,590],[1028,593],[1057,594],[1027,595],[1056,596],[1029,597],[1058,598],[1020,599],[1067,600],[1597,601],[1337,602],[1565,603],[1305,604],[1590,605],[1330,606],[1594,607],[1334,608],[1593,609],[1333,610],[1566,611],[1306,612],[1595,613],[1335,614],[1586,615],[1326,616],[1587,607],[1327,608],[1588,617],[1328,618],[1589,619],[1329,620],[1574,621],[1314,622],[1582,623],[1322,624],[1592,625],[1332,626],[1598,627],[1338,628],[1567,629],[1307,630],[1568,625],[1308,626],[1571,631],[1311,632],[1577,633],[1317,634],[1581,635],[1321,636],[1579,637],[1319,638],[1583,639],[1323,640],[1572,641],[1312,642],[1575,643],[1315,644],[1580,645],[1320,646],[1596,647],[1336,648],[1578,649],[1318,650],[1576,651],[1316,652],[1573,653],[1313,654],[1591,655],[1331,656],[1569,657],[1309,658],[1585,659],[1325,660],[1570,367],[1310,368],[1584,661],[1324,662],[1018,367],[1059,368],[1016,663],[1045,664],[1021,665],[1064,666],[1603,4],[1060,4],[182,4],[577,4],[1873,4],[505,4],[245,667],[247,668],[246,669],[244,670],[243,4],[732,4],[734,671],[733,4],[1762,4],[728,672],[731,4],[1621,673],[1622,4],[1624,674],[1620,675],[1623,676],[1617,677],[1630,678],[1618,679],[1619,680],[1626,681],[1625,682],[1797,683],[1800,684],[1798,4],[1799,685],[1615,686],[1608,4],[1609,4],[1613,687],[1614,688],[1610,4],[1611,4],[1616,4],[1612,4],[1680,689],[1649,690],[1659,690],[1650,690],[1660,690],[1651,690],[1652,690],[1667,690],[1666,690],[1668,690],[1669,690],[1661,690],[1653,690],[1662,690],[1654,690],[1663,690],[1655,690],[1657,690],[1665,691],[1658,690],[1664,691],[1670,691],[1656,690],[1671,690],[1676,690],[1677,690],[1672,690],[1648,4],[1678,4],[1674,690],[1673,690],[1675,690],[1679,690],[1770,4],[991,4],[956,692],[955,693],[954,694],[990,695],[989,696],[993,697],[992,698],[995,699],[994,700],[988,701],[968,702],[969,702],[970,702],[971,702],[972,702],[973,702],[974,703],[976,702],[975,702],[987,704],[977,702],[979,702],[978,702],[981,702],[980,702],[982,702],[983,702],[984,702],[985,702],[986,702],[967,702],[966,705],[999,706],[998,703],[961,707],[959,708],[960,708],[964,709],[962,708],[963,708],[965,708],[953,4],[260,4],[735,710],[846,711],[755,712],[910,713],[819,714],[836,715],[745,716],[833,4],[742,4],[837,717],[746,718],[911,719],[820,720],[830,721],[739,722],[840,723],[749,724],[848,725],[757,726],[1008,727],[847,728],[756,729],[826,4],[685,4],[828,4],[737,4],[835,730],[744,731],[831,732],[740,733],[829,239],[738,239],[839,734],[748,735],[827,736],[736,736],[838,737],[747,738],[832,739],[741,740],[850,741],[759,742],[876,743],[785,744],[861,745],[770,746],[851,747],[760,748],[858,749],[767,750],[849,751],[758,752],[859,4],[768,4],[857,753],[766,754],[853,755],[762,756],[854,757],[763,758],[852,759],[761,760],[860,761],[769,762],[834,763],[743,764],[915,765],[824,766],[873,767],[782,768],[870,769],[779,770],[871,771],[780,772],[872,773],[781,774],[842,775],[751,776],[879,777],[788,778],[883,779],[792,780],[882,781],[791,782],[880,769],[789,770],[881,769],[790,770],[874,783],[783,784],[877,785],[786,786],[875,787],[784,788],[878,789],[787,790],[912,791],[821,792],[845,793],[754,794],[862,795],[771,796],[844,797],[753,798],[843,799],[752,800],[913,801],[822,802],[863,803],[772,804],[886,805],[795,806],[884,769],[793,770],[885,807],[794,808],[888,809],[797,810],[887,811],[796,812],[864,769],[773,770],[892,813],[801,814],[890,815],[799,816],[891,817],[800,818],[865,819],[774,820],[895,821],[804,822],[894,823],[803,824],[897,825],[806,826],[896,827],[805,828],[900,829],[809,830],[898,831],[807,832],[899,833],[808,834],[893,835],[802,836],[889,837],[798,838],[901,835],[810,836],[866,839],[775,840],[914,841],[823,842],[867,827],[776,828],[868,769],[777,770],[902,843],[811,844],[903,845],[812,846],[855,847],[764,848],[856,849],[765,850],[841,4],[750,4],[904,851],[813,852],[905,853],[814,854],[908,855],[817,856],[907,857],[816,858],[909,859],[818,860],[869,861],[778,862],[1007,863],[906,864],[815,865],[632,4],[202,866],[200,867],[201,868],[189,869],[190,867],[197,870],[188,871],[193,872],[203,4],[194,873],[199,874],[205,875],[204,876],[187,877],[195,878],[196,879],[191,880],[198,866],[192,881],[997,882],[996,883],[958,884],[957,885],[186,4],[230,4],[54,4],[55,886],[949,887],[948,4],[1,4],[48,4],[49,4],[9,4],[13,4],[12,4],[3,4],[14,4],[15,4],[16,4],[17,4],[18,4],[19,4],[20,4],[21,4],[4,4],[22,4],[23,4],[5,4],[24,4],[28,4],[25,4],[26,4],[27,4],[29,4],[30,4],[31,4],[6,4],[32,4],[33,4],[34,4],[35,4],[7,4],[39,4],[36,4],[37,4],[38,4],[40,4],[8,4],[41,4],[46,4],[47,4],[42,4],[43,4],[44,4],[45,4],[2,4],[11,4],[10,4],[91,888],[101,889],[90,888],[111,890],[82,891],[81,892],[110,893],[104,894],[109,895],[84,896],[98,897],[83,898],[107,899],[79,900],[78,893],[108,901],[80,902],[85,903],[86,4],[89,903],[76,4],[112,904],[102,905],[93,906],[94,907],[96,908],[92,909],[95,910],[105,893],[87,911],[88,912],[97,913],[77,914],[100,905],[99,903],[103,4],[106,915],[727,916],[703,917],[715,918],[701,919],[716,914],[725,920],[692,921],[693,922],[691,892],[724,893],[719,923],[723,924],[695,925],[712,926],[694,927],[722,928],[689,929],[690,923],[696,930],[697,4],[702,931],[700,930],[687,932],[726,933],[717,934],[706,935],[705,930],[707,936],[710,937],[704,938],[708,939],[720,893],[698,940],[699,941],[711,942],[688,914],[714,943],[713,930],[709,944],[718,4],[686,4],[721,945],[951,946],[947,4],[950,947],[944,948],[943,201],[946,949],[945,950],[232,951],[219,952],[220,951],[218,4],[231,953],[225,954],[233,955],[64,956],[239,957],[241,958],[235,959],[242,960],[240,961],[226,962],[236,963],[248,964],[249,965],[213,966],[181,967],[170,968],[206,4],[208,969],[207,4],[179,970],[211,971],[176,970],[178,972],[173,973],[175,974],[172,4],[174,4],[171,968],[169,4],[180,975],[212,4],[210,4],[183,976],[209,977],[177,978],[185,4],[184,979],[63,4],[495,980],[487,981],[494,982],[489,4],[490,4],[488,983],[491,984],[482,4],[483,4],[484,980],[486,985],[492,4],[493,986],[485,987],[569,988],[572,989],[570,989],[566,988],[573,990],[574,991],[571,989],[567,992],[568,993],[562,994],[514,995],[516,996],[560,4],[515,997],[561,998],[565,999],[563,4],[517,995],[518,4],[559,1000],[513,1001],[510,4],[564,1002],[511,1003],[512,4],[575,1004],[519,1005],[520,1005],[521,1005],[522,1005],[523,1005],[524,1005],[525,1005],[526,1005],[527,1005],[528,1005],[529,1005],[531,1005],[530,1005],[532,1005],[533,1005],[534,1005],[558,1006],[535,1005],[536,1005],[537,1005],[538,1005],[539,1005],[540,1005],[541,1005],[542,1005],[543,1005],[545,1005],[544,1005],[546,1005],[547,1005],[548,1005],[549,1005],[550,1005],[551,1005],[552,1005],[553,1005],[554,1005],[555,1005],[556,1005],[557,1005],[50,1007],[250,1008],[251,1008],[252,1008],[265,1009],[1859,1010],[1717,1011],[1718,1012],[1732,1013],[1780,1014],[939,1015],[1794,1016],[1795,1017],[917,1018],[1792,1019],[918,1020],[941,1021],[1699,1022],[1702,1023],[1703,1024],[937,1025],[1786,4],[681,1026],[1787,1027],[1788,1028],[680,4],[1815,1029],[825,1030],[1644,1031],[916,1032],[1730,1033],[1731,1034],[1000,1035],[1706,1036],[1782,1037],[1783,1038],[1781,1039],[1789,1040],[1785,1041],[1708,1042],[1701,1043],[1860,1044],[1700,4],[1861,1045],[1862,1045],[1002,4],[1001,1046],[1863,1047],[1864,1047],[1004,1048],[1866,1049],[1865,1050],[1791,1051],[1814,1052],[1006,1053],[635,15],[1756,1054],[1705,1055],[1779,1056],[1751,1057],[1752,1058],[1867,4],[1704,4],[1753,1059],[1749,1060],[1755,1061],[1750,1062],[1729,1063],[1878,1064],[1716,1065],[1714,1065],[1713,1065],[1720,1065],[1710,1066],[1723,1065],[1712,1065],[1725,1065],[1728,1065],[1711,1065],[1719,1065],[1722,1065],[1715,1065],[1721,1065],[1727,1065],[1726,1065],[1724,1065],[1709,1067],[1009,1030],[1005,1068],[1003,4],[1707,4],[1784,1022],[1793,4],[1790,1069],[1844,1070],[1842,1071],[1828,1072],[1827,1073],[1813,1074],[1812,1075],[1817,1076],[1816,1077],[1803,1078],[1809,1079],[1808,1080],[1840,1081],[1831,1082],[1832,1083],[1830,1084],[1836,1085],[1835,1086],[1846,1087],[1880,1088],[1879,1089],[1848,1090],[1823,1091],[1822,1092],[1851,1093],[1850,4],[1807,1094],[1881,1095],[1882,4],[1820,1096],[1819,1092],[1856,1097],[1857,1098],[1810,1099],[1692,1100],[1829,1101],[1818,1102],[1811,1103],[1845,1104],[1841,1105],[1847,1106],[1853,1107],[1833,1108],[1837,1109],[1883,1110],[1849,1111],[1824,1112],[1852,1113],[1821,1114],[1884,1115],[1804,1116],[938,1117],[1854,1118],[1629,1119],[1628,1120],[1636,1121],[1647,1122],[1605,1123],[1638,1124],[1801,1125],[1641,1126],[1689,1127],[1637,1128],[1645,1129],[1834,1130],[1646,1131],[1643,1132],[1682,1133],[1639,1130],[1635,1134],[1858,1135],[479,1136],[480,1137],[266,4],[1690,1138],[1693,1139],[1843,1119],[1695,1140],[1754,1141],[1826,1142],[1825,4],[1885,4],[1886,4],[1887,1143],[932,1144],[933,1145],[930,1146],[931,1147],[934,1147],[935,1148],[936,1149],[920,1150],[924,1151],[929,1152],[925,1153],[927,1154],[926,1155],[928,1156],[1805,1157],[1768,1158],[1771,1159],[1769,1160],[1766,4],[1767,4],[684,1161],[1838,1162],[678,1163],[1685,1164],[1839,1165],[1688,1166],[1686,1167],[1010,4],[1696,4],[1691,1168],[1697,1169],[1698,1170],[1765,1171],[1778,1172],[1764,1173],[1777,1174],[1855,1175],[1772,1022],[1776,1176],[636,15],[1773,1022],[1774,4],[1888,1173],[1763,1177],[262,1178],[253,4],[259,1179],[255,1180],[258,4],[264,1181],[1694,1182],[1606,1183],[940,4],[1642,4],[1607,1184],[254,4],[683,4],[1796,4],[1627,4],[1806,1185],[1687,4],[261,1186],[1889,1187],[1802,1188],[1681,1189],[1684,1190],[1640,4],[1775,4],[1683,1191]],"changeFileSet":[579,578,509,682,679,921,919,1760,1758,1759,1757,1761,1890,263,1876,1872,1877,1875,1868,1874,1871,1870,1869,501,504,506,507,497,498,496,503,500,499,257,256,667,666,662,663,661,650,670,668,672,671,669,674,673,676,675,665,664,660,677,654,647,652,644,640,651,658,659,646,655,642,653,638,648,643,641,645,649,656,639,657,588,591,597,600,621,599,580,581,582,585,583,584,622,587,586,623,590,589,627,624,594,596,593,595,592,625,598,626,601,620,617,619,604,611,613,615,614,606,603,607,618,608,605,616,602,609,610,612,477,466,475,468,464,467,478,472,474,473,469,470,471,465,476,354,350,326,325,372,462,329,359,319,371,348,349,345,352,347,394,391,463,421,422,423,424,425,317,378,400,386,379,374,380,387,388,389,373,375,393,376,377,381,382,384,383,397,395,396,398,399,390,353,305,320,344,331,351,339,332,334,343,342,340,341,337,336,338,323,333,356,357,330,392,267,269,460,281,283,280,284,282,295,285,301,458,311,302,309,303,288,286,291,290,287,385,312,276,293,271,306,294,279,272,316,298,292,426,296,297,278,459,313,299,314,300,268,275,273,307,308,318,310,335,304,274,315,289,461,277,433,416,451,407,409,408,358,448,417,418,446,369,457,429,419,327,445,420,450,437,270,455,410,412,411,362,360,364,427,428,361,415,414,413,452,368,430,439,431,432,434,404,406,405,363,366,435,346,355,453,447,370,367,436,365,324,438,441,442,443,444,321,322,449,401,402,403,454,456,328,440,576,923,922,228,227,508,952,729,730,116,117,118,70,119,120,121,65,68,66,67,122,123,124,125,126,127,128,129,130,131,132,71,69,133,134,135,168,136,137,138,139,140,141,142,143,144,145,146,147,148,149,150,152,151,153,154,155,156,157,158,159,160,161,162,163,164,165,72,73,74,113,114,115,166,167,942,238,216,214,215,51,62,57,60,229,221,224,223,234,222,237,59,61,53,56,217,58,52,631,629,502,633,630,634,481,628,637,75,1746,1747,1741,1734,1735,1739,1740,1737,1738,1736,1748,1742,1745,1743,1744,1733,1601,1050,1631,1013,1063,1550,1290,1012,1062,1015,1065,1599,1339,1600,1068,1632,1634,1633,1011,1043,1602,1051,1383,1123,1030,1069,1350,1092,1359,1101,1033,1072,1034,1073,1035,1074,1358,1100,1036,1075,1037,1076,1340,1082,1038,1077,1039,1078,1040,1079,1360,1102,1032,1071,1041,1080,1042,1081,1341,1083,1342,1084,1343,1085,1344,1086,1345,1087,1346,1088,1347,1089,1348,1090,1349,1091,1370,1110,1378,1118,1357,1099,1386,1126,1351,1093,1353,1095,1354,1096,1364,1105,1372,1112,1377,1117,1374,1114,1379,1119,1367,1107,1368,1108,1375,1115,1376,1116,1382,1122,1373,1113,1352,1094,1384,1124,1031,1070,1371,1111,1369,1109,1356,1098,1355,1097,1385,1125,1361,1103,1380,1120,1381,1121,1604,1061,1014,1052,1421,1161,1438,1178,1387,1127,1412,1152,1419,1159,1388,1128,1389,1129,1390,1130,1418,1158,1391,1131,1406,1146,1392,1132,1393,1133,1394,1134,1395,1135,1396,1136,1397,1137,1420,1160,1398,1138,1399,1139,1400,1140,1401,1141,1402,1142,1403,1143,1404,1144,1405,1145,1407,1147,1408,1148,1409,1149,1410,1150,1411,1151,1433,1173,1429,1169,1417,1157,1441,1181,1413,1153,1414,1154,1430,1170,1422,1162,1431,1171,1428,1168,1426,1166,1432,1172,1425,1165,1437,1177,1427,1167,1439,1179,1434,1174,1423,1163,1416,1156,1415,1155,1440,1180,1424,1164,1435,1175,1436,1176,1017,1044,1507,1247,1442,1182,1477,1217,1486,1226,1443,1183,1444,1184,1445,1185,1446,1186,1485,1225,1447,1187,1448,1188,1449,1189,1450,1190,1487,1227,1488,1228,1451,1191,1453,1193,1454,1194,1456,1196,1457,1197,1458,1198,1459,1199,1460,1200,1461,1201,1462,1202,1463,1203,1464,1204,1465,1205,1466,1206,1467,1207,1468,1208,1469,1209,1470,1210,1455,1195,1471,1211,1472,1212,1473,1213,1474,1214,1475,1215,1476,1216,1495,1235,1502,1242,1484,1224,1512,1252,1478,1218,1480,1220,1481,1221,1490,1230,1497,1237,1501,1241,1499,1239,1503,1243,1491,1231,1492,1232,1493,1233,1500,1240,1506,1246,1498,1238,1479,1219,1508,1248,1452,1192,1496,1236,1494,1234,1483,1223,1482,1222,1509,1249,1510,1250,1511,1251,1489,1229,1504,1244,1505,1245,1026,1055,1019,1066,1365,1053,1362,1049,1366,1106,1363,1104,1561,1301,1538,1278,1544,1284,1513,1253,1514,1254,1515,1255,1543,1283,1516,1256,1531,1271,1517,1257,1518,1258,1519,1259,1520,1260,1521,1261,1522,1262,1545,1285,1523,1263,1524,1264,1525,1265,1526,1266,1527,1267,1528,1268,1529,1269,1530,1270,1532,1272,1533,1273,1534,1274,1535,1275,1536,1276,1537,1277,1558,1298,1549,1289,1564,1304,1539,1279,1540,1280,1553,1293,1546,1286,1557,1297,1548,1288,1556,1296,1555,1295,1560,1300,1547,1287,1562,1302,1559,1299,1554,1294,1542,1282,1541,1281,1563,1303,1552,1292,1551,1291,1022,1046,1024,1048,1023,1047,1025,1054,1028,1057,1027,1056,1029,1058,1020,1067,1597,1337,1565,1305,1590,1330,1594,1334,1593,1333,1566,1306,1595,1335,1586,1326,1587,1327,1588,1328,1589,1329,1574,1314,1582,1322,1592,1332,1598,1338,1567,1307,1568,1308,1571,1311,1577,1317,1581,1321,1579,1319,1583,1323,1572,1312,1575,1315,1580,1320,1596,1336,1578,1318,1576,1316,1573,1313,1591,1331,1569,1309,1585,1325,1570,1310,1584,1324,1018,1059,1016,1045,1021,1064,1603,1060,182,577,1873,505,245,247,246,244,243,732,734,733,1762,728,731,1621,1622,1624,1620,1623,1617,1630,1618,1619,1626,1625,1797,1800,1798,1799,1615,1608,1609,1613,1614,1610,1611,1616,1612,1680,1649,1659,1650,1660,1651,1652,1667,1666,1668,1669,1661,1653,1662,1654,1663,1655,1657,1665,1658,1664,1670,1656,1671,1676,1677,1672,1648,1678,1674,1673,1675,1679,1770,991,956,955,954,990,989,993,992,995,994,988,968,969,970,971,972,973,974,976,975,987,977,979,978,981,980,982,983,984,985,986,967,966,999,998,961,959,960,964,962,963,965,953,260,735,846,755,910,819,836,745,833,742,837,746,911,820,830,739,840,749,848,757,1008,847,756,826,685,828,737,835,744,831,740,829,738,839,748,827,736,838,747,832,741,850,759,876,785,861,770,851,760,858,767,849,758,859,768,857,766,853,762,854,763,852,761,860,769,834,743,915,824,873,782,870,779,871,780,872,781,842,751,879,788,883,792,882,791,880,789,881,790,874,783,877,786,875,784,878,787,912,821,845,754,862,771,844,753,843,752,913,822,863,772,886,795,884,793,885,794,888,797,887,796,864,773,892,801,890,799,891,800,865,774,895,804,894,803,897,806,896,805,900,809,898,807,899,808,893,802,889,798,901,810,866,775,914,823,867,776,868,777,902,811,903,812,855,764,856,765,841,750,904,813,905,814,908,817,907,816,909,818,869,778,1007,906,815,632,202,200,201,189,190,197,188,193,203,194,199,205,204,187,195,196,191,198,192,997,996,958,957,186,230,54,55,949,948,1,48,49,9,13,12,3,14,15,16,17,18,19,20,21,4,22,23,5,24,28,25,26,27,29,30,31,6,32,33,34,35,7,39,36,37,38,40,8,41,46,47,42,43,44,45,2,11,10,91,101,90,111,82,81,110,104,109,84,98,83,107,79,78,108,80,85,86,89,76,112,102,93,94,96,92,95,105,87,88,97,77,100,99,103,106,727,703,715,701,716,725,692,693,691,724,719,723,695,712,694,722,689,690,696,697,702,700,687,726,717,706,705,707,710,704,708,720,698,699,711,688,714,713,709,718,686,721,951,947,950,944,943,946,945,232,219,220,218,231,225,233,64,239,241,235,242,240,226,236,248,249,213,181,170,206,208,207,179,211,176,178,173,175,172,174,171,169,180,212,210,183,209,177,185,184,63,495,487,494,489,490,488,491,482,483,484,486,492,493,485,569,572,570,566,573,574,571,567,568,562,514,516,560,515,561,565,563,517,518,559,513,510,564,511,512,575,519,520,521,522,523,524,525,526,527,528,529,531,530,532,533,534,558,535,536,537,538,539,540,541,542,543,545,544,546,547,548,549,550,551,552,553,554,555,556,557,50,250,251,252,265,1859,1717,1718,1732,1780,939,1794,1795,917,1792,918,941,1699,1702,1703,937,1786,681,1787,1788,680,1815,825,1644,916,1730,1731,1000,1706,1782,1783,1781,1789,1785,1708,1701,1860,1700,1861,1862,1002,1001,1863,1864,1004,1866,1865,1791,1814,1006,635,1756,1705,1779,1751,1752,1867,1704,1753,1749,1755,1750,1729,1878,1716,1714,1713,1720,1710,1723,1712,1725,1728,1711,1719,1722,1715,1721,1727,1726,1724,1709,1009,1005,1003,1707,1784,1793,1790,1844,1842,1828,1827,1813,1812,1817,1816,1803,1809,1808,1840,1831,1832,1830,1836,1835,1846,1880,1879,1848,1823,1822,1851,1850,1807,1881,1882,1820,1819,1856,1857,1810,1692,1829,1818,1811,1845,1841,1847,1853,1833,1837,1883,1849,1824,1852,1821,1884,1804,938,1854,1629,1628,1636,1647,1605,1638,1801,1641,1689,1637,1645,1834,1646,1643,1682,1639,1635,1858,479,480,266,1690,1693,1843,1695,1754,1826,1825,1885,1886,1887,932,933,930,931,934,935,936,920,924,929,925,927,926,928,1805,1768,1771,1769,1766,1767,684,1838,678,1685,1839,1688,1686,1010,1696,1691,1697,1698,1765,1778,1764,1777,1855,1772,1776,636,1773,1774,1888,1763,262,253,259,255,258,264,1694,1606,940,1642,1607,254,683,1796,1627,1806,1687,261,1889,1802,1681,1684,1640,1775,1683],"version":"5.9.3"} \ No newline at end of file diff --git a/test/worker/services/secrets/EncryptionService.test.ts b/test/worker/services/secrets/EncryptionService.test.ts new file mode 100644 index 00000000..095bc18d --- /dev/null +++ b/test/worker/services/secrets/EncryptionService.test.ts @@ -0,0 +1,257 @@ +/** + * Unit tests for EncryptionService + */ + +import { describe, it, expect, beforeAll } from 'vitest'; +import { EncryptionService } from '../../../../worker/services/secrets/EncryptionService'; +import { KeyDerivation } from '../../../../worker/services/secrets/KeyDerivation'; +import { CRYPTO_CONSTANTS } from '../../../../worker/services/secrets/constants'; + +describe('EncryptionService', () => { + let encryptionService: EncryptionService; + let keyDerivation: KeyDerivation; + let userMasterKey: Uint8Array; + + const masterKey = 'a'.repeat(64); // 32-byte hex key + const userId = 'test-user-123'; + + beforeAll(async () => { + keyDerivation = new KeyDerivation(masterKey); + userMasterKey = await keyDerivation.deriveUserMasterKey(userId); + encryptionService = new EncryptionService(userMasterKey, keyDerivation); + }); + + describe('encrypt', () => { + it('should encrypt a secret value', async () => { + const secretValue = 'my-secret-api-key-12345'; + + const encrypted = await encryptionService.encrypt(secretValue); + + expect(encrypted.encryptedValue).toBeDefined(); + expect(encrypted.nonce).toBeDefined(); + expect(encrypted.salt).toBeDefined(); + expect(encrypted.keyPreview).toBeDefined(); + + expect(encrypted.encryptedValue.length).toBeGreaterThan(0); + expect(encrypted.nonce.length).toBe(CRYPTO_CONSTANTS.NONCE_SIZE); + expect(encrypted.salt.length).toBe(CRYPTO_CONSTANTS.SALT_SIZE); + }); + + it('should produce different ciphertext for same plaintext', async () => { + const secretValue = 'same-secret'; + + const encrypted1 = await encryptionService.encrypt(secretValue); + const encrypted2 = await encryptionService.encrypt(secretValue); + + // Different random salt and nonce should produce different ciphertext + expect(encrypted1.encryptedValue).not.toEqual(encrypted2.encryptedValue); + expect(encrypted1.nonce).not.toEqual(encrypted2.nonce); + expect(encrypted1.salt).not.toEqual(encrypted2.salt); + }); + + it('should use unique salt for each encryption', async () => { + const secretValue = 'test-secret'; + + const results = await Promise.all([ + encryptionService.encrypt(secretValue), + encryptionService.encrypt(secretValue), + encryptionService.encrypt(secretValue) + ]); + + // All salts should be unique + expect(results[0].salt).not.toEqual(results[1].salt); + expect(results[1].salt).not.toEqual(results[2].salt); + expect(results[0].salt).not.toEqual(results[2].salt); + }); + + it('should not expose plaintext in encrypted data', async () => { + const secretValue = 'super-secret-key'; + + const encrypted = await encryptionService.encrypt(secretValue); + + // Convert to strings for search + const encryptedStr = Buffer.from(encrypted.encryptedValue).toString('hex'); + const nonceStr = Buffer.from(encrypted.nonce).toString('hex'); + const saltStr = Buffer.from(encrypted.salt).toString('hex'); + + expect(encryptedStr).not.toContain(secretValue); + expect(nonceStr).not.toContain(secretValue); + expect(saltStr).not.toContain(secretValue); + }); + + it('should create valid key preview', async () => { + const secretValue = 'sk-1234567890abcdef'; + + const encrypted = await encryptionService.encrypt(secretValue); + + expect(encrypted.keyPreview).toBeTruthy(); + expect(encrypted.keyPreview.length).toBeGreaterThan(0); + expect(encrypted.keyPreview).not.toBe(secretValue); + // Preview should be masked + expect(encrypted.keyPreview).toContain('*'); + }); + }); + + describe('decrypt', () => { + it('should correctly decrypt encrypted data', async () => { + const originalValue = 'my-api-key-xyz'; + + const encrypted = await encryptionService.encrypt(originalValue); + const decrypted = await encryptionService.decrypt(encrypted); + + expect(decrypted).toBe(originalValue); + }); + + it('should decrypt multiple times with same result', async () => { + const originalValue = 'test-secret-123'; + + const encrypted = await encryptionService.encrypt(originalValue); + + const decrypted1 = await encryptionService.decrypt(encrypted); + const decrypted2 = await encryptionService.decrypt(encrypted); + const decrypted3 = await encryptionService.decrypt(encrypted); + + expect(decrypted1).toBe(originalValue); + expect(decrypted2).toBe(originalValue); + expect(decrypted3).toBe(originalValue); + }); + + it('should handle empty string', async () => { + const originalValue = ''; + + const encrypted = await encryptionService.encrypt(originalValue); + const decrypted = await encryptionService.decrypt(encrypted); + + expect(decrypted).toBe(originalValue); + }); + + it('should handle unicode characters', async () => { + const originalValue = '你好世界 🔐 مفتاح'; + + const encrypted = await encryptionService.encrypt(originalValue); + const decrypted = await encryptionService.decrypt(encrypted); + + expect(decrypted).toBe(originalValue); + }); + + it('should handle long secrets', async () => { + const originalValue = 'x'.repeat(10000); // 10KB + + const encrypted = await encryptionService.encrypt(originalValue); + const decrypted = await encryptionService.decrypt(encrypted); + + expect(decrypted).toBe(originalValue); + expect(decrypted.length).toBe(10000); + }); + + it('should fail with tampered ciphertext', async () => { + const originalValue = 'secret-value'; + + const encrypted = await encryptionService.encrypt(originalValue); + + // Tamper with ciphertext + encrypted.encryptedValue[0] ^= 1; + + await expect(encryptionService.decrypt(encrypted)).rejects.toThrow(); + }); + + it('should fail with wrong nonce', async () => { + const originalValue = 'secret-value'; + + const encrypted = await encryptionService.encrypt(originalValue); + + // Replace nonce with random one + encrypted.nonce = crypto.getRandomValues(new Uint8Array(CRYPTO_CONSTANTS.NONCE_SIZE)); + + await expect(encryptionService.decrypt(encrypted)).rejects.toThrow(); + }); + + it('should fail with wrong salt', async () => { + const originalValue = 'secret-value'; + + const encrypted = await encryptionService.encrypt(originalValue); + + // Replace salt with random one + encrypted.salt = crypto.getRandomValues(new Uint8Array(CRYPTO_CONSTANTS.SALT_SIZE)); + + await expect(encryptionService.decrypt(encrypted)).rejects.toThrow(); + }); + }); + + + describe('security properties', () => { + it('should use authenticated encryption (AEAD)', async () => { + // XChaCha20-Poly1305 provides authentication + // Verify by testing that tampering fails + const encrypted = await encryptionService.encrypt('test'); + encrypted.encryptedValue[encrypted.encryptedValue.length - 1] ^= 1; + + await expect(encryptionService.decrypt(encrypted)).rejects.toThrow(); + }); + + it('should use unique nonces', async () => { + const results = await Promise.all( + Array.from({ length: 100 }, (_) => + encryptionService.encrypt('test') + ) + ); + + const nonces = results.map(r => Buffer.from(r.nonce).toString('hex')); + const uniqueNonces = new Set(nonces); + + expect(uniqueNonces.size).toBe(100); + }); + + it('should derive unique keys per secret', async () => { + // Different salts should result in different DEKs + const secret1 = await encryptionService.encrypt('value'); + const secret2 = await encryptionService.encrypt('value'); + + // Same plaintext encrypted with different keys should produce different ciphertext + expect(secret1.encryptedValue).not.toEqual(secret2.encryptedValue); + }); + }); + + describe('end-to-end workflow', () => { + it('should handle complete encrypt-decrypt cycle', async () => { + const secrets = [ + { value: 'sk-1234567890' }, + { value: 'sk-ant-abcdef' }, + { value: 'ghp_token123' } + ]; + + // Encrypt all + const encrypted = await Promise.all( + secrets.map(s => encryptionService.encrypt(s.value)) + ); + + // Decrypt all + const decrypted = await Promise.all( + encrypted.map(e => encryptionService.decrypt(e)) + ); + + // Verify all match + secrets.forEach((secret, i) => { + expect(decrypted[i]).toBe(secret.value); + }); + }); + + it('should support secret rotation', async () => { + const oldValue = 'old-api-key'; + const newValue = 'new-api-key'; + + // Encrypt old value + const oldEncrypted = await encryptionService.encrypt(oldValue); + const decryptedOld = await encryptionService.decrypt(oldEncrypted); + expect(decryptedOld).toBe(oldValue); + + // "Rotate" by encrypting new value + const newEncrypted = await encryptionService.encrypt(newValue); + const decryptedNew = await encryptionService.decrypt(newEncrypted); + expect(decryptedNew).toBe(newValue); + + // Old and new are different + expect(oldEncrypted.encryptedValue).not.toEqual(newEncrypted.encryptedValue); + }); + }); +}); diff --git a/test/worker/services/secrets/KeyDerivation.test.ts b/test/worker/services/secrets/KeyDerivation.test.ts new file mode 100644 index 00000000..34e80b91 --- /dev/null +++ b/test/worker/services/secrets/KeyDerivation.test.ts @@ -0,0 +1,176 @@ +/** + * Unit tests for KeyDerivation service + */ + +import { describe, it, expect, beforeAll } from 'vitest'; +import { KeyDerivation } from '../../../../worker/services/secrets/KeyDerivation'; +import { CRYPTO_CONSTANTS } from '../../../../worker/services/secrets/constants'; + +describe('KeyDerivation', () => { + let keyDerivation: KeyDerivation; + const masterKey = 'a'.repeat(64); // 32-byte hex key + const userId = 'test-user-123'; + + beforeAll(() => { + keyDerivation = new KeyDerivation(masterKey); + }); + + describe('deriveUserMasterKey', () => { + it('should derive a consistent User Master Key for the same userId', async () => { + const umk1 = await keyDerivation.deriveUserMasterKey(userId); + const umk2 = await keyDerivation.deriveUserMasterKey(userId); + + expect(umk1).toEqual(umk2); + expect(umk1.length).toBe(CRYPTO_CONSTANTS.KEY_SIZE); + }); + + it('should derive different keys for different users', async () => { + const umk1 = await keyDerivation.deriveUserMasterKey('user1'); + const umk2 = await keyDerivation.deriveUserMasterKey('user2'); + + expect(umk1).not.toEqual(umk2); + }); + + it('should use userId as salt for deterministic derivation', async () => { + // Same userId should always produce same key + const attempts = await Promise.all([ + keyDerivation.deriveUserMasterKey(userId), + keyDerivation.deriveUserMasterKey(userId), + keyDerivation.deriveUserMasterKey(userId) + ]); + + expect(attempts[0]).toEqual(attempts[1]); + expect(attempts[1]).toEqual(attempts[2]); + }); + + it('should produce keys of correct length', async () => { + const umk = await keyDerivation.deriveUserMasterKey(userId); + expect(umk.length).toBe(32); // 32 bytes = 256 bits + }); + }); + + describe('deriveDataEncryptionKey', () => { + it('should derive different keys with different salts', async () => { + const umk = await keyDerivation.deriveUserMasterKey(userId); + const salt1 = crypto.getRandomValues(new Uint8Array(16)); + const salt2 = crypto.getRandomValues(new Uint8Array(16)); + + const dek1 = await keyDerivation.deriveDataEncryptionKey(umk, salt1); + const dek2 = await keyDerivation.deriveDataEncryptionKey(umk, salt2); + + expect(dek1).not.toEqual(dek2); + }); + + it('should derive the same key with the same salt', async () => { + const umk = await keyDerivation.deriveUserMasterKey(userId); + const salt = crypto.getRandomValues(new Uint8Array(16)); + + const dek1 = await keyDerivation.deriveDataEncryptionKey(umk, salt); + const dek2 = await keyDerivation.deriveDataEncryptionKey(umk, salt); + + expect(dek1).toEqual(dek2); + }); + + it('should produce keys of correct length', async () => { + const umk = await keyDerivation.deriveUserMasterKey(userId); + const salt = crypto.getRandomValues(new Uint8Array(16)); + + const dek = await keyDerivation.deriveDataEncryptionKey(umk, salt); + expect(dek.length).toBe(32); // 32 bytes = 256 bits + }); + + it('should use correct iteration count', async () => { + const userId = 'test-user'; + // DEK derivation uses 10k iterations + // Multiple derivations to ensure timing is measurable + const umk = await keyDerivation.deriveUserMasterKey(userId); + const salt = crypto.getRandomValues(new Uint8Array(16)); + + const start = performance.now(); + // Run multiple times to get measurable duration + for (let i = 0; i < 10; i++) { + await keyDerivation.deriveDataEncryptionKey(umk, salt); + } + const duration = performance.now() - start; + + // 10 iterations with 10k rounds each should take some time + expect(duration).toBeGreaterThanOrEqual(0); + }); + }); + + describe('getMasterKeyFingerprint', () => { + it('should produce consistent fingerprint for same master key', async () => { + const fp1 = await keyDerivation.getMasterKeyFingerprint(); + const fp2 = await keyDerivation.getMasterKeyFingerprint(); + + expect(fp1).toBe(fp2); + }); + + it('should produce different fingerprints for different master keys', async () => { + const kd1 = new KeyDerivation('a'.repeat(64)); + const kd2 = new KeyDerivation('b'.repeat(64)); + + const fp1 = await kd1.getMasterKeyFingerprint(); + const fp2 = await kd2.getMasterKeyFingerprint(); + + expect(fp1).not.toBe(fp2); + }); + + it('should produce hex string of correct length', async () => { + const fp = await keyDerivation.getMasterKeyFingerprint(); + + // SHA-256 hash = 64 hex characters (32 bytes) + expect(fp).toMatch(/^[0-9a-f]{64}$/); + expect(fp.length).toBe(64); + }); + + it('should be suitable for key rotation detection', async () => { + const fp = await keyDerivation.getMasterKeyFingerprint(); + + // Store fingerprint + const storedFingerprint = fp; + + // Later, verify same key is in use + const currentFingerprint = await keyDerivation.getMasterKeyFingerprint(); + expect(currentFingerprint).toBe(storedFingerprint); + }); + }); + + describe('integration with key hierarchy', () => { + it('should handle invalid hex master key', () => { + expect(() => new KeyDerivation('not-hex')).toThrow(); + }); + + it('should handle master key of wrong length', () => { + expect(() => new KeyDerivation('abc123')).toThrow(); + }); + + it('should handle empty userId', async () => { + await expect(keyDerivation.deriveUserMasterKey('')).rejects.toThrow(); + }); + }); + + describe('security properties', () => { + it('should not expose master key in any derived output', async () => { + const umk = await keyDerivation.deriveUserMasterKey(userId); + const salt = crypto.getRandomValues(new Uint8Array(16)); + const dek = await keyDerivation.deriveDataEncryptionKey(umk, salt); + + // None of the outputs should contain the master key + const masterKeyBytes = new Uint8Array( + masterKey.match(/.{2}/g)!.map(byte => parseInt(byte, 16)) + ); + + expect(umk).not.toEqual(masterKeyBytes); + expect(dek).not.toEqual(masterKeyBytes); + }); + + it('should use sufficient iterations for security', () => { + // UMK uses 100k iterations + expect(CRYPTO_CONSTANTS.UMK_ITERATIONS).toBeGreaterThanOrEqual(100000); + + // DEK uses 10k iterations + expect(CRYPTO_CONSTANTS.DEK_ITERATIONS).toBeGreaterThanOrEqual(10000); + }); + }); +}); diff --git a/test/worker/services/secrets/UserSecretsStore.test.ts b/test/worker/services/secrets/UserSecretsStore.test.ts new file mode 100644 index 00000000..8eef931b --- /dev/null +++ b/test/worker/services/secrets/UserSecretsStore.test.ts @@ -0,0 +1,1240 @@ +/** + * Comprehensive Tests for UserSecretsStore Durable Object + * + * Tests complete lifecycle with unique DO instances per test to avoid + * SQLite WAL cleanup issues (each test uses fresh DO with unique ID) + * + * Coverage: + * - Initialization & readiness + * - CRUD operations (Create, Read, Update, Delete) + * - Encryption & decryption + * - Validation & error handling + * - Secret expiration support + * + * @vitest-environment @cloudflare/vitest-pool-workers + */ + +import { describe, it, expect, afterEach } from 'vitest'; +import { env } from 'cloudflare:test'; +import type { + StoreSecretRequest, + SecretMetadata, + SecretWithValue, + KeyRotationInfo +} from '../../../../worker/services/secrets/types'; +import type { DurableObjectNamespace } from '@cloudflare/workers-types'; + +// Type for UserSecretsStore stub +interface UserSecretsStoreStub { + isReady(): Promise; + storeSecret(request: StoreSecretRequest): Promise; + getSecretValue(secretId: string): Promise; + listSecrets(): Promise; + updateSecret(secretId: string, updates: Partial): Promise; + deleteSecret(secretId: string): Promise; + getKeyRotationInfo(): Promise; +} + +describe('UserSecretsStore - Comprehensive Tests', () => { + let currentStore: UserSecretsStoreStub | null = null; + + // Helper to get unique DO instance for each test (prevents SQLite WAL conflicts) + function getUniqueStore(testName: string): UserSecretsStoreStub { + const id = (env.UserSecretsStore as DurableObjectNamespace).idFromName( + `test-${testName}-${Date.now()}-${Math.random()}` + ); + const store = (env.UserSecretsStore as DurableObjectNamespace).get(id) as unknown as UserSecretsStoreStub; + currentStore = store; + return store; + } + + // Cleanup after each test to ensure SQLite WAL files are checkpointed + afterEach(async () => { + if (currentStore) { + try { + // Force SQLite to checkpoint WAL files by doing a dummy query + // This ensures .sqlite-shm files are cleaned up properly + await currentStore.listSecrets(); + } catch (error) { + // Ignore errors - test may have left DO in error state + } + currentStore = null; + } + }); + + describe('Initialization', () => { + it('should initialize and be ready', async () => { + const store = getUniqueStore('init'); + const ready = await store.isReady(); + expect(ready).toBe(true); + }); + + it('should start with empty secrets list', async () => { + const store = getUniqueStore('empty-list'); + const secrets = await store.listSecrets(); + expect(Array.isArray(secrets)).toBe(true); + expect(secrets.length).toBe(0); + }); + }); + + describe('Secret Storage & Validation', () => { + it('should store secret with full metadata', async () => { + const store = getUniqueStore('store-full'); + const secret = await store.storeSecret({ + name: 'GitHub Token', + secretType: 'token', + provider: 'github', + value: 'ghp_1234567890abcdefghijklmnop', + metadata: { environment: 'production', scope: 'repo' } + }); + expect(secret).not.toBeNull(); + if (!secret) return; + + expect(secret.id).toBeTruthy(); + expect(secret.name).toBe('GitHub Token'); + expect(secret.secretType).toBe('token'); + expect(secret.provider).toBe('github'); + expect(secret.keyPreview).toBeTruthy(); + expect(secret.keyPreview).not.toBe('ghp_1234567890abcdefghijklmnop'); + expect(secret.keyPreview).toContain('*'); + expect(secret.isActive).toBe(true); + expect(secret.accessCount).toBe(0); + expect(secret.metadata).toEqual({ environment: 'production', scope: 'repo' }); + }); + + it('should return null for empty secret name', async () => { + const store = getUniqueStore('validate-empty-name'); + + const result = await store.storeSecret({ + name: '', + secretType: 'api_key', + value: 'test-value' + }); + + expect(result).toBeNull(); + }); + + it('should return null for name exceeding max length', async () => { + const store = getUniqueStore('validate-name-length'); + + const longName = 'a'.repeat(201); // Max is 200 + const result = await store.storeSecret({ + name: longName, + secretType: 'api_key', + value: 'test-value' + }); + + expect(result).toBeNull(); + }); + + it('should return null for empty secret value', async () => { + const store = getUniqueStore('validate-empty-value'); + + const result = await store.storeSecret({ + name: 'Test Secret', + secretType: 'api_key', + value: '' + }); + + expect(result).toBeNull(); + }); + + it('should return null for value exceeding max size', async () => { + const store = getUniqueStore('validate-value-size'); + + const largeValue = 'x'.repeat(51 * 1024); // Max is 50KB + const result = await store.storeSecret({ + name: 'Test Secret', + secretType: 'api_key', + value: largeValue + }); + + expect(result).toBeNull(); + }); + + it('should return null for metadata exceeding max size', async () => { + const store = getUniqueStore('validate-metadata-size'); + + const largeMetadata = { data: 'x'.repeat(11 * 1024) }; // Max is 10KB + const result = await store.storeSecret({ + name: 'Test Secret', + secretType: 'api_key', + value: 'test-value', + metadata: largeMetadata + }); + + expect(result).toBeNull(); + }); + + it('should accept valid secret at boundary limits', async () => { + const store = getUniqueStore('validate-boundary'); + + const result = await store.storeSecret({ + name: 'a'.repeat(200), // Exactly at limit + secretType: 'api_key', + value: 'x'.repeat(50 * 1024), // Exactly at limit + metadata: { data: 'x'.repeat(10 * 1024 - 50) } // Just under limit + }); + + expect(result).not.toBeNull(); + }); + }); + + describe('Secret Retrieval & Decryption', () => { + it('should retrieve and decrypt secrets correctly', async () => { + const store = getUniqueStore('retrieve'); + const originalValue = 'sk-openai-1234567890abcdefghijklmnop'; + + const stored = await store.storeSecret({ + name: 'OpenAI API Key', + secretType: 'api_key', + provider: 'openai', + value: originalValue + }); + expect(stored).not.toBeNull(); + if (!stored) return; + + const result = await store.getSecretValue(stored.id); + expect(result).not.toBeNull(); + if (!result) return; + expect(result.value).toBe(originalValue); + expect(result.metadata.id).toBe(stored.id); + expect(result.metadata.name).toBe('OpenAI API Key'); + expect(result.metadata.accessCount).toBe(1); + expect(result.metadata.lastAccessed).toBeTruthy(); + }); + + it('should increment access count on each retrieval', async () => { + const store = getUniqueStore('access-count'); + + const stored = await store.storeSecret({ + name: 'Access Count Test', + secretType: 'api_key', + value: 'test-value-123' + }); + expect(stored).not.toBeNull(); + if (!stored) return; + + await store.getSecretValue(stored.id); + await store.getSecretValue(stored.id); + const result = await store.getSecretValue(stored.id); + expect(result).not.toBeNull(); + if (!result) return; + expect(result.metadata.accessCount).toBe(3); + }); + + // Error tests removed - error handling simplified for clean architecture + }); + + describe('List Secrets', () => { + it('should list all active secrets with metadata only', async () => { + const store = getUniqueStore('list'); + + const secret1 = await store.storeSecret({ + name: 'Secret 1', + secretType: 'api_key', + value: 'value-1' + }); + expect(secret1).not.toBeNull(); + if (!secret1) return; + + const secret2 = await store.storeSecret({ + name: 'Secret 2', + secretType: 'token', + value: 'value-2' + }); + expect(secret2).not.toBeNull(); + if (!secret2) return; + + const secrets = await store.listSecrets(); + expect(secrets.length).toBe(2); + expect(secrets.every((s) => s.isActive)).toBe(true); + + // Verify no values are exposed in list + secrets.forEach((secret) => { + expect(secret).not.toHaveProperty('value'); + expect(secret.keyPreview).toBeTruthy(); + }); + }); + }); + + describe('Update Secrets', () => { + it('should update secret name', async () => { + const store = getUniqueStore('update-name'); + + const stored = await store.storeSecret({ + name: 'Original Name', + secretType: 'api_key', + value: 'test-value' + }); + expect(stored).not.toBeNull(); + if (!stored) return; + + const updated = await store.updateSecret(stored.id, { + name: 'Updated Name' + }); + expect(updated).not.toBeNull(); + if (!updated) return; + + expect(updated.name).toBe('Updated Name'); + expect(updated.id).toBe(stored.id); + }); + + it('should update secret value and re-encrypt', async () => { + const store = getUniqueStore('update-value'); + + const stored = await store.storeSecret({ + name: 'Value Update Test', + secretType: 'api_key', + value: 'old-value-12345' + }); + expect(stored).not.toBeNull(); + if (!stored) return; + + const oldKeyPreview = stored.keyPreview; + + const updated1 = await store.updateSecret(stored.id, { + value: 'new-value-67890' + }); + expect(updated1).not.toBeNull(); + if (!updated1) return; + + const updated2 = await store.updateSecret(stored.id, { + value: 'new-value-67890' + }); + expect(updated2).not.toBeNull(); + if (!updated2) return; + + const result = await store.getSecretValue(stored.id); + expect(result).not.toBeNull(); + if (!result) return; + expect(result.value).toBe('new-value-67890'); + expect(result.metadata.keyPreview).not.toBe(oldKeyPreview); + }); + + it('should update metadata', async () => { + const store = getUniqueStore('update-metadata'); + + const stored = await store.storeSecret({ + name: 'Metadata Test', + secretType: 'config', + value: 'config-value-123', + metadata: { env: 'dev', region: 'us-west' } + }); + expect(stored).not.toBeNull(); + if (!stored) return; + + const updated = await store.updateSecret(stored.id, { + metadata: { env: 'prod', region: 'us-east', version: '2' } + }); + expect(updated).not.toBeNull(); + if (!updated) return; + + expect(updated.metadata).toEqual({ env: 'prod', region: 'us-east', version: '2' }); + }); + + it('should return null when updating with invalid name', async () => { + const store = getUniqueStore('update-invalid-name'); + + const stored = await store.storeSecret({ + name: 'Original Name', + secretType: 'api_key', + value: 'test-value' + }); + expect(stored).not.toBeNull(); + if (!stored) return; + + const result = await store.updateSecret(stored.id, { + name: '' // Invalid - empty name + }); + + expect(result).toBeNull(); + }); + + it('should return null when updating with invalid value', async () => { + const store = getUniqueStore('update-invalid-value'); + + const stored = await store.storeSecret({ + name: 'Test Secret', + secretType: 'api_key', + value: 'test-value' + }); + expect(stored).not.toBeNull(); + if (!stored) return; + + const result = await store.updateSecret(stored.id, { + value: '' // Invalid - empty value + }); + + expect(result).toBeNull(); + }); + + it('should return null when updating with oversized metadata', async () => { + const store = getUniqueStore('update-invalid-metadata'); + + const stored = await store.storeSecret({ + name: 'Test Secret', + secretType: 'api_key', + value: 'test-value' + }); + expect(stored).not.toBeNull(); + if (!stored) return; + + const largeMetadata = { data: 'x'.repeat(11 * 1024) }; // Exceeds 10KB + const result = await store.updateSecret(stored.id, { + metadata: largeMetadata + }); + + expect(result).toBeNull(); + }); + + it('should return null when updating non-existent secret', async () => { + const store = getUniqueStore('update-not-found'); + + const result = await store.updateSecret('non-existent-id', { + name: 'New Name' + }); + expect(result).toBeNull(); + }); + }); + + describe('Delete Secrets', () => { + it('should remove deleted secrets from list', async () => { + const store = getUniqueStore('delete-from-list'); + + const stored = await store.storeSecret({ + name: 'List Delete Test', + secretType: 'api_key', + value: 'test-value' + }); + expect(stored).not.toBeNull(); + if (!stored) return; + + const beforeDelete = await store.listSecrets(); + const beforeCount = beforeDelete.filter((s) => s.id === stored.id).length; + expect(beforeCount).toBe(1); + + await store.deleteSecret(stored.id); + + const afterDelete = await store.listSecrets(); + const afterCount = afterDelete.filter((s) => s.id === stored.id).length; + expect(afterCount).toBe(0); + }); + + it('should return false when deleting non-existent secret', async () => { + const store = getUniqueStore('delete-not-found'); + + const result = await store.deleteSecret('non-existent-id'); + expect(result).toBe(false); + }); + + it('should return false when deleting already deleted secret', async () => { + const store = getUniqueStore('delete-twice'); + + const stored = await store.storeSecret({ + name: 'Delete Twice Test', + secretType: 'api_key', + value: 'test-value' + }); + expect(stored).not.toBeNull(); + if (!stored) return; + + const firstDelete = await store.deleteSecret(stored.id); + expect(firstDelete).toBe(true); + + // Try to delete again + const secondDelete = await store.deleteSecret(stored.id); + expect(secondDelete).toBe(false); + }); + }); + + describe('Expiration & Security', () => { + it('should return null when accessing expired secret', async () => { + const store = getUniqueStore('expired-access'); + + const pastTime = Date.now() - 1000; // 1 second ago + const stored = await store.storeSecret({ + name: 'Expired Secret', + secretType: 'api_key', + value: 'test-value', + expiresAt: pastTime + }); + expect(stored).not.toBeNull(); + if (!stored) return; + + const result = await store.getSecretValue(stored.id); + expect(result).toBeNull(); + }); + + it('should not throw error when accessing secret before expiration', async () => { + const store = getUniqueStore('not-expired-access'); + + const futureTime = Date.now() + 3600000; // 1 hour from now + const stored = await store.storeSecret({ + name: 'Not Expired Secret', + secretType: 'api_key', + value: 'test-value-12345', + expiresAt: futureTime + }); + expect(stored).not.toBeNull(); + if (!stored) return; + + const result = await store.getSecretValue(stored.id); + expect(result).not.toBeNull(); + if (!result) return; + expect(result.value).toBe('test-value-12345'); + }); + + it('should return null when accessing deleted secret', async () => { + const store = getUniqueStore('access-deleted'); + + const stored = await store.storeSecret({ + name: 'To Be Deleted', + secretType: 'api_key', + value: 'test-value' + }); + expect(stored).not.toBeNull(); + if (!stored) return; + + await store.deleteSecret(stored.id); + + const result = await store.getSecretValue(stored.id); + expect(result).toBeNull(); + }); + }); + + describe('Encryption Verification', () => { + it('should use different encryption keys for different secrets', async () => { + const store = getUniqueStore('encryption-diff'); + + const secret1 = await store.storeSecret({ + name: 'Encryption Test 1', + secretType: 'api_key', + value: 'first-secret-value-12345' + }); + expect(secret1).not.toBeNull(); + if (!secret1) return; + + const secret2 = await store.storeSecret({ + name: 'Encryption Test 2', + secretType: 'api_key', + value: 'second-secret-value-67890' + }); + expect(secret2).not.toBeNull(); + if (!secret2) return; + + // Different values should have different previews + expect(secret1.keyPreview).not.toBe(secret2.keyPreview); + }); + + it('should decrypt consistently across multiple calls', async () => { + const store = getUniqueStore('encryption-consistent'); + const originalValue = 'consistent-decryption-test-12345'; + + const stored = await store.storeSecret({ + name: 'Consistency Test', + secretType: 'api_key', + value: originalValue + }); + expect(stored).not.toBeNull(); + if (!stored) return; + + const result1 = await store.getSecretValue(stored.id); + expect(result1).not.toBeNull(); + if (!result1) return; + const result2 = await store.getSecretValue(stored.id); + expect(result2).not.toBeNull(); + if (!result2) return; + const result3 = await store.getSecretValue(stored.id); + expect(result3).not.toBeNull(); + if (!result3) return; + + expect(result1.value).toBe(originalValue); + expect(result2.value).toBe(originalValue); + expect(result3.value).toBe(originalValue); + }); + }); + + describe('Expiration Support', () => { + it('should store secrets with expiration timestamp', async () => { + const store = getUniqueStore('expiration'); + const expiresAt = Date.now() + 3600000; // 1 hour from now + + const stored = await store.storeSecret({ + name: 'Expiring Secret', + secretType: 'api_key', + value: 'test-value', + expiresAt + }); + expect(stored).not.toBeNull(); + if (!stored) return; + + expect(stored.expiresAt).toBe(expiresAt); + }); + }); + + describe('Complete E2E Workflow', () => { + it('should handle complete secret lifecycle', async () => { + const store = getUniqueStore('e2e-workflow'); + + // 1. Create a secret + const created = await store.storeSecret({ + name: 'Lifecycle Test', + secretType: 'api_key', + value: 'sk_test_1234567890' + }); + expect(created).not.toBeNull(); + if (!created) return; + + expect(created.id).toBeTruthy(); + expect(created.name).toBe('Lifecycle Test'); + + // 2. Retrieve and verify decryption + const retrieved1 = await store.getSecretValue(created.id); + expect(retrieved1).not.toBeNull(); + if (!retrieved1) return; + expect(retrieved1.value).toBe('sk_test_1234567890'); + expect(retrieved1.metadata.accessCount).toBe(1); + + // 3. Update the secret + const updated = await store.updateSecret(created.id, { + name: 'Updated Lifecycle Test', + value: 'sk_live_9876543210' + }); + expect(updated).not.toBeNull(); + if (!updated) return; + + expect(updated.name).toBe('Updated Lifecycle Test'); + expect(updated.id).toBe(created.id); + + // 4. Verify updated value + const retrieved2 = await store.getSecretValue(created.id); + expect(retrieved2).not.toBeNull(); + if (!retrieved2) return; + expect(retrieved2.value).toBe('sk_live_9876543210'); + expect(retrieved2.metadata.accessCount).toBeGreaterThan(1); + + // 5. List should include our secret + const list = await store.listSecrets(); + const ourSecret = list.find((s) => s.id === created.id); + expect(ourSecret).toBeTruthy(); + expect(ourSecret?.name).toBe('Updated Lifecycle Test'); + + // 6. Delete the secret + await store.deleteSecret(created.id); + + // 7. Verify deletion (via list, not error-throwing access) + const listAfterDelete = await store.listSecrets(); + const deletedSecret = listAfterDelete.find((s) => s.id === created.id); + expect(deletedSecret).toBeUndefined(); + }); + }); + + describe('Key Rotation', () => { + it('should initialize key rotation metadata on first use', async () => { + const store = getUniqueStore('rotation-init'); + + // Store a secret to trigger initialization + const stored = await store.storeSecret({ + name: 'Test Secret', + secretType: 'api_key', + value: 'test-value' + }); + expect(stored).not.toBeNull(); + + // Check rotation info + const info = await store.getKeyRotationInfo(); + expect(info.currentKeyFingerprint).toBeTruthy(); + expect(info.rotationCount).toBe(0); + expect(info.totalSecrets).toBe(1); + expect(info.secretsRotated).toBe(1); + }); + + it('should detect when key has not been rotated', async () => { + const store = getUniqueStore('no-rotation'); + + // Store multiple secrets + const secret1 = await store.storeSecret({ + name: 'Secret 1', + secretType: 'api_key', + value: 'value-1' + }); + expect(secret1).not.toBeNull(); + + const secret2 = await store.storeSecret({ + name: 'Secret 2', + secretType: 'token', + value: 'value-2' + }); + expect(secret2).not.toBeNull(); + + const info = await store.getKeyRotationInfo(); + expect(info.rotationCount).toBe(0); + expect(info.totalSecrets).toBe(2); + expect(info.secretsRotated).toBe(2); + }); + + it('should track last rotation timestamp', async () => { + const store = getUniqueStore('rotation-timestamp'); + + const beforeTime = Date.now(); + + const stored = await store.storeSecret({ + name: 'Test Secret', + secretType: 'api_key', + value: 'test-value' + }); + expect(stored).not.toBeNull(); + + const afterTime = Date.now(); + + const info = await store.getKeyRotationInfo(); + expect(info.lastRotationAt).toBeGreaterThanOrEqual(beforeTime); + expect(info.lastRotationAt).toBeLessThanOrEqual(afterTime); + }); + + it('should store key fingerprint with each secret', async () => { + const store = getUniqueStore('fingerprint-storage'); + + const stored = await store.storeSecret({ + name: 'Fingerprint Test', + secretType: 'api_key', + value: 'test-value-12345' + }); + expect(stored).not.toBeNull(); + if (!stored) return; + + // Get rotation info to verify fingerprint was stored + const info = await store.getKeyRotationInfo(); + expect(info.currentKeyFingerprint).toBeTruthy(); + expect(info.currentKeyFingerprint).toMatch(/^[0-9a-f]{64}$/); + }); + + it('should handle multiple secrets with same key', async () => { + const store = getUniqueStore('multiple-secrets'); + + // Create 5 secrets + for (let i = 0; i < 5; i++) { + const stored = await store.storeSecret({ + name: `Secret ${i}`, + secretType: 'api_key', + value: `value-${i}` + }); + expect(stored).not.toBeNull(); + } + + const info = await store.getKeyRotationInfo(); + expect(info.totalSecrets).toBe(5); + expect(info.secretsRotated).toBe(5); + expect(info.rotationCount).toBe(0); + }); + + it('should not count inactive secrets in rotation stats', async () => { + const store = getUniqueStore('inactive-stats'); + + // Create 3 secrets + const secret1 = await store.storeSecret({ + name: 'Secret 1', + secretType: 'api_key', + value: 'value-1' + }); + expect(secret1).not.toBeNull(); + if (!secret1) return; + + const secret2 = await store.storeSecret({ + name: 'Secret 2', + secretType: 'api_key', + value: 'value-2' + }); + expect(secret2).not.toBeNull(); + if (!secret2) return; + + const secret3 = await store.storeSecret({ + name: 'Secret 3', + secretType: 'api_key', + value: 'value-3' + }); + expect(secret3).not.toBeNull(); + if (!secret3) return; + + // Delete one + await store.deleteSecret(secret2.id); + + const info = await store.getKeyRotationInfo(); + expect(info.totalSecrets).toBe(2); // Only active secrets + expect(info.secretsRotated).toBe(2); + }); + + it('should provide complete rotation statistics', async () => { + const store = getUniqueStore('rotation-stats'); + + // Store secrets + const secret1 = await store.storeSecret({ + name: 'Stat Test 1', + secretType: 'api_key', + value: 'value-1' + }); + expect(secret1).not.toBeNull(); + + const secret2 = await store.storeSecret({ + name: 'Stat Test 2', + secretType: 'password', + value: 'value-2' + }); + expect(secret2).not.toBeNull(); + + const info = await store.getKeyRotationInfo(); + + // Verify all fields + expect(info).toHaveProperty('currentKeyFingerprint'); + expect(info).toHaveProperty('lastRotationAt'); + expect(info).toHaveProperty('rotationCount'); + expect(info).toHaveProperty('totalSecrets'); + expect(info).toHaveProperty('secretsRotated'); + + expect(typeof info.currentKeyFingerprint).toBe('string'); + expect(typeof info.lastRotationAt).toBe('number'); + expect(typeof info.rotationCount).toBe('number'); + expect(typeof info.totalSecrets).toBe('number'); + expect(typeof info.secretsRotated).toBe('number'); + }); + + it('should maintain metadata across operations', async () => { + const store = getUniqueStore('metadata-persistence'); + + // Initial secret + const secret1 = await store.storeSecret({ + name: 'First Secret', + secretType: 'api_key', + value: 'value-1' + }); + expect(secret1).not.toBeNull(); + if (!secret1) return; + + const info1 = await store.getKeyRotationInfo(); + const initialFingerprint = info1.currentKeyFingerprint; + + // Update secret + await store.updateSecret(secret1.id, { name: 'Updated Secret' }); + + // Add another secret + const secret2 = await store.storeSecret({ + name: 'Second Secret', + secretType: 'token', + value: 'value-2' + }); + expect(secret2).not.toBeNull(); + + const info2 = await store.getKeyRotationInfo(); + + // Fingerprint should remain the same + expect(info2.currentKeyFingerprint).toBe(initialFingerprint); + expect(info2.rotationCount).toBe(0); + expect(info2.totalSecrets).toBe(2); + }); + }); + + describe('Large Scale & Performance', () => { + it('should handle storing many secrets efficiently', async () => { + const store = getUniqueStore('many-secrets'); + const secretCount = 20; + + // Store multiple secrets + for (let i = 0; i < secretCount; i++) { + const stored = await store.storeSecret({ + name: `Secret ${i}`, + secretType: 'api_key', + value: `test-value-${i}-${Math.random()}` + }); + expect(stored).not.toBeNull(); + } + + const list = await store.listSecrets(); + expect(list.length).toBe(secretCount); + }); + + it('should handle large secret values', async () => { + const store = getUniqueStore('large-value'); + const largeValue = 'a'.repeat(5000); // 5KB value + + const stored = await store.storeSecret({ + name: 'Large Secret', + secretType: 'config', + value: largeValue + }); + expect(stored).not.toBeNull(); + if (!stored) return; + + const retrieved = await store.getSecretValue(stored.id); + expect(retrieved).not.toBeNull(); + if (!retrieved) return; + expect(retrieved.value).toBe(largeValue); + }); + + it('should handle special characters in values', async () => { + const store = getUniqueStore('special-chars'); + const specialValue = '!@#$%^&*()_+-=[]{}|;:\'",.<>?/~`\n\t\r\0'; + + const stored = await store.storeSecret({ + name: 'Special Characters', + secretType: 'password', + value: specialValue + }); + expect(stored).not.toBeNull(); + if (!stored) return; + + const retrieved = await store.getSecretValue(stored.id); + expect(retrieved).not.toBeNull(); + if (!retrieved) return; + expect(retrieved.value).toBe(specialValue); + }); + + it('should handle unicode and emojis in values', async () => { + const store = getUniqueStore('unicode'); + const unicodeValue = '你好世界 🚀 🔐 🎉 Привет مرحبا'; + + const stored = await store.storeSecret({ + name: 'Unicode Test', + secretType: 'custom', + value: unicodeValue + }); + expect(stored).not.toBeNull(); + if (!stored) return; + + const retrieved = await store.getSecretValue(stored.id); + expect(retrieved).not.toBeNull(); + if (!retrieved) return; + expect(retrieved.value).toBe(unicodeValue); + }); + }); + + describe('Concurrent Operations', () => { + it('should handle multiple stores in parallel', async () => { + const store = getUniqueStore('concurrent-store'); + + // Store multiple secrets concurrently + const promises = []; + for (let i = 0; i < 10; i++) { + promises.push(store.storeSecret({ + name: `Concurrent Secret ${i}`, + secretType: 'api_key', + value: `value-${i}` + })); + } + + const results = await Promise.all(promises); + expect(results.every(r => r !== null)).toBe(true); + + const list = await store.listSecrets(); + expect(list.length).toBe(10); + }); + + it('should handle concurrent reads', async () => { + const store = getUniqueStore('concurrent-read'); + + const stored = await store.storeSecret({ + name: 'Concurrent Test', + secretType: 'api_key', + value: 'test-value-concurrent' + }); + expect(stored).not.toBeNull(); + if (!stored) return; + + // Read same secret 10 times concurrently + const promises = []; + for (let i = 0; i < 10; i++) { + promises.push(store.getSecretValue(stored.id)); + } + + const results = await Promise.all(promises); + expect(results.every(r => r !== null)).toBe(true); + expect(results.every(r => r!.value === 'test-value-concurrent')).toBe(true); + }); + + it('should handle mixed operations concurrently', async () => { + const store = getUniqueStore('mixed-concurrent'); + + // Create initial secret + const stored = await store.storeSecret({ + name: 'Mixed Test', + secretType: 'api_key', + value: 'initial-value' + }); + expect(stored).not.toBeNull(); + if (!stored) return; + + // Mix of reads, updates, and new stores + const promises = [ + store.getSecretValue(stored.id), + store.updateSecret(stored.id, { name: 'Updated Name' }), + store.storeSecret({ name: 'New Secret 1', secretType: 'token', value: 'value-1' }), + store.listSecrets(), + store.storeSecret({ name: 'New Secret 2', secretType: 'password', value: 'value-2' }), + ]; + + const results = await Promise.all(promises); + expect(results[0]).not.toBeNull(); // getSecretValue + expect(results[1]).not.toBeNull(); // updateSecret + expect(results[2]).not.toBeNull(); // storeSecret 1 + expect(Array.isArray(results[3])).toBe(true); // listSecrets + expect(results[4]).not.toBeNull(); // storeSecret 2 + }); + }); + + describe('Boundary Conditions', () => { + it('should handle empty metadata', async () => { + const store = getUniqueStore('empty-metadata'); + + const stored = await store.storeSecret({ + name: 'Empty Metadata', + secretType: 'api_key', + value: 'test-value', + metadata: {} + }); + expect(stored).not.toBeNull(); + if (!stored) return; + expect(stored.metadata).toEqual({}); + }); + + it('should handle minimum length values', async () => { + const store = getUniqueStore('min-length'); + + const stored = await store.storeSecret({ + name: 'Min', + secretType: 'custom', + value: 'x' + }); + expect(stored).not.toBeNull(); + if (!stored) return; + + const retrieved = await store.getSecretValue(stored.id); + expect(retrieved).not.toBeNull(); + if (!retrieved) return; + expect(retrieved.value).toBe('x'); + }); + + it('should handle secrets with far future expiration', async () => { + const store = getUniqueStore('far-future'); + const farFuture = Date.now() + (365 * 24 * 60 * 60 * 1000); // 1 year + + const stored = await store.storeSecret({ + name: 'Far Future', + secretType: 'api_key', + value: 'test-value', + expiresAt: farFuture + }); + expect(stored).not.toBeNull(); + if (!stored) return; + expect(stored.expiresAt).toBe(farFuture); + }); + + it('should handle rapid create-update-delete cycles', async () => { + const store = getUniqueStore('rapid-cycle'); + + // Create + const stored = await store.storeSecret({ + name: 'Rapid Test', + secretType: 'api_key', + value: 'initial' + }); + expect(stored).not.toBeNull(); + if (!stored) return; + + // Update immediately + const updated = await store.updateSecret(stored.id, { value: 'updated' }); + expect(updated).not.toBeNull(); + + // Read to verify + const retrieved = await store.getSecretValue(stored.id); + expect(retrieved).not.toBeNull(); + if (!retrieved) return; + expect(retrieved.value).toBe('updated'); + + // Delete immediately + const deleted = await store.deleteSecret(stored.id); + expect(deleted).toBe(true); + + // Verify deleted + const afterDelete = await store.getSecretValue(stored.id); + expect(afterDelete).toBeNull(); + }); + }); + + describe('Data Integrity', () => { + it('should maintain data integrity across multiple operations', async () => { + const store = getUniqueStore('data-integrity'); + const testData = { + name: 'Integrity Test', + secretType: 'api_key' as const, + value: 'sensitive-data-12345', + provider: 'test-provider', + metadata: { env: 'test', critical: true } + }; + + // Store + const stored = await store.storeSecret(testData); + expect(stored).not.toBeNull(); + if (!stored) return; + + // Retrieve and verify all fields + const retrieved = await store.getSecretValue(stored.id); + expect(retrieved).not.toBeNull(); + if (!retrieved) return; + + expect(retrieved.value).toBe(testData.value); + expect(retrieved.metadata.name).toBe(testData.name); + expect(retrieved.metadata.secretType).toBe(testData.secretType); + expect(retrieved.metadata.provider).toBe(testData.provider); + expect(retrieved.metadata.metadata).toEqual(testData.metadata); + }); + + it('should preserve exact byte sequences', async () => { + const store = getUniqueStore('byte-sequence'); + const binaryLikeValue = '\x00\x01\x02\x03\xFF\xFE\xFD'; + + const stored = await store.storeSecret({ + name: 'Binary Test', + secretType: 'custom', + value: binaryLikeValue + }); + expect(stored).not.toBeNull(); + if (!stored) return; + + const retrieved = await store.getSecretValue(stored.id); + expect(retrieved).not.toBeNull(); + if (!retrieved) return; + expect(retrieved.value).toBe(binaryLikeValue); + }); + + it('should track access count accurately', async () => { + const store = getUniqueStore('access-tracking'); + + const stored = await store.storeSecret({ + name: 'Access Track', + secretType: 'api_key', + value: 'test-value' + }); + expect(stored).not.toBeNull(); + if (!stored) return; + expect(stored.accessCount).toBe(0); + + // Access 5 times + for (let i = 0; i < 5; i++) { + await store.getSecretValue(stored.id); + } + + // Check final access count + const final = await store.getSecretValue(stored.id); + expect(final).not.toBeNull(); + if (!final) return; + expect(final.metadata.accessCount).toBe(6); // 5 + this one + }); + + it('should maintain separate encryption for each secret', async () => { + const store = getUniqueStore('separate-encryption'); + + const value1 = 'same-value'; + const value2 = 'same-value'; + + const secret1 = await store.storeSecret({ + name: 'Secret 1', + secretType: 'api_key', + value: value1 + }); + expect(secret1).not.toBeNull(); + if (!secret1) return; + + const secret2 = await store.storeSecret({ + name: 'Secret 2', + secretType: 'api_key', + value: value2 + }); + expect(secret2).not.toBeNull(); + if (!secret2) return; + + // Key previews will be the same (deterministic based on value) + expect(secret1.keyPreview).toBe(secret2.keyPreview); + + // But the secrets themselves are separate (different IDs) + expect(secret1.id).not.toBe(secret2.id); + + // And both can be decrypted correctly (proving separate encryption) + const retrieved1 = await store.getSecretValue(secret1.id); + const retrieved2 = await store.getSecretValue(secret2.id); + expect(retrieved1).not.toBeNull(); + expect(retrieved2).not.toBeNull(); + if (!retrieved1 || !retrieved2) return; + expect(retrieved1.value).toBe(value1); + expect(retrieved2.value).toBe(value2); + }); + }); + + describe('Edge Cases & Error Recovery', () => { + it('should handle operations after failed operations', async () => { + const store = getUniqueStore('error-recovery'); + + // Try to update non-existent secret (should return null) + const failedUpdate = await store.updateSecret('non-existent-id', { name: 'Test' }); + expect(failedUpdate).toBeNull(); + + // Store should still work after failed operation + const stored = await store.storeSecret({ + name: 'After Failed Op', + secretType: 'api_key', + value: 'test-value' + }); + expect(stored).not.toBeNull(); + }); + + it('should handle multiple failed operations gracefully', async () => { + const store = getUniqueStore('multiple-failures'); + + // Multiple failed operations + const failed1 = await store.getSecretValue('non-existent-1'); + expect(failed1).toBeNull(); + + const failed2 = await store.updateSecret('non-existent-2', { name: 'Test' }); + expect(failed2).toBeNull(); + + const failed3 = await store.deleteSecret('non-existent-3'); + expect(failed3).toBe(false); + + // Should still be able to list (empty) + const list = await store.listSecrets(); + expect(list.length).toBe(0); + + // Should still be able to store + const stored = await store.storeSecret({ + name: 'After Failures', + secretType: 'api_key', + value: 'test-value' + }); + expect(stored).not.toBeNull(); + }); + + it('should handle deleted secret accessed multiple times', async () => { + const store = getUniqueStore('multiple-access-deleted'); + + const stored = await store.storeSecret({ + name: 'To Delete', + secretType: 'api_key', + value: 'test-value' + }); + expect(stored).not.toBeNull(); + if (!stored) return; + + await store.deleteSecret(stored.id); + + // Try to access multiple times + const access1 = await store.getSecretValue(stored.id); + expect(access1).toBeNull(); + + const access2 = await store.getSecretValue(stored.id); + expect(access2).toBeNull(); + + // Try to update deleted secret + const update = await store.updateSecret(stored.id, { name: 'New Name' }); + expect(update).toBeNull(); + }); + }); +}); diff --git a/tsconfig.worker.json b/tsconfig.worker.json index 7ebceb48..2f2a57c7 100644 --- a/tsconfig.worker.json +++ b/tsconfig.worker.json @@ -6,5 +6,6 @@ "types": ["@cloudflare/workers-types", "./worker-configuration.d.ts", "vite/client", "jest"], "lib": ["ES2023"] }, - "include": ["./worker-configuration.d.ts", "./shared", "./worker", "./worker/types"] + "include": ["./worker-configuration.d.ts", "./shared", "./worker", "./worker/types"], + "exclude": ["**/__tests__/**/*", "**/*.test.ts"] } diff --git a/vitest.config.ts b/vitest.config.ts index 436e86f1..3acddc37 100644 --- a/vitest.config.ts +++ b/vitest.config.ts @@ -2,18 +2,35 @@ import { defineWorkersConfig } from '@cloudflare/vitest-pool-workers/config'; export default defineWorkersConfig({ test: { + globals: true, + pool: '@cloudflare/vitest-pool-workers', + deps: { + optimizer: { + ssr: { + enabled: true, + include: [ + 'ajv', + '@cloudflare/containers', + '@cloudflare/sandbox', + '@babel/traverse', + '@babel/types' + ], + }, + }, + }, poolOptions: { workers: { wrangler: { configPath: './wrangler.test.jsonc' }, miniflare: { compatibilityDate: '2024-12-12', compatibilityFlags: ['nodejs_compat'], + bindings: { + SECRETS_ENCRYPTION_KEY: '0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef', + }, }, }, }, - globals: true, - setupFiles: ['./test/setup.ts'], include: ['**/*.{test,spec}.{js,ts,jsx,tsx}'], - exclude: ['**/node_modules/**', '**/dist/**', '**/.git/**', '**/test/**', '**/worker/api/routes/**'], + exclude: ['**/node_modules/**', '**/dist/**', '**/.git/**', '**/worker/api/routes/**'], }, }); \ No newline at end of file diff --git a/worker-configuration.d.ts b/worker-configuration.d.ts index 2b1264c6..af82cfad 100644 --- a/worker-configuration.d.ts +++ b/worker-configuration.d.ts @@ -45,6 +45,7 @@ declare namespace Cloudflare { CodeGenObject: DurableObjectNamespace; Sandbox: DurableObjectNamespace; DORateLimitStore: DurableObjectNamespace; + UserSecretsStore: DurableObjectNamespace; TEMPLATES_BUCKET: R2Bucket; DB: D1Database; DISPATCHER: DispatchNamespace; diff --git a/worker/api/controllers/user-secrets/controller.ts b/worker/api/controllers/user-secrets/controller.ts new file mode 100644 index 00000000..63dbcc21 --- /dev/null +++ b/worker/api/controllers/user-secrets/controller.ts @@ -0,0 +1,232 @@ +/** + * User Secrets Controller - RPC wrapper for UserSecretsStore DO + */ + +import { BaseController } from '../baseController'; +import { ApiResponse, ControllerResponse } from '../types'; +import { RouteContext } from '../../types/route-context'; +import { createLogger } from '../../../logger'; +import type { SecretMetadata, StoreSecretRequest, UpdateSecretRequest } from '../../../services/secrets/types'; + +type UserSecretsListData = { secrets: SecretMetadata[] }; +type UserSecretStoreData = { secret: SecretMetadata; message: string }; +type UserSecretValueData = { value: string; metadata: SecretMetadata }; +type UserSecretUpdateData = { secret: SecretMetadata; message: string }; +type UserSecretDeleteData = { message: string }; + +export class UserSecretsController extends BaseController { + static logger = createLogger('UserSecretsController'); + + /** + * Get Durable Object stub for user + */ + private static getUserSecretsStub(env: Env, userId: string) { + const id = env.UserSecretsStore.idFromName(userId); + return env.UserSecretsStore.get(id); + } + + /** + * List all secrets (metadata only) + * GET /api/user-secrets + */ + static async listSecrets( + _request: Request, + env: Env, + _ctx: ExecutionContext, + context: RouteContext + ): Promise>> { + try { + const user = context.user!; + const stub = this.getUserSecretsStub(env, user.id); + + const secrets = await stub.listSecrets(); + + return UserSecretsController.createSuccessResponse({ secrets }); + } catch (error) { + this.logger.error('Error listing secrets:', error); + return UserSecretsController.createErrorResponse( + 'Failed to list secrets', + 500 + ); + } + } + + /** + * Store a new secret + * POST /api/user-secrets + */ + static async storeSecret( + request: Request, + env: Env, + _ctx: ExecutionContext, + context: RouteContext + ): Promise>> { + try { + const user = context.user!; + const stub = this.getUserSecretsStub(env, user.id); + + const bodyResult = await UserSecretsController.parseJsonBody(request); + + if (!bodyResult.success) { + return bodyResult.response! as ControllerResponse>; + } + + const secret = await stub.storeSecret(bodyResult.data!); + + if (!secret) { + return UserSecretsController.createErrorResponse( + 'Validation failed: Invalid secret data', + 400 + ); + } + + return UserSecretsController.createSuccessResponse({ + secret, + message: 'Secret stored successfully' + }); + } catch (error) { + this.logger.error('Error storing secret:', error); + return UserSecretsController.createErrorResponse( + error instanceof Error ? error.message : 'Failed to store secret', + 500 + ); + } + } + + /** + * Get decrypted secret value + * GET /api/user-secrets/:secretId/value + */ + static async getSecretValue( + _request: Request, + env: Env, + _ctx: ExecutionContext, + context: RouteContext + ): Promise>> { + try { + const user = context.user!; + const secretId = context.pathParams.secretId; + + if (!secretId) { + return UserSecretsController.createErrorResponse( + 'Secret ID is required', + 400 + ); + } + + const stub = this.getUserSecretsStub(env, user.id); + + const result = await stub.getSecretValue(secretId); + + if (!result) { + return UserSecretsController.createErrorResponse( + 'Secret not found or has expired', + 404 + ); + } + + return UserSecretsController.createSuccessResponse(result); + } catch (error) { + this.logger.error('Error getting secret value:', error); + return UserSecretsController.createErrorResponse( + 'Failed to get secret value', + 500 + ); + } + } + + /** + * Update secret + * PATCH /api/user-secrets/:secretId + */ + static async updateSecret( + request: Request, + env: Env, + _ctx: ExecutionContext, + context: RouteContext + ): Promise>> { + try { + const user = context.user!; + const secretId = context.pathParams.secretId; + + if (!secretId) { + return UserSecretsController.createErrorResponse( + 'Secret ID is required', + 400 + ); + } + + const bodyResult = await UserSecretsController.parseJsonBody(request); + + if (!bodyResult.success) { + return bodyResult.response! as ControllerResponse>; + } + + const stub = this.getUserSecretsStub(env, user.id); + + const secret = await stub.updateSecret(secretId, bodyResult.data!); + + if (!secret) { + return UserSecretsController.createErrorResponse( + 'Secret not found or validation failed', + 404 + ); + } + + return UserSecretsController.createSuccessResponse({ + secret, + message: 'Secret updated successfully' + }); + } catch (error) { + this.logger.error('Error updating secret:', error); + return UserSecretsController.createErrorResponse( + 'Failed to update secret', + 500 + ); + } + } + + /** + * Delete a secret (soft delete) + * DELETE /api/user-secrets/:secretId + */ + static async deleteSecret( + _request: Request, + env: Env, + _ctx: ExecutionContext, + context: RouteContext + ): Promise>> { + try { + const user = context.user!; + const secretId = context.pathParams.secretId; + + if (!secretId) { + return UserSecretsController.createErrorResponse( + 'Secret ID is required', + 400 + ); + } + + const stub = this.getUserSecretsStub(env, user.id); + + const deleted = await stub.deleteSecret(secretId); + + if (!deleted) { + return UserSecretsController.createErrorResponse( + 'Secret not found', + 404 + ); + } + + return UserSecretsController.createSuccessResponse({ + message: 'Secret deleted successfully' + }); + } catch (error) { + this.logger.error('Error deleting secret:', error); + return UserSecretsController.createErrorResponse( + 'Failed to delete secret', + 500 + ); + } + } +} diff --git a/worker/api/controllers/user-secrets/types.ts b/worker/api/controllers/user-secrets/types.ts new file mode 100644 index 00000000..734d39d0 --- /dev/null +++ b/worker/api/controllers/user-secrets/types.ts @@ -0,0 +1,26 @@ +/** + * User Secrets Controller Types + */ + +export interface UserSecretsListData { + secrets: unknown[]; +} + +export interface UserSecretStoreData { + secret: unknown; + message: string; +} + +export interface UserSecretValueData { + value: string; + metadata: unknown; +} + +export interface UserSecretUpdateData { + secret: unknown; + message: string; +} + +export interface UserSecretDeleteData { + message: string; +} \ No newline at end of file diff --git a/worker/api/routes/index.ts b/worker/api/routes/index.ts index bf4bf005..4401f6e0 100644 --- a/worker/api/routes/index.ts +++ b/worker/api/routes/index.ts @@ -3,7 +3,8 @@ import { setupAppRoutes } from './appRoutes'; import { setupUserRoutes } from './userRoutes'; import { setupStatsRoutes } from './statsRoutes'; import { setupAnalyticsRoutes } from './analyticsRoutes'; -import { setupSecretsRoutes } from './secretsRoutes'; +// import { setupSecretsRoutes } from './secretsRoutes'; +// import { setupUserSecretsRoutes } from './userSecretsRoutes'; import { setupModelConfigRoutes } from './modelConfigRoutes'; import { setupModelProviderRoutes } from './modelProviderRoutes'; import { setupGitHubExporterRoutes } from './githubExporterRoutes'; @@ -44,8 +45,11 @@ export function setupRoutes(app: Hono): void { // AI Gateway Analytics routes setupAnalyticsRoutes(app); - // Secrets management routes - setupSecretsRoutes(app); + // // Secrets management routes (legacy D1-based) + // setupSecretsRoutes(app); + + // // User secrets routes (new DO-backed) + // setupUserSecretsRoutes(app); // Model configuration and provider keys routes setupModelConfigRoutes(app); diff --git a/worker/api/routes/userSecretsRoutes.ts b/worker/api/routes/userSecretsRoutes.ts new file mode 100644 index 00000000..776bb509 --- /dev/null +++ b/worker/api/routes/userSecretsRoutes.ts @@ -0,0 +1,56 @@ +/** + * User Secrets Routes + * API routes for the new Durable Object-backed user secrets management + */ + +import { UserSecretsController } from '../controllers/user-secrets/controller'; +import { Hono } from 'hono'; +import { AppEnv } from '../../types/appenv'; +import { adaptController } from '../honoAdapter'; +import { AuthConfig, setAuthLevel } from '../../middleware/auth/routeAuth'; + +/** + * Setup user-secrets routes (new DO-backed system) + */ +export function setupUserSecretsRoutes(app: Hono): void { + // Create a sub-router for user-secrets routes + const userSecretsRouter = new Hono(); + + // List all secrets metadata + userSecretsRouter.get( + '/', + setAuthLevel(AuthConfig.authenticated), + adaptController(UserSecretsController, UserSecretsController.listSecrets) + ); + + // Store a new secret + userSecretsRouter.post( + '/', + setAuthLevel(AuthConfig.authenticated), + adaptController(UserSecretsController, UserSecretsController.storeSecret) + ); + + // Get decrypted secret value + userSecretsRouter.get( + '/:secretId/value', + setAuthLevel(AuthConfig.authenticated), + adaptController(UserSecretsController, UserSecretsController.getSecretValue) + ); + + // Update secret + userSecretsRouter.patch( + '/:secretId', + setAuthLevel(AuthConfig.authenticated), + adaptController(UserSecretsController, UserSecretsController.updateSecret) + ); + + // Delete secret + userSecretsRouter.delete( + '/:secretId', + setAuthLevel(AuthConfig.authenticated), + adaptController(UserSecretsController, UserSecretsController.deleteSecret) + ); + + // Mount the router under /api/user-secrets + app.route('/api/user-secrets', userSecretsRouter); +} diff --git a/worker/index.ts b/worker/index.ts index 449b5a05..68272a21 100644 --- a/worker/index.ts +++ b/worker/index.ts @@ -13,6 +13,7 @@ import { handleGitProtocolRequest, isGitProtocolRequest } from './api/handlers/g // Durable Object and Service exports export { UserAppSandboxService, DeployerService } from './services/sandbox/sandboxSdkClient'; +export { UserSecretsStore } from './services/secrets/UserSecretsStore'; // export const CodeGeneratorAgent = Sentry.instrumentDurableObjectWithSentry(sentryOptions, SmartCodeGeneratorAgent); // export const DORateLimitStore = Sentry.instrumentDurableObjectWithSentry(sentryOptions, BaseDORateLimitStore); diff --git a/worker/services/secrets/EncryptionService.ts b/worker/services/secrets/EncryptionService.ts new file mode 100644 index 00000000..f86bd16f --- /dev/null +++ b/worker/services/secrets/EncryptionService.ts @@ -0,0 +1,112 @@ +/** + * Encryption Service + * Implements XChaCha20-Poly1305 AEAD encryption for secrets + * + * Security features: + * - Authenticated encryption (integrity + confidentiality) + * - Unique key per secret (via random salt → DEK) + * - Random nonces (no reuse) + * - Constant-time operations + */ + +import { xchacha20poly1305 } from '@noble/ciphers/chacha'; +import { KeyDerivation } from './KeyDerivation'; +import { CRYPTO_CONSTANTS } from './constants'; +import type { EncryptedSecretData } from './types'; + +export class EncryptionService { + private userMasterKey: Uint8Array; + private keyDerivation: KeyDerivation; + + constructor(userMasterKey: Uint8Array, keyDerivation: KeyDerivation) { + if (!userMasterKey || userMasterKey.length !== CRYPTO_CONSTANTS.KEY_SIZE) { + throw new Error(`Invalid user master key: expected ${CRYPTO_CONSTANTS.KEY_SIZE} bytes`); + } + this.userMasterKey = userMasterKey; + this.keyDerivation = keyDerivation; + } + + /** + * Encrypt a secret value using XChaCha20-Poly1305 + * Returns encrypted data with nonce and salt for decryption + * + * Security Note: Memory Zeroing Limitation + * - DEK (Uint8Array) is properly zeroed after use + * - Plaintext string CANNOT be zeroed (JavaScript strings are immutable) + * - This is a fundamental JavaScript limitation - no equivalent to C's memset(0) + * - Plaintext remains in heap until garbage collection + * - Cloudflare Workers have short lifetimes, reducing exposure window + * - Key material (DEK, UMK) IS properly zeroed - most critical assets protected + * - WASM could solve this but adds significant complexity + */ + async encrypt(value: string): Promise { + // Generate random salt and derive DEK + const salt = crypto.getRandomValues(new Uint8Array(CRYPTO_CONSTANTS.SALT_SIZE)); + const dek = await this.keyDerivation.deriveDataEncryptionKey(this.userMasterKey, salt); + + // Encrypt with XChaCha20-Poly1305 + const nonce = crypto.getRandomValues(new Uint8Array(CRYPTO_CONSTANTS.NONCE_SIZE)); + const cipher = xchacha20poly1305(dek, nonce); + const plaintext = new TextEncoder().encode(value); + const ciphertext = cipher.encrypt(plaintext); + + const keyPreview = this.createKeyPreview(value); + + // Zero out DEK and plaintext bytes from memory (security best practice) + // Note: Original 'value' string cannot be zeroed (JS limitation documented above) + dek.fill(0); + plaintext.fill(0); + + return { + encryptedValue: ciphertext, + nonce, + salt, + keyPreview + }; + } + + /** + * Decrypt a secret value using XChaCha20-Poly1305 + * Verifies integrity via authentication tag + */ + async decrypt(encrypted: EncryptedSecretData): Promise { + try { + // Derive same DEK from stored salt + const dek = await this.keyDerivation.deriveDataEncryptionKey( + this.userMasterKey, + encrypted.salt + ); + + // Decrypt (throws if authentication tag doesn't match) + const cipher = xchacha20poly1305(dek, encrypted.nonce); + const plaintext = cipher.decrypt(encrypted.encryptedValue); + + // Decode to string before zeroing bytes + const result = new TextDecoder().decode(plaintext); + + // Zero out DEK and plaintext bytes from memory (security best practice) + dek.fill(0); + plaintext.fill(0); + + return result; + } catch (error) { + throw new Error('Failed to decrypt secret: invalid data or tampering detected'); + } + } + + /** + * Create a preview of the secret value for display + * Format: "abcd****efgh" for values > 8 chars + */ + private createKeyPreview(value: string): string { + if (value.length <= 8) { + return '*'.repeat(value.length); + } + + const start = value.slice(0, 4); + const end = value.slice(-4); + const middleLength = Math.max(0, value.length - 8); + + return `${start}${'*'.repeat(middleLength)}${end}`; + } +} diff --git a/worker/services/secrets/KeyDerivation.ts b/worker/services/secrets/KeyDerivation.ts new file mode 100644 index 00000000..487cc788 --- /dev/null +++ b/worker/services/secrets/KeyDerivation.ts @@ -0,0 +1,126 @@ +/** + * Key Derivation Service + * Implements hierarchical key derivation for user secrets + * + * Architecture: + * Master Key (from Secrets Store) + * → User Master Key (PBKDF2 with userId) + * → Data Encryption Key (PBKDF2 with random salt) + */ + +import { CRYPTO_CONSTANTS } from './constants'; + +export class KeyDerivation { + private masterKey: string; + + constructor(masterKey: string) { + if (!masterKey || masterKey.trim().length === 0) { + throw new Error('Master encryption key is required'); + } + + // Validate hex format and length (64 chars = 32 bytes = 256 bits) + if (!/^[0-9a-fA-F]+$/.test(masterKey)) { + throw new Error('Master key must be a valid hexadecimal string'); + } + + if (masterKey.length !== 64) { + throw new Error('Master key must be 64 hexadecimal characters (256 bits)'); + } + + this.masterKey = masterKey; + } + + /** + * Derive User Master Key from Master Encryption Key + * UMK = PBKDF2(MEK, salt=userId, 100k iterations) + * + * This creates a unique key per user while only storing one master key + * + * Security Note: Deterministic Salt Design + * - userId is used as salt for DETERMINISTIC derivation (same userId → same UMK) + * - This is REQUIRED for Durable Object architecture (DO must derive same key on each invocation) + * - Random salt would require persistent storage, defeating hierarchical key design + * - If MEK is compromised, attacker can decrypt everything regardless (MEK compromise = total failure) + * - Context prefix provides domain separation: vibesdk:user:{userId} + */ + async deriveUserMasterKey(userId: string): Promise { + if (!userId || userId.trim().length === 0) { + throw new Error('User ID is required for key derivation'); + } + + const encoder = new TextEncoder(); + + // Use userId as salt with context prefix for deterministic derivation + const salt = encoder.encode(`${CRYPTO_CONSTANTS.UMK_CONTEXT_PREFIX}${userId}`); + + // Import master key as key material + const keyMaterial = await crypto.subtle.importKey( + 'raw', + encoder.encode(this.masterKey), + 'PBKDF2', + false, + ['deriveBits'] + ); + + // Derive 256-bit key using PBKDF2 + const derivedBits = await crypto.subtle.deriveBits( + { + name: 'PBKDF2', + salt, + iterations: CRYPTO_CONSTANTS.UMK_ITERATIONS, + hash: 'SHA-256' + }, + keyMaterial, + CRYPTO_CONSTANTS.KEY_SIZE * 8 // 256 bits + ); + + return new Uint8Array(derivedBits); + } + + /** + * Derive Data Encryption Key from User Master Key + * DEK = PBKDF2(UMK, salt=random, 10k iterations) + * + * Each secret gets a unique DEK derived from random salt + * Lower iteration count is acceptable since UMK is already strong + */ + async deriveDataEncryptionKey( + userMasterKey: Uint8Array, + salt: Uint8Array + ): Promise { + // Import UMK as key material + const keyMaterial = await crypto.subtle.importKey( + 'raw', + userMasterKey, + 'PBKDF2', + false, + ['deriveBits'] + ); + + // Derive 256-bit key using PBKDF2 + const derivedBits = await crypto.subtle.deriveBits( + { + name: 'PBKDF2', + salt, + iterations: CRYPTO_CONSTANTS.DEK_ITERATIONS, + hash: 'SHA-256' + }, + keyMaterial, + CRYPTO_CONSTANTS.KEY_SIZE * 8 // 256 bits + ); + + return new Uint8Array(derivedBits); + } + + /** + * Generate cryptographic fingerprint of the master key + * Used for key rotation detection + */ + async getMasterKeyFingerprint(): Promise { + const encoder = new TextEncoder(); + const data = encoder.encode(this.masterKey); + const hashBuffer = await crypto.subtle.digest('SHA-256', data); + const hashArray = Array.from(new Uint8Array(hashBuffer)); + return hashArray.map(b => b.toString(16).padStart(2, '0')).join(''); + } +} diff --git a/worker/services/secrets/UserSecretsStore.ts b/worker/services/secrets/UserSecretsStore.ts new file mode 100644 index 00000000..6dfd9e12 --- /dev/null +++ b/worker/services/secrets/UserSecretsStore.ts @@ -0,0 +1,647 @@ +/** + * UserSecretsStore - Durable Object for secure user API key storage + * + * Architecture: + * - One DO per user (userId as DO ID) + * - Hierarchical key derivation: MEK → UMK → DEK + * - XChaCha20-Poly1305 AEAD encryption + * + * Key Rotation Locking: + * - Promise-based lock prevents concurrent modifications during rotation + * - All RPC methods call waitForRotation() first + * - rotationInProgress promise cleared in finally block + * - DO single-threading + promise await = complete mutual exclusion + */ + +import { DurableObject } from 'cloudflare:workers'; +import type { DurableObjectState } from '@cloudflare/workers-types'; +import { KeyDerivation } from './KeyDerivation'; +import { EncryptionService } from './EncryptionService'; +import { + type SecretMetadata, + type StoreSecretRequest, + type UpdateSecretRequest, + type EncryptedSecretData, + type SecretWithValue, + type KeyRotationInfo +} from './types'; +import { + STORAGE_LIMITS, + CLEANUP_INTERVALS +} from './constants'; +import type { SqlStorageValue } from '@cloudflare/workers-types'; + +export class NotFoundError extends Error { + constructor(message: string = 'Not found') { + super(message); + this.name = 'NotFoundError'; + } +} + +export class ExpiredSecretError extends Error { + constructor(message: string = 'Secret has expired') { + super(message); + this.name = 'ExpiredSecretError'; + } +} + +export class UserSecretsStore extends DurableObject { + private userId: string; + private keyDerivation!: KeyDerivation; + private encryption!: EncryptionService; + private rotationInProgress: Promise | null = null; + + constructor(ctx: DurableObjectState, env: Env) { + super(ctx, env); + + this.userId = ctx.id.name ?? ctx.id.toString(); + + // Use blockConcurrencyWhile for initialization + // Security Note: This guarantees no RPC methods execute until initialize() completes. + // Cloudflare Workers DO platform blocks ALL incoming requests during this call. + // No additional await checks needed in methods - this is the official pattern. + ctx.blockConcurrencyWhile(async () => { + await this.initialize(); + }); + } + + private async initialize(): Promise { + // 1. Initialize SQLite schema + await this.initializeSchema(); + + // 2. Initialize key derivation + if (!this.env.SECRETS_ENCRYPTION_KEY) { + throw new Error('SECRETS_ENCRYPTION_KEY environment variable not set'); + } + this.keyDerivation = new KeyDerivation(this.env.SECRETS_ENCRYPTION_KEY); + + // 3. Derive User Master Key + const userMasterKey = await this.keyDerivation.deriveUserMasterKey(this.userId); + + // 4. Initialize encryption service + this.encryption = new EncryptionService(userMasterKey, this.keyDerivation); + + // 5. Check for key rotation and initialize metadata + await this.initializeKeyRotationMetadata(); + + // 6. Detect and handle key rotation if needed + await this.detectAndHandleKeyRotation(); + + // 7. Set alarm for cleanup + const currentAlarm = await this.ctx.storage.getAlarm(); + if (currentAlarm === null) { + await this.ctx.storage.setAlarm(Date.now() + CLEANUP_INTERVALS.EXPIRED_SECRETS_CHECK); + } + } + + private async initializeSchema(): Promise { + // Secrets table + this.ctx.storage.sql.exec(` + CREATE TABLE IF NOT EXISTS secrets ( + id TEXT PRIMARY KEY, + name TEXT NOT NULL, + secret_type TEXT NOT NULL, + provider TEXT, + encrypted_value BLOB NOT NULL, + nonce BLOB NOT NULL, + salt BLOB NOT NULL, + key_preview TEXT NOT NULL, + metadata TEXT, + expires_at INTEGER, + created_at INTEGER NOT NULL, + updated_at INTEGER NOT NULL, + last_accessed INTEGER, + access_count INTEGER DEFAULT 0, + is_active INTEGER DEFAULT 1, + key_fingerprint TEXT NOT NULL + ) + `); + + // Key rotation metadata table + this.ctx.storage.sql.exec(` + CREATE TABLE IF NOT EXISTS key_rotation_metadata ( + id INTEGER PRIMARY KEY CHECK (id = 1), + current_key_fingerprint TEXT NOT NULL, + last_rotation_at INTEGER NOT NULL, + rotation_count INTEGER DEFAULT 0, + created_at INTEGER NOT NULL + ) + `); + + // Create indexes for performance + this.ctx.storage.sql.exec(` + CREATE INDEX IF NOT EXISTS idx_secrets_active + ON secrets(is_active, created_at DESC) + `); + + this.ctx.storage.sql.exec(` + CREATE INDEX IF NOT EXISTS idx_secrets_expires + ON secrets(expires_at) + WHERE expires_at IS NOT NULL AND is_active = 1 + `); + } + + async alarm(): Promise { + const now = Date.now(); + + // Delete expired secrets + await this.deleteExpiredSecrets(now); + + // Cleanup old soft-deleted secrets (90 days) + await this.cleanupSoftDeleted(now); + + // Schedule next alarm + await this.ctx.storage.setAlarm(Date.now() + CLEANUP_INTERVALS.EXPIRED_SECRETS_CHECK); + } + + // ========== PUBLIC RPC METHODS ========== + + isReady(): boolean { + return !!(this.encryption && this.keyDerivation); + } + + /** + * Wait for any in-progress key rotation to complete + * All RPC methods should call this first to ensure data consistency + */ + private async waitForRotation(): Promise { + if (this.rotationInProgress) { + await this.rotationInProgress; + } + } + + async listSecrets(): Promise { + await this.waitForRotation(); + + const result = this.ctx.storage.sql.exec(` + SELECT + id, name, secret_type, provider, key_preview, metadata, + expires_at, created_at, updated_at, last_accessed, + access_count, is_active + FROM secrets + WHERE is_active = 1 + ORDER BY created_at DESC + `); + + const rows = result.toArray(); + return rows.map(row => this.rowToMetadata(row as Record)); + } + + async storeSecret(request: StoreSecretRequest): Promise { + await this.waitForRotation(); + + // Validate request - returns null on validation failure + const validationError = this.validateSecretRequest(request); + if (validationError) { + return null; + } + + // Encrypt + const encrypted = await this.encryption.encrypt(request.value); + const secretId = crypto.randomUUID(); + const now = Date.now(); + const keyFingerprint = await this.keyDerivation.getMasterKeyFingerprint(); + + // Store + this.ctx.storage.sql.exec(` + INSERT INTO secrets ( + id, name, secret_type, provider, encrypted_value, nonce, salt, + key_preview, metadata, expires_at, created_at, updated_at, + access_count, is_active, key_fingerprint + ) VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?) + `, + secretId, + request.name, + request.secretType, + request.provider ?? null, + encrypted.encryptedValue, + encrypted.nonce, + encrypted.salt, + encrypted.keyPreview, + request.metadata ? JSON.stringify(request.metadata) : null, + request.expiresAt ?? null, + now, + now, + 0, + 1, + keyFingerprint + ); + + return { + id: secretId, + name: request.name, + secretType: request.secretType, + provider: request.provider, + keyPreview: encrypted.keyPreview, + metadata: request.metadata, + expiresAt: request.expiresAt, + createdAt: now, + updatedAt: now, + accessCount: 0, + isActive: true + }; + } + + async getSecretValue(secretId: string): Promise { + await this.waitForRotation(); + + const result = this.ctx.storage.sql.exec(` + SELECT * FROM secrets WHERE id = ? AND is_active = 1 + `, secretId); + + const rows = result.toArray(); + if (rows.length === 0) { + return null; + } + + const row = rows[0] as Record; + + // Check expiration BEFORE decryption + if (row.expires_at && Number(row.expires_at) < Date.now()) { + return null; + } + + // Get and decrypt data + const encrypted = await this.getEncryptedData(row); + const value = await this.encryption.decrypt(encrypted); + + // Update access tracking + const now = Date.now(); + this.ctx.storage.sql.exec(` + UPDATE secrets + SET last_accessed = ?, access_count = access_count + 1, updated_at = ? + WHERE id = ? + `, now, now, secretId); + + return { + value, + metadata: { + ...this.rowToMetadata(row), + accessCount: Number(row.access_count) + 1, + lastAccessed: now, + updatedAt: now + } + }; + } + + async updateSecret(secretId: string, request: UpdateSecretRequest): Promise { + await this.waitForRotation(); + + // Check exists + const result = this.ctx.storage.sql.exec(` + SELECT * FROM secrets WHERE id = ? AND is_active = 1 + `, secretId); + + const rows = result.toArray(); + if (rows.length === 0) { + return null; + } + + const updateFields: string[] = []; + const updateValues: unknown[] = []; + + if (request.name !== undefined) { + if (!request.name?.trim() || request.name.length > STORAGE_LIMITS.MAX_SECRET_NAME_LENGTH) { + return null; // Validation failed + } + updateFields.push('name = ?'); + updateValues.push(request.name); + } + + if (request.value !== undefined) { + if (!request.value || request.value.length > STORAGE_LIMITS.MAX_SECRET_VALUE_SIZE) { + return null; // Validation failed + } + const encrypted = await this.encryption.encrypt(request.value); + updateFields.push('encrypted_value = ?', 'nonce = ?', 'salt = ?', 'key_preview = ?'); + updateValues.push(encrypted.encryptedValue, encrypted.nonce, encrypted.salt, encrypted.keyPreview); + } + + if (request.metadata !== undefined) { + const metadataSize = JSON.stringify(request.metadata).length; + if (metadataSize > STORAGE_LIMITS.MAX_METADATA_SIZE) { + return null; // Validation failed + } + updateFields.push('metadata = ?'); + updateValues.push(JSON.stringify(request.metadata)); + } + + if (request.expiresAt !== undefined) { + updateFields.push('expires_at = ?'); + updateValues.push(request.expiresAt); + } + + if (updateFields.length === 0) { + throw new Error('No fields to update'); + } + + const now = Date.now(); + updateFields.push('updated_at = ?'); + updateValues.push(now); + updateValues.push(secretId); + + // Security Note: SQL Injection Safety + // This dynamic query construction is SAFE because: + // 1. Field names ("name = ?", "metadata = ?") are hardcoded string literals + // 2. User input goes into parameterized ? placeholders (updateValues array) + // 3. Array.join() only combines our hardcoded field assignments + // 4. This is the standard parameterized query pattern for dynamic updates + this.ctx.storage.sql.exec(` + UPDATE secrets SET ${updateFields.join(', ')} WHERE id = ? + `, ...updateValues); + + // Get updated secret + const updated = this.ctx.storage.sql.exec(` + SELECT * FROM secrets WHERE id = ? + `, secretId); + const updatedRow = updated.toArray()[0] as Record; + + return this.rowToMetadata(updatedRow); + } + + async deleteSecret(secretId: string): Promise { + await this.waitForRotation(); + + // Soft delete + const result = this.ctx.storage.sql.exec(` + UPDATE secrets SET is_active = 0, updated_at = ? + WHERE id = ? AND is_active = 1 + RETURNING id + `, Date.now(), secretId); + + const rows = result.toArray(); + return rows.length > 0; + } + + // ========== PRIVATE HELPERS ========== + + /** + * Convert SQLite row to SecretMetadata (DRY helper) + */ + private rowToMetadata(row: Record): SecretMetadata { + return { + id: String(row.id), + name: String(row.name), + secretType: String(row.secret_type) as StoreSecretRequest['secretType'], + provider: row.provider ? String(row.provider) : undefined, + keyPreview: String(row.key_preview), + metadata: row.metadata ? JSON.parse(String(row.metadata)) : undefined, + expiresAt: row.expires_at ? Number(row.expires_at) : undefined, + createdAt: Number(row.created_at), + updatedAt: Number(row.updated_at), + lastAccessed: row.last_accessed ? Number(row.last_accessed) : undefined, + accessCount: Number(row.access_count), + isActive: Boolean(row.is_active) + }; + } + + /** + * Validate secret request - returns error message or null if valid + */ + private validateSecretRequest(request: StoreSecretRequest): string | null { + if (!request.name?.trim()) { + return 'Secret name is required'; + } + + if (request.name.length > STORAGE_LIMITS.MAX_SECRET_NAME_LENGTH) { + return `Name exceeds ${STORAGE_LIMITS.MAX_SECRET_NAME_LENGTH} characters`; + } + + if (!request.value) { + return 'Secret value is required'; + } + + if (request.value.length > STORAGE_LIMITS.MAX_SECRET_VALUE_SIZE) { + return `Value exceeds ${STORAGE_LIMITS.MAX_SECRET_VALUE_SIZE} bytes`; + } + + if (request.metadata) { + const metadataSize = JSON.stringify(request.metadata).length; + if (metadataSize > STORAGE_LIMITS.MAX_METADATA_SIZE) { + return `Metadata exceeds ${STORAGE_LIMITS.MAX_METADATA_SIZE} bytes`; + } + } + + return null; // Valid + } + + /** + * Extract and validate encrypted data from row + */ + private async getEncryptedData(row: Record): Promise { + const { encrypted_value, nonce, salt, key_preview } = row; + + if (!encrypted_value || !nonce || !salt || !key_preview) { + throw new Error('Corrupted secret data: missing fields'); + } + + if (!(encrypted_value instanceof ArrayBuffer) || + !(nonce instanceof ArrayBuffer) || + !(salt instanceof ArrayBuffer)) { + throw new Error('Corrupted secret data: invalid types'); + } + + return { + encryptedValue: new Uint8Array(encrypted_value), + nonce: new Uint8Array(nonce), + salt: new Uint8Array(salt), + keyPreview: String(key_preview) + }; + } + + /** + * Delete expired secrets (called by alarm) + */ + private async deleteExpiredSecrets(now: number): Promise { + this.ctx.storage.transactionSync(() => { + // Soft delete all expired secrets atomically + this.ctx.storage.sql.exec(` + UPDATE secrets + SET is_active = 0, updated_at = ? + WHERE expires_at IS NOT NULL AND expires_at < ? AND is_active = 1 + `, now, now); + }); + } + + /** + * Hard delete soft-deleted secrets older than 90 days + */ + private async cleanupSoftDeleted(now: number): Promise { + const cutoff = now - (90 * 24 * 60 * 60 * 1000); + + this.ctx.storage.transactionSync(() => { + this.ctx.storage.sql.exec(` + DELETE FROM secrets + WHERE is_active = 0 AND updated_at < ? + `, cutoff); + }); + } + + /** + * Initialize key rotation metadata on first use + */ + private async initializeKeyRotationMetadata(): Promise { + const fingerprint = await this.keyDerivation.getMasterKeyFingerprint(); + const now = Date.now(); + + this.ctx.storage.sql.exec(` + INSERT OR IGNORE INTO key_rotation_metadata + (id, current_key_fingerprint, last_rotation_at, rotation_count, created_at) + VALUES (1, ?, ?, 0, ?) + `, fingerprint, now, now); + } + + /** + * Detect if master key has changed and handle rotation + */ + private async detectAndHandleKeyRotation(): Promise { + const currentFingerprint = await this.keyDerivation.getMasterKeyFingerprint(); + + const result = this.ctx.storage.sql.exec(` + SELECT current_key_fingerprint FROM key_rotation_metadata WHERE id = 1 + `); + + const rows = result.toArray(); + if (rows.length === 0) { + return; // Metadata not initialized yet + } + + const storedFingerprint = String((rows[0] as Record).current_key_fingerprint); + + if (currentFingerprint !== storedFingerprint) { + await this.performKeyRotation(currentFingerprint); + } + } + + /** + * Re-encrypt all active secrets with new master key + * + * Locking Strategy: + * - Sets rotationInProgress promise at start + * - All RPC methods await this promise via waitForRotation() + * - Ensures no operations can modify secrets during rotation + * - Promise cleared in finally block (even on errors) + * - DO single-threading + promise-based locking = complete protection + */ + private async performKeyRotation(newKeyFingerprint: string): Promise { + // Create and store the rotation promise for locking + const rotationPromise = (async (): Promise => { + try { + const result = this.ctx.storage.sql.exec(` + SELECT * FROM secrets WHERE is_active = 1 + `); + + const secrets = result.toArray(); + const now = Date.now(); + + // Phase 1: Pre-compute all encrypted values (async crypto operations) + const reencryptedSecrets: Array<{ + id: string; + encryptedValue: Uint8Array; + nonce: Uint8Array; + salt: Uint8Array; + }> = []; + + for (const row of secrets) { + const secretRow = row as Record; + + try { + const encrypted = await this.getEncryptedData(secretRow); + const plaintext = await this.encryption.decrypt(encrypted); + const reencrypted = await this.encryption.encrypt(plaintext); + + reencryptedSecrets.push({ + id: String(secretRow.id), + encryptedValue: reencrypted.encryptedValue, + nonce: reencrypted.nonce, + salt: reencrypted.salt + }); + } catch (error) { + console.error(`Failed to rotate secret ${String(secretRow.id)}:`, error); + } + } + + // Phase 2: Apply all SQL updates atomically in transaction + const rotatedCount = this.ctx.storage.transactionSync(() => { + let count = 0; + + for (const secret of reencryptedSecrets) { + this.ctx.storage.sql.exec(` + UPDATE secrets + SET encrypted_value = ?, nonce = ?, salt = ?, key_fingerprint = ?, updated_at = ? + WHERE id = ? + `, + secret.encryptedValue, + secret.nonce, + secret.salt, + newKeyFingerprint, + now, + secret.id + ); + count++; + } + + this.ctx.storage.sql.exec(` + UPDATE key_rotation_metadata + SET current_key_fingerprint = ?, + last_rotation_at = ?, + rotation_count = rotation_count + 1 + WHERE id = 1 + `, newKeyFingerprint, now); + + return count; + }); + + return rotatedCount; + } finally { + // Always clear the lock, even on errors + this.rotationInProgress = null; + } + })(); + + // Store the promise to block other operations + this.rotationInProgress = rotationPromise.then(() => {}); + + // Await and return the result + return await rotationPromise; + } + + /** + * Get key rotation statistics + */ + async getKeyRotationInfo(): Promise { + await this.waitForRotation(); + + const metadataResult = this.ctx.storage.sql.exec(` + SELECT * FROM key_rotation_metadata WHERE id = 1 + `); + + const metadataRows = metadataResult.toArray(); + if (metadataRows.length === 0) { + throw new Error('Key rotation metadata not initialized'); + } + + const metadata = metadataRows[0] as Record; + const currentFingerprint = await this.keyDerivation.getMasterKeyFingerprint(); + + // Count total active secrets + const totalResult = this.ctx.storage.sql.exec(` + SELECT COUNT(*) as count FROM secrets WHERE is_active = 1 + `); + const totalSecrets = Number((totalResult.toArray()[0] as Record).count); + + // Count secrets with current key fingerprint + const rotatedResult = this.ctx.storage.sql.exec(` + SELECT COUNT(*) as count FROM secrets WHERE is_active = 1 AND key_fingerprint = ? + `, currentFingerprint); + const secretsRotated = Number((rotatedResult.toArray()[0] as Record).count); + + return { + currentKeyFingerprint: String(metadata.current_key_fingerprint), + lastRotationAt: Number(metadata.last_rotation_at), + rotationCount: Number(metadata.rotation_count), + totalSecrets, + secretsRotated + }; + } +} diff --git a/worker/services/secrets/constants.ts b/worker/services/secrets/constants.ts new file mode 100644 index 00000000..f8860b0b --- /dev/null +++ b/worker/services/secrets/constants.ts @@ -0,0 +1,35 @@ +/** + * User Secrets Store - Constants + * Configuration and limits for the secrets system + */ + +/** + * Cryptographic constants + */ +export const CRYPTO_CONSTANTS = { + // Key derivation + UMK_ITERATIONS: 600000, // User Master Key derivation (PBKDF2-SHA256) + DEK_ITERATIONS: 100000, // Data Encryption Key derivation (PBKDF2-SHA256) + SALT_SIZE: 16, // bytes + NONCE_SIZE: 24, // bytes (XChaCha20) + KEY_SIZE: 32, // bytes (256 bits) + + // Key derivation context + UMK_CONTEXT_PREFIX: 'vibesdk:user:', +} as const; + +/** + * Storage limits + */ +export const STORAGE_LIMITS = { + MAX_SECRET_VALUE_SIZE: 1024 * 50, // 50 KB per secret + MAX_SECRET_NAME_LENGTH: 200, + MAX_METADATA_SIZE: 1024 * 10, // 10 KB metadata per secret +} as const; + +/** + * Cleanup intervals + */ +export const CLEANUP_INTERVALS = { + EXPIRED_SECRETS_CHECK: 60 * 60 * 1000, // 1 hour +} as const; diff --git a/worker/services/secrets/types.ts b/worker/services/secrets/types.ts new file mode 100644 index 00000000..4855d34a --- /dev/null +++ b/worker/services/secrets/types.ts @@ -0,0 +1,55 @@ +/** + * User Secrets Store - Type Definitions + * Type-safe interfaces for the DO-backed secrets system + */ + +export interface SecretMetadata { + id: string; + name: string; + secretType: string; + provider?: string; + keyPreview: string; + metadata?: Record; + expiresAt?: number; + createdAt: number; + updatedAt: number; + lastAccessed?: number; + accessCount: number; + isActive: boolean; +} + +export interface EncryptedSecretData { + encryptedValue: Uint8Array; + nonce: Uint8Array; // 24 bytes for XChaCha20 + salt: Uint8Array; // 16 bytes for key derivation + keyPreview: string; +} + +export interface StoreSecretRequest { + name: string; + secretType: 'api_key' | 'token' | 'password' | 'config' | 'custom'; + value: string; + provider?: string; + metadata?: Record; + expiresAt?: number; +} + +export interface UpdateSecretRequest { + name?: string; + value?: string; + metadata?: Record; + expiresAt?: number; +} + +export interface SecretWithValue { + value: string; + metadata: SecretMetadata; +} + +export interface KeyRotationInfo { + currentKeyFingerprint: string; + lastRotationAt: number; + rotationCount: number; + totalSecrets: number; + secretsRotated: number; +} diff --git a/worker/utils/cryptoUtils.ts b/worker/utils/cryptoUtils.ts index 6c95db6e..34c8e1c1 100644 --- a/worker/utils/cryptoUtils.ts +++ b/worker/utils/cryptoUtils.ts @@ -31,7 +31,10 @@ export async function sha256Hash(text: string): Promise { const encoder = new TextEncoder(); const data = encoder.encode(text); const hashBuffer = await crypto.subtle.digest('SHA-256', data); - return base64url(new Uint8Array(hashBuffer)); + const hashArray = new Uint8Array(hashBuffer); + return Array.from(hashArray) + .map(b => b.toString(16).padStart(2, '0')) + .join(''); } export async function timingSafeEqual(a: string, b: string): Promise { diff --git a/wrangler.jsonc b/wrangler.jsonc index 07d6fd73..7d585206 100644 --- a/wrangler.jsonc +++ b/wrangler.jsonc @@ -93,6 +93,10 @@ { "class_name": "DORateLimitStore", "name": "DORateLimitStore" + }, + { + "class_name": "UserSecretsStore", + "name": "UserSecretsStore" } ] }, @@ -126,6 +130,12 @@ "DORateLimitStore" ], "tag": "v2" + }, + { + "new_sqlite_classes": [ + "UserSecretsStore" + ], + "tag": "v3" } ], "routes": [ diff --git a/wrangler.test.jsonc b/wrangler.test.jsonc new file mode 100644 index 00000000..a65afca1 --- /dev/null +++ b/wrangler.test.jsonc @@ -0,0 +1,26 @@ +{ + "name": "vibesdk-test", + "compatibility_date": "2024-12-12", + "main": "worker/index.ts", + "compatibility_flags": ["nodejs_compat"], + "send_metrics": false, + "durable_objects": { + "bindings": [ + { + "class_name": "UserSecretsStore", + "name": "UserSecretsStore" + } + ] + }, + "migrations": [ + { + "new_sqlite_classes": [ + "UserSecretsStore" + ], + "tag": "v1" + } + ], + "vars": { + "SECRETS_ENCRYPTION_KEY": "0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef" + } +}